| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
 | 2 |  * SN Platform system controller communication support | 
 | 3 |  * | 
 | 4 |  * This file is subject to the terms and conditions of the GNU General Public | 
 | 5 |  * License.  See the file "COPYING" in the main directory of this archive | 
 | 6 |  * for more details. | 
 | 7 |  * | 
| Aaron Young | 28ff6b9b | 2006-01-23 09:00:51 -0800 | [diff] [blame] | 8 |  * Copyright (C) 2004-2006 Silicon Graphics, Inc. All rights reserved. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 9 |  */ | 
 | 10 |  | 
 | 11 | /* | 
 | 12 |  * This file contains macros and data types for communication with the | 
 | 13 |  * system controllers in SGI SN systems. | 
 | 14 |  */ | 
 | 15 |  | 
 | 16 | #ifndef _SN_SYSCTL_H_ | 
 | 17 | #define _SN_SYSCTL_H_ | 
 | 18 |  | 
 | 19 | #include <linux/types.h> | 
 | 20 | #include <linux/spinlock.h> | 
 | 21 | #include <linux/wait.h> | 
 | 22 | #include <linux/kobject.h> | 
 | 23 | #include <linux/fs.h> | 
 | 24 | #include <linux/cdev.h> | 
| Matthew Wilcox | 6188e10 | 2008-04-18 22:21:05 -0400 | [diff] [blame] | 25 | #include <linux/semaphore.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 26 | #include <asm/sn/types.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 27 |  | 
 | 28 | #define CHUNKSIZE 127 | 
 | 29 |  | 
 | 30 | /* This structure is used to track an open subchannel. */ | 
 | 31 | struct subch_data_s { | 
 | 32 | 	nasid_t sd_nasid;	/* node on which the subchannel was opened */ | 
 | 33 | 	int sd_subch;		/* subchannel number */ | 
 | 34 | 	spinlock_t sd_rlock;	/* monitor lock for rsv */ | 
 | 35 | 	spinlock_t sd_wlock;	/* monitor lock for wsv */ | 
 | 36 | 	wait_queue_head_t sd_rq;	/* wait queue for readers */ | 
 | 37 | 	wait_queue_head_t sd_wq;	/* wait queue for writers */ | 
 | 38 | 	struct semaphore sd_rbs;	/* semaphore for read buffer */ | 
 | 39 | 	struct semaphore sd_wbs;	/* semaphore for write buffer */ | 
 | 40 |  | 
 | 41 | 	char sd_rb[CHUNKSIZE];	/* read buffer */ | 
 | 42 | 	char sd_wb[CHUNKSIZE];	/* write buffer */ | 
 | 43 | }; | 
 | 44 |  | 
 | 45 | struct sysctl_data_s { | 
 | 46 | 	struct cdev scd_cdev;	/* Character device info */ | 
 | 47 | 	nasid_t scd_nasid;	/* Node on which subchannels are opened. */ | 
 | 48 | }; | 
 | 49 |  | 
| Greg Howard | 67639de | 2005-04-25 13:28:52 -0700 | [diff] [blame] | 50 |  | 
 | 51 | /* argument types */ | 
 | 52 | #define IR_ARG_INT              0x00    /* 4-byte integer (big-endian)  */ | 
 | 53 | #define IR_ARG_ASCII            0x01    /* null-terminated ASCII string */ | 
 | 54 | #define IR_ARG_UNKNOWN          0x80    /* unknown data type.  The low | 
 | 55 |                                          * 7 bits will contain the data | 
 | 56 |                                          * length.                      */ | 
 | 57 | #define IR_ARG_UNKNOWN_LENGTH_MASK	0x7f | 
 | 58 |  | 
 | 59 |  | 
 | 60 | /* system controller event codes */ | 
 | 61 | #define EV_CLASS_MASK		0xf000ul | 
 | 62 | #define EV_SEVERITY_MASK	0x0f00ul | 
 | 63 | #define EV_COMPONENT_MASK	0x00fful | 
 | 64 |  | 
 | 65 | #define EV_CLASS_POWER		0x1000ul | 
 | 66 | #define EV_CLASS_FAN		0x2000ul | 
 | 67 | #define EV_CLASS_TEMP		0x3000ul | 
 | 68 | #define EV_CLASS_ENV		0x4000ul | 
 | 69 | #define EV_CLASS_TEST_FAULT	0x5000ul | 
 | 70 | #define EV_CLASS_TEST_WARNING	0x6000ul | 
 | 71 | #define EV_CLASS_PWRD_NOTIFY	0x8000ul | 
 | 72 |  | 
| Aaron Young | 28ff6b9b | 2006-01-23 09:00:51 -0800 | [diff] [blame] | 73 | /* ENV class codes */ | 
 | 74 | #define ENV_PWRDN_PEND		0x4101ul | 
 | 75 |  | 
| Greg Howard | 67639de | 2005-04-25 13:28:52 -0700 | [diff] [blame] | 76 | #define EV_SEVERITY_POWER_STABLE	0x0000ul | 
 | 77 | #define EV_SEVERITY_POWER_LOW_WARNING	0x0100ul | 
 | 78 | #define EV_SEVERITY_POWER_HIGH_WARNING	0x0200ul | 
 | 79 | #define EV_SEVERITY_POWER_HIGH_FAULT	0x0300ul | 
 | 80 | #define EV_SEVERITY_POWER_LOW_FAULT	0x0400ul | 
 | 81 |  | 
 | 82 | #define EV_SEVERITY_FAN_STABLE		0x0000ul | 
 | 83 | #define EV_SEVERITY_FAN_WARNING		0x0100ul | 
 | 84 | #define EV_SEVERITY_FAN_FAULT		0x0200ul | 
 | 85 |  | 
 | 86 | #define EV_SEVERITY_TEMP_STABLE		0x0000ul | 
 | 87 | #define EV_SEVERITY_TEMP_ADVISORY	0x0100ul | 
 | 88 | #define EV_SEVERITY_TEMP_CRITICAL	0x0200ul | 
 | 89 | #define EV_SEVERITY_TEMP_FAULT		0x0300ul | 
 | 90 |  | 
 | 91 | void scdrv_event_init(struct sysctl_data_s *); | 
 | 92 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 93 | #endif /* _SN_SYSCTL_H_ */ |