envctrl_gen.h revision 1341:6d7c4f090a72
1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* 23 * Copyright 1998 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27#ifndef _SYS_ENVCTRL_GEN_H 28#define _SYS_ENVCTRL_GEN_H 29 30#pragma ident "%Z%%M% %I% %E% SMI" 31 32#ifdef __cplusplus 33extern "C" { 34#endif 35 36/* 37 * envctrl_gen.h 38 * 39 * This header file holds the environmental control definitions that 40 * are common to all workgroup server platforms. Typically, all IOCTLs, 41 * kstat structures, and the generic constants are defined here. 42 * The platform specific definitions belong in header files which contain 43 * the platform name as part of the file name eg. envctrl_ue250.h for the 44 * UltraEnterprise-250 platform. 45 */ 46 47#define ENVCTRL_NORMAL_MODE 0x01 48#define ENVCTRL_DIAG_MODE 0x02 49#define ENVCTRL_CHAR_ZERO 0x00 50#define ENVCTRL_PS_550 550 51#define ENVCTRL_PS_650 650 52#define ENVCTRL_INIT_TEMPR 20 53#define ENVCTRL_ULTRA1CPU_STRING "SUNW,UltraSPARC" 54#define ENVCTRL_ULTRA2CPU_STRING "SUNW,UltraSPARC-II" 55 56#define ENVCTRL_MAX_CPUS 8 57#define ENVCTRL_CPU0 0 58#define ENVCTRL_CPU1 1 59#define ENVCTRL_CPU2 2 60#define ENVCTRL_CPU3 3 61#define ENVCTRL_CPU4 4 62#define ENVCTRL_CPU5 5 63#define ENVCTRL_CPU6 6 64#define ENVCTRL_CPU7 7 65 66/* 67 * I2C Sensor Types 68 */ 69 70#define ENVCTRL_PCD8584 0x00 /* Bus Controller Master */ 71#define ENVCTRL_PCF8591 0x01 /* Temp Sensor 8bit A/D, D/A */ 72#define ENVCTRL_PCF8574 0x02 /* PS, FAN, LED, Fail and Control */ 73#define ENVCTRL_TDA8444T 0x03 /* Fan Speed Control, 8 bit D/A */ 74#define ENVCTRL_PCF8574A 0x04 /* 8574A chip */ 75#define ENVCTRL_PCF8583 0x05 /* PCF8583 clock chip */ 76#define ENVCTRL_LM75 0x06 /* LM75 chip */ 77 78/* 79 * I2C device address offsets 80 */ 81#define ENVCTRL_DEV0 0x0 82#define ENVCTRL_DEV1 0x2 83#define ENVCTRL_DEV2 0x4 84#define ENVCTRL_DEV3 0x6 85#define ENVCTRL_DEV4 0x8 86#define ENVCTRL_DEV5 0xA 87#define ENVCTRL_DEV6 0xC 88#define ENVCTRL_DEV7 0xE 89 90/* 91 * I2C ports 92 */ 93#define ENVCTRL_PORT0 0x00 94#define ENVCTRL_PORT1 0x01 95#define ENVCTRL_PORT2 0x02 96#define ENVCTRL_PORT3 0x03 97#define ENVCTRL_PORT4 0x04 98#define ENVCTRL_PORT5 0x05 99#define ENVCTRL_PORT6 0x06 100#define ENVCTRL_PORT7 0x07 101 102/* 103 * Max number of a particular 104 * device on one bus. 105 */ 106#define ENVCTRL_MAX_DEVS 0x10 107#define ENVCTRL_I2C_NODEV 0xFF 108#define ENVCTRL_INSTANCE_0 0x00 109 110/* Disk Fault bit fields */ 111#define ENVCTRL_DISK_0 0x01 112#define ENVCTRL_DISK_1 0x02 113#define ENVCTRL_DISK_2 0x04 114#define ENVCTRL_DISK_3 0x08 115#define ENVCTRL_DISK_4 0x10 116#define ENVCTRL_DISK_5 0x20 117#define ENVCTRL_DISK_6 0x40 118#define ENVCTRL_DISK_7 0x80 119 120#define ENVCTRL_4SLOT_BACKPLANE 0x0F 121#define ENVCTRL_8SLOT_BACKPLANE 0xFF 122 123#define ENVCTRL_DISK4LED_ALLOFF 0xF0 124#define ENVCTRL_DISK6LED_ALLOFF 0xFC 125#define ENVCTRL_DISK8LED_ALLOFF 0xFF 126 127#define ENVCTRL_MAXSTRLEN 256 128 129/* Kstat Structures and defines */ 130#define ENVCTRL_FAN_TYPE_CPU 0x00 131#define ENVCTRL_FAN_TYPE_PS 0x01 132#define ENVCTRL_FAN_TYPE_AFB 0x02 133#define ENVCTRL_FAN_TYPE_UE250 0x03 134 135#define ENVCTRL_MODULE_NAME "envctrl" 136#define ENVCTRL_KSTAT_NUMPS "envctrl_numps" 137#define ENVCTRL_KSTAT_PSNAME "envctrl_pwrsupply" 138#define ENVCTRL_KSTAT_PSNAME2 "envctrl_pwrsupply2" 139#define ENVCTRL_KSTAT_NUMFANS "envctrl_numfans" 140#define ENVCTRL_KSTAT_FANSTAT "envctrl_fanstat" 141#define ENVCTRL_KSTAT_NUMENCLS "envctrl_numencls" 142#define ENVCTRL_KSTAT_ENCL "envctrl_enclosure" 143#define ENVCTRL_KSTAT_TEMPERATURE "envctrl_temp" 144#define ENVCTRL_KSTAT_DISK "envctrl_disk" 145 146/* 147 * Kstat structure definitions (PSARC 1996/159) 148 */ 149typedef struct envctrl_ps { 150 int instance; /* instance of this type */ 151 ushort_t ps_tempr; /* temperature */ 152 int ps_rating; /* type in watts */ 153 boolean_t ps_ok; /* normal state or not. */ 154 boolean_t curr_share_ok; /* current share imbalance */ 155 boolean_t limit_ok; /* overlimit warning */ 156} envctrl_ps_t; 157 158typedef struct envctrl_fan { 159 int instance; /* instance of this type */ 160 int type; /* CPU, PS or AMBIENT fan */ 161 boolean_t fans_ok; /* are the fans okay */ 162 int fanflt_num; /* if not okay, which fan faulted */ 163 uint_t fanspeed; /* chip to set speed of fans */ 164} envctrl_fan_t; 165 166typedef struct envctrl_encl { 167 int instance; 168 int type; 169 uint_t value; 170} envctrl_encl_t; 171 172/* 173 * Kstat structure defintions (PSARC 1997/245) 174 */ 175typedef struct envctrl_chip { 176 int type; /* chip type */ 177 uchar_t chip_num; /* chip num */ 178 uchar_t index; /* chip index */ 179 uchar_t val; /* chip reading */ 180} envctrl_chip_t; 181 182typedef struct envctrl_ps2 { 183 ushort_t ps_tempr; /* temperature */ 184 int ps_rating; /* type in watts */ 185 boolean_t ps_ok; /* normal state or not */ 186 boolean_t curr_share_ok; /* current share imbalance */ 187 boolean_t limit_ok; /* overlimit warning */ 188 int type; /* power supply type */ 189 int slot; /* power supply slot occupied */ 190} envctrl_ps2_t; 191 192typedef struct envctrl_temp { 193 char label[ENVCTRL_MAXSTRLEN]; /* indicates temp. sensor location */ 194 int type; /* Temperature sensor type */ 195 uint_t value; /* temperature value */ 196 uint_t min; /* minimum tolerable temperature */ 197 uint_t warning_threshold; /* warning threshold */ 198 uint_t shutdown_threshold; /* shutdown threshold */ 199} envctrl_temp_t; 200 201typedef struct envctrl_disk { 202 int slot; /* slot number of disk */ 203 boolean_t disk_ok; /* disk fault LED off or on */ 204} envctrl_disk_t; 205 206#define ENVCTRL_PANEL_LEDS_PR "panel-leds-present" 207#define ENVCTRL_PANEL_LEDS_STA "panel-leds-state" 208#define ENVCTRL_DISK_LEDS_PR "disk-leds-present" 209#define ENVCTRL_DISK_LEDS_STA "disk-leds-state" 210#define ENVCTRL_LED_BLINK "activity-led-blink?" 211 212/* 213 * IOCTL defines (PSARC 1996/159) 214 */ 215#define ENVCTRL_IOC_RESETTMPR (int)(_IOW('p', 76, uchar_t)) 216#define ENVCTRL_IOC_SETMODE (int)(_IOW('p', 77, uchar_t)) 217#define ENVCTRL_IOC_SETTEMP (int)(_IOW('p', 79, uchar_t)) 218#define ENVCTRL_IOC_SETFAN (int)(_IOW('p', 80, struct envctrl_tda8444t_chip)) 219#define ENVCTRL_IOC_SETWDT (int)(_IOW('p', 81, uchar_t)) 220#define ENVCTRL_IOC_GETFAN (int)(_IOR('p', 81, struct envctrl_tda8444t_chip)) 221#define ENVCTRL_IOC_GETTEMP (int)(_IOR('p', 82, struct envctrl_pcf8591_chip)) 222#define ENVCTRL_IOC_GETFANFAIL (int)(_IOR('p', 83, struct envctrl_pcf8574_chip)) 223#define ENVCTRL_IOC_SETFSP (int)(_IOW('p', 84, uchar_t)) 224#define ENVCTRL_IOC_SETDSKLED (int)(_IOW('p', 85, struct envctrl_pcf8574_chip)) 225#define ENVCTRL_IOC_GETDSKLED (int)(_IOR('p', 86, struct envctrl_pcf8574_chip)) 226 227/* 228 * IOCTL defines (PSARC 1997/245) 229 */ 230#define ENVCTRL_IOC_GETMODE (int)(_IOR('p', 87, uchar_t)) 231#define ENVCTRL_IOC_SETTEMP2 (int)(_IOW('p', 88, struct envctrl_chip)) 232#define ENVCTRL_IOC_SETFAN2 (int)(_IOW('p', 89, struct envctrl_chip)) 233#define ENVCTRL_IOC_GETFAN2 (int)(_IOR('p', 90, struct envctrl_chip)) 234#define ENVCTRL_IOC_GETTEMP2 (int)(_IOR('p', 91, struct envctrl_chip)) 235#define ENVCTRL_IOC_SETFSP2 (int)(_IOW('p', 92, struct envctrl_chip)) 236#define ENVCTRL_IOC_GETFSP2 (int)(_IOR('p', 93, struct envctrl_chip)) 237#define ENVCTRL_IOC_SETDSKLED2 (int)(_IOW('p', 94, struct envctrl_chip)) 238#define ENVCTRL_IOC_GETDSKLED2 (int)(_IOR('p', 95, struct envctrl_chip)) 239#define ENVCTRL_IOC_SETRAW (int)(_IOW('p', 96, struct envctrl_chip)) 240#define ENVCTRL_IOC_GETRAW (int)(_IOR('p', 97, struct envctrl_chip)) 241 242#ifdef __cplusplus 243} 244#endif 245 246#endif /* _SYS_ENVCTRL_GEN_H */ 247