xref: /illumos-gate/usr/src/uts/sun4u/lw8/sys/sgenv_tag.h (revision 03831d35)
1*03831d35Sstevel /*
2*03831d35Sstevel  * CDDL HEADER START
3*03831d35Sstevel  *
4*03831d35Sstevel  * The contents of this file are subject to the terms of the
5*03831d35Sstevel  * Common Development and Distribution License (the "License").
6*03831d35Sstevel  * You may not use this file except in compliance with the License.
7*03831d35Sstevel  *
8*03831d35Sstevel  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*03831d35Sstevel  * or http://www.opensolaris.org/os/licensing.
10*03831d35Sstevel  * See the License for the specific language governing permissions
11*03831d35Sstevel  * and limitations under the License.
12*03831d35Sstevel  *
13*03831d35Sstevel  * When distributing Covered Code, include this CDDL HEADER in each
14*03831d35Sstevel  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*03831d35Sstevel  * If applicable, add the following below this CDDL HEADER, with the
16*03831d35Sstevel  * fields enclosed by brackets "[]" replaced with your own identifying
17*03831d35Sstevel  * information: Portions Copyright [yyyy] [name of copyright owner]
18*03831d35Sstevel  *
19*03831d35Sstevel  * CDDL HEADER END
20*03831d35Sstevel  */
21*03831d35Sstevel 
22*03831d35Sstevel /*
23*03831d35Sstevel  * Copyright 2001 Sun Microsystems, Inc.  All rights reserved.
24*03831d35Sstevel  * Use is subject to license terms.
25*03831d35Sstevel  */
26*03831d35Sstevel 
27*03831d35Sstevel #ifndef _SYS_SGENV_TAG_H
28*03831d35Sstevel #define	_SYS_SGENV_TAG_H
29*03831d35Sstevel 
30*03831d35Sstevel #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*03831d35Sstevel 
32*03831d35Sstevel #ifdef	__cplusplus
33*03831d35Sstevel extern "C" {
34*03831d35Sstevel #endif
35*03831d35Sstevel 
36*03831d35Sstevel #include <sys/types.h>
37*03831d35Sstevel 
38*03831d35Sstevel 
39*03831d35Sstevel /*
40*03831d35Sstevel  * We generate #define's for every possible HPU, however the SC only
41*03831d35Sstevel  * returns data for some of these HPUs. These are #defined in serengeti.h
42*03831d35Sstevel  * as they are common to both Serengeti and LightWeight8 platforms.
43*03831d35Sstevel  * However we keep track of the HPUs which return environmental data here
44*03831d35Sstevel  * as that info is SGENV specific.
45*03831d35Sstevel  *
46*03831d35Sstevel  * Below is a list of the HPU's which return environmental data.
47*03831d35Sstevel  *
48*03831d35Sstevel  *	SG_HPU_TYPE_CPU_BOARD
49*03831d35Sstevel  *
50*03831d35Sstevel  *	SG_HPU_TYPE_PCI_IO_BOARD
51*03831d35Sstevel  *	SG_HPU_TYPE_CPCI_IO_BOARD
52*03831d35Sstevel  *	SG_HPU_TYPE_CPCI_IO_BOARD_F3800
53*03831d35Sstevel  *
54*03831d35Sstevel  *	SG_HPU_TYPE_REPEATER_BOARD
55*03831d35Sstevel  *	SG_HPU_TYPE_LOGIC_ANALYZER_BOARD
56*03831d35Sstevel  *	SG_HPU_TYPE_REPEATER_BOARD_F3800
57*03831d35Sstevel  *
58*03831d35Sstevel  *	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD
59*03831d35Sstevel  *	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD_F3800
60*03831d35Sstevel  *
61*03831d35Sstevel  *	SG_HPU_TYPE_A123_POWER_SUPPLY
62*03831d35Sstevel  *	SG_HPU_TYPE_A138_POWER_SUPPLY
63*03831d35Sstevel  *	SG_HPU_TYPE_A145_POWER_SUPPLY
64*03831d35Sstevel  *	SG_HPU_TYPE_A152_POWER_SUPPLY
65*03831d35Sstevel  *	SG_HPU_TYPE_A153_POWER_SUPPLY
66*03831d35Sstevel  *
67*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F6800_IO
68*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F6800_CPU
69*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_RACK
70*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F4810
71*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F4800_IO
72*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F4800_CPU
73*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F4800_TOP_IO
74*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F3800
75*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F3800_ID
76*03831d35Sstevel  *	SG_HPU_TYPE_FAN_TRAY_F4800_BOTTOM_IO
77*03831d35Sstevel  *
78*03831d35Sstevel  * The following are obsolete and have been superseded by entries in the
79*03831d35Sstevel  * list above and should not be used. They are simply present to support
80*03831d35Sstevel  * existing clients and will be deleted at some stage in the future.
81*03831d35Sstevel  *
82*03831d35Sstevel  *	SG_HPU_TYPE_SP_CPCI_IO_BOARD
83*03831d35Sstevel  *	SG_HPU_TYPE_SP_SYSTEM_CONTROLLER_BOARD
84*03831d35Sstevel  *	SG_HPU_TYPE_L2_REPEATER_BOARD
85*03831d35Sstevel  *	SG_HPU_TYPE_RACK_FAN_TRAY
86*03831d35Sstevel  *	SG_HPU_TYPE_SP_FAN_TRAY
87*03831d35Sstevel  *	SG_HPU_TYPE_MD_TOP_IO_FAN_TRAY
88*03831d35Sstevel  *	SG_HPU_TYPE_MD_BOTTOM_IO_FAN_TRAY
89*03831d35Sstevel  *	SG_HPU_TYPE_R12_THREE_FAN_TRAY
90*03831d35Sstevel  *	SG_HPU_TYPE_K12_IO_ONE_FAN_TRAY
91*03831d35Sstevel  *	SG_HPU_TYPE_K12_CPU_THREE_FAN_TRAY
92*03831d35Sstevel  *	SG_HPU_TYPE_R24_IO_FOUR_FAN_TRAY
93*03831d35Sstevel  *	SG_HPU_TYPE_R24_CPU_SIX_FAN_TRAY
94*03831d35Sstevel  */
95*03831d35Sstevel 
96*03831d35Sstevel typedef union sensor_id {
97*03831d35Sstevel 	struct {
98*03831d35Sstevel 		uint32_t  \
99*03831d35Sstevel 			hpu_type	: 16,
100*03831d35Sstevel 			hpu_slot	: 8,
101*03831d35Sstevel 			sensor_part	: 8,
102*03831d35Sstevel 			sensor_partnum	: 8,
103*03831d35Sstevel 			sensor_type	: 8,
104*03831d35Sstevel 			sensor_typenum	: 8,
105*03831d35Sstevel 			node_id	: 4,
106*03831d35Sstevel 			_pad	: 4;
107*03831d35Sstevel 	} id;
108*03831d35Sstevel 	uint64_t tag_id;
109*03831d35Sstevel } sensor_id_t;
110*03831d35Sstevel 
111*03831d35Sstevel 
112*03831d35Sstevel /*
113*03831d35Sstevel  * Known sensor parts (sensor_part)
114*03831d35Sstevel  */
115*03831d35Sstevel 
116*03831d35Sstevel #define	SG_SENSOR_PART_SBBC	0x1
117*03831d35Sstevel #define	SG_SENSOR_PART_SBBC_STR	"SBBC"
118*03831d35Sstevel 
119*03831d35Sstevel #define	SG_SENSOR_PART_SDC	0x2
120*03831d35Sstevel #define	SG_SENSOR_PART_SDC_STR	"SDC"
121*03831d35Sstevel 
122*03831d35Sstevel #define	SG_SENSOR_PART_AR	0x3
123*03831d35Sstevel #define	SG_SENSOR_PART_AR_STR	"AR"
124*03831d35Sstevel 
125*03831d35Sstevel #define	SG_SENSOR_PART_CBH	0x4
126*03831d35Sstevel #define	SG_SENSOR_PART_CBH_STR	"CBH"
127*03831d35Sstevel 
128*03831d35Sstevel #define	SG_SENSOR_PART_DX	0x5
129*03831d35Sstevel #define	SG_SENSOR_PART_DX_STR	"DX"
130*03831d35Sstevel 
131*03831d35Sstevel #define	SG_SENSOR_PART_CHEETAH	0x6
132*03831d35Sstevel #define	SG_SENSOR_PART_CHEETAH_STR	"Cheetah"
133*03831d35Sstevel 
134*03831d35Sstevel #define	SG_SENSOR_PART_1_5_VDC	0x7
135*03831d35Sstevel #define	SG_SENSOR_PART_1_5_VDC_STR	"1.5 VDC"
136*03831d35Sstevel 
137*03831d35Sstevel #define	SG_SENSOR_PART_3_3_VDC	0x8
138*03831d35Sstevel #define	SG_SENSOR_PART_3_3_VDC_STR	"3.3 VDC"
139*03831d35Sstevel 
140*03831d35Sstevel #define	SG_SENSOR_PART_5_VDC	0x9
141*03831d35Sstevel #define	SG_SENSOR_PART_5_VDC_STR	"5 VDC"
142*03831d35Sstevel 
143*03831d35Sstevel #define	SG_SENSOR_PART_12_VDC	0xA
144*03831d35Sstevel #define	SG_SENSOR_PART_12_VDC_STR	"12 VDC"
145*03831d35Sstevel 
146*03831d35Sstevel #define	SG_SENSOR_PART_48_VDC	0xB
147*03831d35Sstevel #define	SG_SENSOR_PART_48_VDC_STR	"48 VDC"
148*03831d35Sstevel 
149*03831d35Sstevel #define	SG_SENSOR_PART_CURRENT	0xC
150*03831d35Sstevel #define	SG_SENSOR_PART_CURRENT_STR	"Current"
151*03831d35Sstevel 
152*03831d35Sstevel #define	SG_SENSOR_PART_BOARD	0xD
153*03831d35Sstevel #define	SG_SENSOR_PART_BOARD_STR	"Board"
154*03831d35Sstevel 
155*03831d35Sstevel #define	SG_SENSOR_PART_SCAPP	0xE
156*03831d35Sstevel #define	SG_SENSOR_PART_SCAPP_STR	"SC-APP"
157*03831d35Sstevel 
158*03831d35Sstevel #define	SG_SENSOR_PART_SCHIZO	0xF
159*03831d35Sstevel #define	SG_SENSOR_PART_SCHIZO_STR	"Schizo"
160*03831d35Sstevel 
161*03831d35Sstevel #define	SG_SENSOR_PART_FAN	0x10
162*03831d35Sstevel #define	SG_SENSOR_PART_FAN_STR	"Fan"
163*03831d35Sstevel 
164*03831d35Sstevel #define	SG_SENSOR_PART_INPUT	0x11
165*03831d35Sstevel #define	SG_SENSOR_PART_INPUT_STR	"Input"
166*03831d35Sstevel 
167*03831d35Sstevel /*
168*03831d35Sstevel  * Known sensor types (sensor_type)
169*03831d35Sstevel  * Scaling factors (when applicable)
170*03831d35Sstevel  * N.b. Warning zone ranges are scaled, and
171*03831d35Sstevel  *      the ..._RANGE definitions below are superceded
172*03831d35Sstevel  *      by the scaled <sd_lo_warn> and <sd_hi_warn>
173*03831d35Sstevel  *      fields in env_sensor_t.
174*03831d35Sstevel  */
175*03831d35Sstevel 
176*03831d35Sstevel #define	SG_SENSOR_TYPE_CURRENT	0x2	/* Current */
177*03831d35Sstevel #define	SG_SENSOR_TYPE_CURRENT_STR	"Current"
178*03831d35Sstevel #define	SG_SENSOR_TYPE_CURRENT_UNITS	"Amps"
179*03831d35Sstevel #define	SG_CURRENT_SCALE		100
180*03831d35Sstevel 
181*03831d35Sstevel #define	SG_SENSOR_TYPE_TEMPERATURE	0x3	/* Temp. */
182*03831d35Sstevel #define	SG_SENSOR_TYPE_TEMPERATURE_STR	"Temp."
183*03831d35Sstevel #define	SG_SENSOR_TYPE_TEMPERATURE_UNITS	"Degrees C"
184*03831d35Sstevel #define	SG_TEMPERATURE_SCALE		100
185*03831d35Sstevel #define	SG_TEMPERATURE_RANGE		1000
186*03831d35Sstevel 
187*03831d35Sstevel #define	SG_SENSOR_TYPE_COOLING	0x4	/* Cooling */
188*03831d35Sstevel #define	SG_SENSOR_TYPE_COOLING_STR	"Cooling"
189*03831d35Sstevel #define	SG_SENSOR_TYPE_COOLING_UNITS	""
190*03831d35Sstevel 
191*03831d35Sstevel #define	SG_SENSOR_TYPE_1_5_VDC	0x5	/* 1.5 VDC */
192*03831d35Sstevel #define	SG_SENSOR_TYPE_1_5_VDC_STR	"1.5 VDC"
193*03831d35Sstevel #define	SG_SENSOR_TYPE_1_5_VDC_UNITS	"Volts DC"
194*03831d35Sstevel #define	SG_1_5_VDC_SCALE		100
195*03831d35Sstevel #define	SG_1_5_VDC_RANGE		0
196*03831d35Sstevel 
197*03831d35Sstevel #define	SG_SENSOR_TYPE_1_8_VDC	0x6	/* 1.8 VDC */
198*03831d35Sstevel #define	SG_SENSOR_TYPE_1_8_VDC_STR	"1.8 VDC"
199*03831d35Sstevel #define	SG_SENSOR_TYPE_1_8_VDC_UNITS	"Volts DC"
200*03831d35Sstevel #define	SG_1_8_VDC_SCALE		100
201*03831d35Sstevel #define	SG_1_8_VDC_RANGE		0
202*03831d35Sstevel 
203*03831d35Sstevel #define	SG_SENSOR_TYPE_3_3_VDC	0x7	/* 3.3 VDC */
204*03831d35Sstevel #define	SG_SENSOR_TYPE_3_3_VDC_STR	"3.3 VDC"
205*03831d35Sstevel #define	SG_SENSOR_TYPE_3_3_VDC_UNITS	"Volts DC"
206*03831d35Sstevel #define	SG_3_3_VDC_SCALE		100
207*03831d35Sstevel #define	SG_3_3_VDC_RANGE		0
208*03831d35Sstevel 
209*03831d35Sstevel #define	SG_SENSOR_TYPE_5_VDC	0x8	/* 5 VDC */
210*03831d35Sstevel #define	SG_SENSOR_TYPE_5_VDC_STR	"5 VDC"
211*03831d35Sstevel #define	SG_SENSOR_TYPE_5_VDC_UNITS	"Volts DC"
212*03831d35Sstevel #define	SG_5_VDC_SCALE		100
213*03831d35Sstevel #define	SG_5_VDC_RANGE		0
214*03831d35Sstevel 
215*03831d35Sstevel #define	SG_SENSOR_TYPE_12_VDC	0x9	/* 12 VDC */
216*03831d35Sstevel #define	SG_SENSOR_TYPE_12_VDC_STR	"12 VDC"
217*03831d35Sstevel #define	SG_SENSOR_TYPE_12_VDC_UNITS	"Volts DC"
218*03831d35Sstevel #define	SG_12_VDC_SCALE		100
219*03831d35Sstevel #define	SG_12_VDC_RANGE		0
220*03831d35Sstevel 
221*03831d35Sstevel #define	SG_SENSOR_TYPE_48_VDC	0xA	/* 48 VDC */
222*03831d35Sstevel #define	SG_SENSOR_TYPE_48_VDC_STR	"48 VDC"
223*03831d35Sstevel #define	SG_SENSOR_TYPE_48_VDC_UNITS	"Volts DC"
224*03831d35Sstevel #define	SG_48_VDC_SCALE		100
225*03831d35Sstevel #define	SG_48_VDC_RANGE		0
226*03831d35Sstevel 
227*03831d35Sstevel #define	SG_SENSOR_TYPE_ENVDB	0xB	/* Env. */
228*03831d35Sstevel #define	SG_SENSOR_TYPE_ENVDB_STR	"Env."
229*03831d35Sstevel #define	SG_SENSOR_TYPE_ENVDB_UNITS	"Gen."
230*03831d35Sstevel 
231*03831d35Sstevel #define	SG_SENSOR_TYPE_2_5_VDC	0xC	/* 2.5 VDC */
232*03831d35Sstevel #define	SG_SENSOR_TYPE_2_5_VDC_STR	"2.5 VDC"
233*03831d35Sstevel #define	SG_SENSOR_TYPE_2_5_VDC_UNITS	"Volts DC"
234*03831d35Sstevel #define	SG_2_5_VDC_SCALE		100
235*03831d35Sstevel #define	SG_2_5_VDC_RANGE		0
236*03831d35Sstevel 
237*03831d35Sstevel /*
238*03831d35Sstevel  * If we have to change the names of any of the #defines in the future,
239*03831d35Sstevel  * then we simply will define the old name to point to the new name.
240*03831d35Sstevel  * That way the clients do not know about the change and do not need
241*03831d35Sstevel  * to change their code.
242*03831d35Sstevel  */
243*03831d35Sstevel #define	SG_HPU_TYPE_UNKNOWN		(0x0)
244*03831d35Sstevel #define	SG_HPU_TYPE_UNKNOWN_STR		"Unknown"
245*03831d35Sstevel #define	SG_HPU_TYPE_UNKNOWN_ID		"UNK"
246*03831d35Sstevel 
247*03831d35Sstevel /* generic power supply FRUID string */
248*03831d35Sstevel #define	SG_HPU_TYPE_POWER_SUPPLY_ID	"PS"
249*03831d35Sstevel 
250*03831d35Sstevel 
251*03831d35Sstevel /*
252*03831d35Sstevel  * The following are obsolete and have been superseded by entries in the
253*03831d35Sstevel  * list above and should not be used. They are simply present to support
254*03831d35Sstevel  * existing clients.
255*03831d35Sstevel  */
256*03831d35Sstevel #define	SG_HPU_TYPE_SP_SYSTEM_CONTROLLER_BOARD	((1<<8)|2)	/* 0x102 */
257*03831d35Sstevel #define	SG_HPU_TYPE_SP_SYSTEM_CONTROLLER_BOARD_STR  \
258*03831d35Sstevel 			"SP System Controller Board"
259*03831d35Sstevel #define	SG_HPU_TYPE_SP_SYSTEM_CONTROLLER_BOARD_ID	"SSC"
260*03831d35Sstevel #define	SG_HPU_TYPE_SP_SYSTEM_CONTROLLER_BOARD_SHORTNAME	"SSC"
261*03831d35Sstevel 
262*03831d35Sstevel #define	SG_HPU_TYPE_L2_REPEATER_BOARD			(0x301)
263*03831d35Sstevel #define	SG_HPU_TYPE_L2_REPEATER_BOARD_STR		"L2 Repeater Board"
264*03831d35Sstevel #define	SG_HPU_TYPE_L2_REPEATER_BOARD_ID		"RP"
265*03831d35Sstevel #define	SG_HPU_TYPE_L2_REPEATER_BOARD_SHORTNAME		"RP"
266*03831d35Sstevel 
267*03831d35Sstevel #define	SG_HPU_TYPE_SP_L2_REPEATER_BOARD	((3<<8)|3)	/* 0x303 */
268*03831d35Sstevel #define	SG_HPU_TYPE_SP_L2_REPEATER_BOARD_STR  \
269*03831d35Sstevel 			"SP L2 Repeater Board"
270*03831d35Sstevel #define	SG_HPU_TYPE_SP_L2_REPEATER_BOARD_ID	"RP"
271*03831d35Sstevel #define	SG_HPU_TYPE_SP_L2_REPEATER_BOARD_SHORTNAME	"RP"
272