2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
6 * Copyright (C) 2000-2003 Silicon Graphics, Inc. All rights reserved.
8 #include <linux/config.h>
9 #include <asm/uaccess.h>
12 #include <linux/proc_fs.h>
13 #include <asm/sn/sgi.h>
14 #include <asm/sn/sn_sal.h>
17 static int partition_id_read_proc(char *page, char **start, off_t off,
18 int count, int *eof, void *data) {
20 return sprintf(page, "%d\n", sn_local_partid());
23 static struct proc_dir_entry * sgi_proc_dir;
26 register_sn_partition_id(void) {
27 struct proc_dir_entry *entry;
30 sgi_proc_dir = proc_mkdir("sgi_sn", 0);
32 entry = create_proc_entry("partition_id", 0444, sgi_proc_dir);
36 entry->read_proc = partition_id_read_proc;
37 entry->write_proc = NULL;
42 system_serial_number_read_proc(char *page, char **start, off_t off,
43 int count, int *eof, void *data) {
44 return sprintf(page, "%s\n", sn_system_serial_number());
48 licenseID_read_proc(char *page, char **start, off_t off,
49 int count, int *eof, void *data) {
50 return sprintf(page, "0x%lx\n",sn_partition_serial_number_val());
54 register_sn_serial_numbers(void) {
55 struct proc_dir_entry *entry;
58 sgi_proc_dir = proc_mkdir("sgi_sn", 0);
60 entry = create_proc_entry("system_serial_number", 0444, sgi_proc_dir);
64 entry->read_proc = system_serial_number_read_proc;
65 entry->write_proc = NULL;
67 entry = create_proc_entry("licenseID", 0444, sgi_proc_dir);
71 entry->read_proc = licenseID_read_proc;
72 entry->write_proc = NULL;
77 * Enable forced interrupt by default.
78 * When set, the sn interrupt handler writes the force interrupt register on
79 * the bridge chip. The hardware will then send an interrupt message if the
80 * interrupt line is active. This mimics a level sensitive interrupt.
82 int sn_force_interrupt_flag = 1;
85 sn_force_interrupt_read_proc(char *page, char **start, off_t off,
86 int count, int *eof, void *data) {
87 if (sn_force_interrupt_flag) {
88 return sprintf(page, "Force interrupt is enabled\n");
90 return sprintf(page, "Force interrupt is disabled\n");
94 sn_force_interrupt_write_proc(struct file *file, const char *buffer,
95 unsigned long count, void *data)
98 sn_force_interrupt_flag = 0;
100 sn_force_interrupt_flag = 1;
106 register_sn_force_interrupt(void) {
107 struct proc_dir_entry *entry;
110 sgi_proc_dir = proc_mkdir("sgi_sn", 0);
112 entry = create_proc_entry("sn_force_interrupt",0444, sgi_proc_dir);
116 entry->read_proc = sn_force_interrupt_read_proc;
117 entry->write_proc = sn_force_interrupt_write_proc;
122 register_sn_procfs(void) {
123 register_sn_partition_id();
124 register_sn_serial_numbers();
125 register_sn_force_interrupt();
128 #endif /* CONFIG_PROC_FS */