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 2009 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #ifndef _SYS_SGFRUTYPES_H
28 #define	_SYS_SGFRUTYPES_H
29 
30 #ifdef	__cplusplus
31 extern "C" {
32 #endif
33 
34 /*
35  * sgfrutypes.h - Serengeti/WildCat/Lightweight8 common FRU definitions
36  *
37  * This header file contains the common FRU-ID definitions and macros for the
38  * Serengeti, WildCat and Lightweight8 platforms.
39  *
40  *	- definitions of the various FRU types.
41  *	- macros to generate FRU names.
42  *
43  * (Not to be confused with the header files for the SGFRU driver)
44  */
45 
46 /*
47  * Known HPU/FRU types
48  *
49  * These FRU definitions are common to both the Serengeti and LightWeight8
50  * platforms. They are used by various macros used by both platforms as well
51  * as the LW8 specific SGENV (environmentals) driver.
52  */
53 #define	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD			(0x101)
54 #define	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD_STR  \
55 			"System Controller Board"
56 #define	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD_ID			"SSC"
57 #define	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD_SHORTNAME		"SSC"
58 
59 #define	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD_F3800		(0x102)
60 #define	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD_F3800_STR  \
61 			"System Controller Board (F3800)"
62 #define	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD_F3800_ID		"SSC"
63 #define	SG_HPU_TYPE_SYSTEM_CONTROLLER_BOARD_F3800_SHORTNAME	"SSC"
64 
65 
66 #define	SG_HPU_TYPE_CPU_BOARD			(0x201)
67 #define	SG_HPU_TYPE_CPU_BOARD_STR		"CPU Board"
68 #define	SG_HPU_TYPE_CPU_BOARD_ID		"SB"
69 #define	SG_HPU_TYPE_CPU_BOARD_SHORTNAME		"CPU"
70 
71 #define	SG_HPU_TYPE_WIB_BOARD			(0x202)
72 #define	SG_HPU_TYPE_WIB_BOARD_STR		"WIB Board"
73 #define	SG_HPU_TYPE_WIB_BOARD_ID		"SB"
74 #define	SG_HPU_TYPE_WIB_BOARD_SHORTNAME		"WIB"
75 
76 #define	SG_HPU_TYPE_ZULU_BOARD			(0x203)
77 #define	SG_HPU_TYPE_ZULU_BOARD_STR		"Zulu Board"
78 #define	SG_HPU_TYPE_ZULU_BOARD_ID		"SB"
79 #define	SG_HPU_TYPE_ZULU_BOARD_SHORTNAME	"GPX"
80 
81 
82 #define	SG_HPU_TYPE_REPEATER_BOARD			(0x301)
83 #define	SG_HPU_TYPE_REPEATER_BOARD_STR			"Repeater Board"
84 #define	SG_HPU_TYPE_REPEATER_BOARD_ID			"RP"
85 
86 #define	SG_HPU_TYPE_LOGIC_ANALYZER_BOARD		(0x302)
87 #define	SG_HPU_TYPE_LOGIC_ANALYZER_BOARD_STR		"Logic Analyzer Board"
88 #define	SG_HPU_TYPE_LOGIC_ANALYZER_BOARD_ID		"RP"
89 
90 #define	SG_HPU_TYPE_REPEATER_BOARD_F3800		(0x303)
91 #define	SG_HPU_TYPE_REPEATER_BOARD_F3800_STR		"Repeater Board (F3800)"
92 #define	SG_HPU_TYPE_REPEATER_BOARD_F3800_ID		"RP"
93 #define	SG_HPU_TYPE_REPEATER_BOARD_F3800_SHORTNAME	"RP"
94 
95 
96 #define	SG_HPU_TYPE_FAN_TRAY_F6800_IO			(0x401)
97 #define	SG_HPU_TYPE_FAN_TRAY_F6800_IO_STR		"Fan Tray (F6800, I/O)"
98 #define	SG_HPU_TYPE_FAN_TRAY_F6800_IO_ID		"FT"
99 #define	SG_HPU_TYPE_FAN_TRAY_F6800_IO_SHORTNAME		"FAN"
100 
101 #define	SG_HPU_TYPE_FAN_TRAY_F6800_CPU			(0x402)
102 #define	SG_HPU_TYPE_FAN_TRAY_F6800_CPU_STR		"Fan Tray (F6800, CPU)"
103 #define	SG_HPU_TYPE_FAN_TRAY_F6800_CPU_ID		"FT"
104 #define	SG_HPU_TYPE_FAN_TRAY_F6800_CPU_SHORTNAME	"FAN"
105 
106 #define	SG_HPU_TYPE_FAN_TRAY_RACK			(0x403)
107 #define	SG_HPU_TYPE_FAN_TRAY_RACK_STR			"Fan Tray (Rack)"
108 #define	SG_HPU_TYPE_FAN_TRAY_RACK_ID			"FT"
109 #define	SG_HPU_TYPE_FAN_TRAY_RACK_SHORTNAME		"RACKFAN"
110 
111 #define	SG_HPU_TYPE_FAN_TRAY_F4810			(0x404)
112 #define	SG_HPU_TYPE_FAN_TRAY_F4810_STR			"Fan Tray (F4810)"
113 #define	SG_HPU_TYPE_FAN_TRAY_F4810_ID			"FT"
114 #define	SG_HPU_TYPE_FAN_TRAY_F4810_SHORTNAME		"FAN"
115 
116 #define	SG_HPU_TYPE_FAN_TRAY_F4800_IO			(0x405)
117 #define	SG_HPU_TYPE_FAN_TRAY_F4800_IO_STR		"Fan Tray (F4800, I/O)"
118 #define	SG_HPU_TYPE_FAN_TRAY_F4800_IO_ID		"FT"
119 #define	SG_HPU_TYPE_FAN_TRAY_F4800_IO_SHORTNAME		"FAN"
120 
121 #define	SG_HPU_TYPE_FAN_TRAY_F4800_CPU			(0x406)
122 #define	SG_HPU_TYPE_FAN_TRAY_F4800_CPU_STR		"Fan Tray (F4800, CPU)"
123 #define	SG_HPU_TYPE_FAN_TRAY_F4800_CPU_ID		"FT"
124 #define	SG_HPU_TYPE_FAN_TRAY_F4800_CPU_SHORTNAME	"FAN"
125 
126 #define	SG_HPU_TYPE_FAN_TRAY_F4800_TOP_IO		(0x407)
127 #define	SG_HPU_TYPE_FAN_TRAY_F4800_TOP_IO_STR  \
128 			"Fan Tray (F4800, Top I/O)"
129 #define	SG_HPU_TYPE_FAN_TRAY_F4800_TOP_IO_ID		"FT"
130 #define	SG_HPU_TYPE_FAN_TRAY_F4800_TOP_IO_SHORTNAME	"FAN"
131 
132 #define	SG_HPU_TYPE_FAN_TRAY_F3800			(0x408)
133 #define	SG_HPU_TYPE_FAN_TRAY_F3800_STR			"Fan Tray (F3800)"
134 #define	SG_HPU_TYPE_FAN_TRAY_F3800_ID			"FT"
135 #define	SG_HPU_TYPE_FAN_TRAY_F3800_SHORTNAME		"FAN"
136 
137 #define	SG_HPU_TYPE_FAN_TRAY_F4800_BOTTOM_IO		(0x409)
138 #define	SG_HPU_TYPE_FAN_TRAY_F4800_BOTTOM_IO_STR \
139 			"Fan Tray (F4800, Bottom I/O)"
140 #define	SG_HPU_TYPE_FAN_TRAY_F4800_BOTTOM_IO_ID		"FT"
141 #define	SG_HPU_TYPE_FAN_TRAY_F4800_BOTTOM_IO_SHORTNAME	"FAN"
142 
143 
144 #define	SG_HPU_TYPE_PCI_IO_BOARD		(0x501)
145 #define	SG_HPU_TYPE_PCI_IO_BOARD_STR		"PCI I/O Board"
146 #define	SG_HPU_TYPE_PCI_IO_BOARD_ID		"IB"
147 #define	SG_HPU_TYPE_PCI_IO_BOARD_SHORTNAME	"PCIB"
148 
149 #define	SG_HPU_TYPE_CPCI_IO_BOARD		(0x502)
150 #define	SG_HPU_TYPE_CPCI_IO_BOARD_STR		"CPCI I/O board"
151 #define	SG_HPU_TYPE_CPCI_IO_BOARD_ID		"IB"
152 #define	SG_HPU_TYPE_CPCI_IO_BOARD_SHORTNAME	"CPCB"
153 
154 #define	SG_HPU_TYPE_CPCI_IO_BOARD_F3800		(0x503)
155 #define	SG_HPU_TYPE_CPCI_IO_BOARD_F3800_STR	"CPCI I/O board (F3800)"
156 #define	SG_HPU_TYPE_CPCI_IO_BOARD_F3800_ID	"IB"
157 
158 #define	SG_HPU_TYPE_WCI_CPCI_IO_BOARD		(0x504)
159 #define	SG_HPU_TYPE_WCI_CPCI_IO_BOARD_STR	"WCI cPCI I/O Board"
160 #define	SG_HPU_TYPE_WCI_CPCI_IO_BOARD_ID	"IB"
161 
162 #define	SG_HPU_TYPE_WCI_CPCI_IO_BOARD_F3800	(0x505)
163 #define	SG_HPU_TYPE_WCI_CPCI_IO_BOARD_F3800_STR	"WCI cPCI I/O Board (F3800)"
164 #define	SG_HPU_TYPE_WCI_CPCI_IO_BOARD_F3800_ID	"IB"
165 
166 
167 #define	SG_HPU_TYPE_A123_POWER_SUPPLY		(0x601)
168 #define	SG_HPU_TYPE_A123_POWER_SUPPLY_STR	"A123 Power Supply"
169 #define	SG_HPU_TYPE_A123_POWER_SUPPLY_ID	"PS"
170 #define	SG_HPU_TYPE_A123_POWER_SUPPLY_SHORTNAME	"PS"
171 
172 #define	SG_HPU_TYPE_A138_POWER_SUPPLY		(0x602)
173 #define	SG_HPU_TYPE_A138_POWER_SUPPLY_STR	"A138 Power Supply"
174 #define	SG_HPU_TYPE_A138_POWER_SUPPLY_ID	"PS"
175 #define	SG_HPU_TYPE_A138_POWER_SUPPLY_SHORTNAME	"PS"
176 
177 #define	SG_HPU_TYPE_A145_POWER_SUPPLY		(0x603)
178 #define	SG_HPU_TYPE_A145_POWER_SUPPLY_STR	"A145 Power Supply"
179 #define	SG_HPU_TYPE_A145_POWER_SUPPLY_ID	"PS"
180 #define	SG_HPU_TYPE_A145_POWER_SUPPLY_SHORTNAME	"PS"
181 
182 #define	SG_HPU_TYPE_A152_POWER_SUPPLY		(0x604)
183 #define	SG_HPU_TYPE_A152_POWER_SUPPLY_STR	"A152 Power Supply"
184 #define	SG_HPU_TYPE_A152_POWER_SUPPLY_ID	"PS"
185 #define	SG_HPU_TYPE_A152_POWER_SUPPLY_SHORTNAME	"PS"
186 
187 #define	SG_HPU_TYPE_A153_POWER_SUPPLY		(0x605)
188 #define	SG_HPU_TYPE_A153_POWER_SUPPLY_STR	"A153 Power Supply"
189 #define	SG_HPU_TYPE_A153_POWER_SUPPLY_ID	"PS"
190 #define	SG_HPU_TYPE_A153_POWER_SUPPLY_SHORTNAME	"PS"
191 
192 
193 #define	SG_HPU_TYPE_SUN_FIRE_3800_CENTERPLANE	(0x701)	/* 0x701 */
194 #define	SG_HPU_TYPE_SUN_FIRE_3800_CENTERPLANE_STR  \
195 			"Sun Fire 3800 Centerplane"
196 #define	SG_HPU_TYPE_SUN_FIRE_3800_CENTERPLANE_ID	"ID"
197 #define	SG_HPU_TYPE_SUN_FIRE_3800_CENTERPLANE_SHORTNAME	"ID"
198 
199 #define	SG_HPU_TYPE_SUN_FIRE_6800_CENTERPLANE	(0x702)	/* 0x702 */
200 #define	SG_HPU_TYPE_SUN_FIRE_6800_CENTERPLANE_STR  \
201 			"Sun Fire 6800 Centerplane"
202 #define	SG_HPU_TYPE_SUN_FIRE_6800_CENTERPLANE_ID	"ID"
203 #define	SG_HPU_TYPE_SUN_FIRE_6800_CENTERPLANE_SHORTNAME	"ID"
204 
205 #define	SG_HPU_TYPE_SUN_FIRE_4810_CENTERPLANE	(0x703)	/* 0x703 */
206 #define	SG_HPU_TYPE_SUN_FIRE_4810_CENTERPLANE_STR  \
207 			"Sun Fire 4810 Centerplane"
208 #define	SG_HPU_TYPE_SUN_FIRE_4810_CENTERPLANE_ID	"ID"
209 #define	SG_HPU_TYPE_SUN_FIRE_4810_CENTERPLANE_SHORTNAME	"ID"
210 
211 #define	SG_HPU_TYPE_SUN_FIRE_4800_CENTERPLANE	(0x704)	/* 0x704 */
212 #define	SG_HPU_TYPE_SUN_FIRE_4800_CENTERPLANE_STR  \
213 			"Sun Fire 4800 Centerplane"
214 #define	SG_HPU_TYPE_SUN_FIRE_4800_CENTERPLANE_ID	"ID"
215 #define	SG_HPU_TYPE_SUN_FIRE_4800_CENTERPLANE_SHORTNAME	"ID"
216 
217 #define	SG_HPU_TYPE_SUN_FIRE_3800_REPLACEMENT_CENTERPLANE	(0x705)
218 #define	SG_HPU_TYPE_SUN_FIRE_3800_REPLACEMENT_CENTERPLANE_STR  \
219 			"Sun Fire 3800 Replacement Centerplane"
220 #define	SG_HPU_TYPE_SUN_FIRE_3800_REPLACEMENT_CENTERPLANE_ID	"ID"
221 #define	SG_HPU_TYPE_SUN_FIRE_3800_REPLACEMENT_CENTERPLANE_SHORTNAME	"ID"
222 
223 #define	SG_HPU_TYPE_SUN_FIRE_6800_REPLACEMENT_CENTERPLANE	(0x706)
224 #define	SG_HPU_TYPE_SUN_FIRE_6800_REPLACEMENT_CENTERPLANE_STR  \
225 			"Sun Fire 6800 Replacement Centerplane"
226 #define	SG_HPU_TYPE_SUN_FIRE_6800_REPLACEMENT_CENTERPLANE_ID	"ID"
227 #define	SG_HPU_TYPE_SUN_FIRE_6800_REPLACEMENT_CENTERPLANE_SHORTNAME	"ID"
228 
229 #define	SG_HPU_TYPE_SUN_FIRE_4810_REPLACEMENT_CENTERPLANE	(0x707)
230 #define	SG_HPU_TYPE_SUN_FIRE_4810_REPLACEMENT_CENTERPLANE_STR  \
231 			"Sun Fire 4810 Replacement Centerplane"
232 #define	SG_HPU_TYPE_SUN_FIRE_4810_REPLACEMENT_CENTERPLANE_ID		"ID"
233 #define	SG_HPU_TYPE_SUN_FIRE_4810_REPLACEMENT_CENTERPLANE_SHORTNAME	"ID"
234 
235 #define	SG_HPU_TYPE_SUN_FIRE_4800_REPLACEMENT_CENTERPLANE	(0x708)
236 #define	SG_HPU_TYPE_SUN_FIRE_4800_REPLACEMENT_CENTERPLANE_STR  \
237 			"Sun Fire 4800 Replacement Centerplane"
238 #define	SG_HPU_TYPE_SUN_FIRE_4800_REPLACEMENT_CENTERPLANE_ID		"ID"
239 #define	SG_HPU_TYPE_SUN_FIRE_4800_REPLACEMENT_CENTERPLANE_SHORTNAME	"ID"
240 
241 #define	SG_HPU_TYPE_SUN_FIRE_REPLACEMENT_ID_BOARD	(0x709)	/* 0x709 */
242 #define	SG_HPU_TYPE_SUN_FIRE_REPLACEMENT_ID_BOARD_STR  \
243 			"Sun Fire Replacement ID Board"
244 #define	SG_HPU_TYPE_SUN_FIRE_REPLACEMENT_ID_BOARD_ID	"ID"
245 #define	SG_HPU_TYPE_SUN_FIRE_REPLACEMENT_ID_BOARD_SHORTNAME	"ID"
246 
247 
248 #define	SG_HPU_TYPE_AC_SEQUENCER		(0x900)
249 #define	SG_HPU_TYPE_AC_SEQUENCER_STR		"AC Sequencer"
250 #define	SG_HPU_TYPE_AC_SEQUENCER_ID		"AC"
251 #define	SG_HPU_TYPE_AC_SEQUENCER_SHORTNAME	"AC"
252 
253 
254 #define	SG_HPU_TYPE_2MB_ECACHE_MODULE	((10<<8)|1)	/* 0xA01 */
255 #define	SG_HPU_TYPE_2MB_ECACHE_MODULE_STR  \
256 			"2MB Ecache module"
257 
258 #define	SG_HPU_TYPE_2MB_ECACHE_MODULE_SHORTNAME	"ECACHE"
259 
260 #define	SG_HPU_TYPE_4MB_ECACHE_MODULE	((10<<8)|2)	/* 0xA02 */
261 #define	SG_HPU_TYPE_4MB_ECACHE_MODULE_STR  \
262 			"4MB Ecache module"
263 
264 #define	SG_HPU_TYPE_4MB_ECACHE_MODULE_SHORTNAME	"ECACHE"
265 
266 #define	SG_HPU_TYPE_DRAM_SLOT	((11<<8)|0)	/* 0xB00 */
267 #define	SG_HPU_TYPE_DRAM_SLOT_STR  \
268 			"DRAM slot"
269 
270 #define	SG_HPU_TYPE_DRAM_SLOT_SHORTNAME	"DIMM"
271 
272 #define	SG_HPU_TYPE_128MB_DRAM_MODULE	((11<<8)|1)	/* 0xB01 */
273 #define	SG_HPU_TYPE_128MB_DRAM_MODULE_STR  \
274 			"128MB DRAM module"
275 
276 #define	SG_HPU_TYPE_128MB_DRAM_MODULE_SHORTNAME	"DIMM"
277 
278 #define	SG_HPU_TYPE_256MB_DRAM_MODULE	((11<<8)|2)	/* 0xB02 */
279 #define	SG_HPU_TYPE_256MB_DRAM_MODULE_STR  \
280 			"256MB DRAM module"
281 
282 #define	SG_HPU_TYPE_256MB_DRAM_MODULE_SHORTNAME	"DIMM"
283 
284 #define	SG_HPU_TYPE_512MB_DRAM_MODULE	((11<<8)|3)	/* 0xB03 */
285 #define	SG_HPU_TYPE_512MB_DRAM_MODULE_STR  \
286 			"512MB DRAM module"
287 
288 #define	SG_HPU_TYPE_512MB_DRAM_MODULE_SHORTNAME	"DIMM"
289 
290 #define	SG_HPU_TYPE_1GB_DRAM_MODULE	((11<<8)|4)	/* 0xB04 */
291 #define	SG_HPU_TYPE_1GB_DRAM_MODULE_STR  \
292 			"1GB DRAM module"
293 
294 #define	SG_HPU_TYPE_1GB_DRAM_MODULE_SHORTNAME	"DIMM"
295 
296 /*
297  * These macros are used to generate the FRU Names of the various boards etc.
298  * A string is passed in to each macro and by calling a number of the
299  * macros a FRU name in the HLLN format can be built up.
300  *
301  * Note: The string needs to be initialized to an empty string before the
302  *       first of these macros is called to generate a FRU Name.
303  */
304 #define	MAX_FRU_NAME_LEN		20
305 
306 #define	SG_SET_FRU_NAME_NODE(str, num) \
307 { \
308 	char tmp_str[MAX_FRU_NAME_LEN]; \
309 	(void) sprintf(tmp_str, "/N%d", num); \
310 	(void) strcat(str, tmp_str); \
311 }
312 
313 #define	SG_SET_FRU_NAME_CPU_BOARD(str, num) \
314 { \
315 	char tmp_str[MAX_FRU_NAME_LEN]; \
316 	(void) sprintf(tmp_str, "/%s%d", SG_HPU_TYPE_CPU_BOARD_ID, num); \
317 	(void) strcat(str, tmp_str); \
318 }
319 
320 #define	SG_SET_FRU_NAME_IO_BOARD(str, num) \
321 { \
322 	char tmp_str[MAX_FRU_NAME_LEN]; \
323 	(void) sprintf(tmp_str, "/%s%d", SG_HPU_TYPE_PCI_IO_BOARD_ID, num); \
324 	(void) strcat(str, tmp_str); \
325 }
326 
327 #define	SG_SET_FRU_NAME_MODULE(str, num) \
328 { \
329 	char tmp_str[MAX_FRU_NAME_LEN]; \
330 	(void) sprintf(tmp_str, "/P%d", num); \
331 	(void) strcat(str, tmp_str); \
332 }
333 
334 #define	SG_SET_FRU_NAME_CORE(str, num) \
335 { \
336 	char tmp_str[MAX_FRU_NAME_LEN]; \
337 	(void) sprintf(tmp_str, "/C%d", num); \
338 	(void) strcat(str, tmp_str); \
339 }
340 
341 #define	SG_SET_FRU_NAME_BANK(str, num) \
342 { \
343 	char tmp_str[MAX_FRU_NAME_LEN]; \
344 	(void) sprintf(tmp_str, "/B%d", num); \
345 	(void) strcat(str, tmp_str); \
346 }
347 
348 #define	SG_SET_FRU_NAME_DIMM(str, num) \
349 { \
350 	char tmp_str[MAX_FRU_NAME_LEN]; \
351 	(void) sprintf(tmp_str, "/D%d", num); \
352 	(void) strcat(str, tmp_str); \
353 }
354 
355 
356 #ifdef	__cplusplus
357 }
358 #endif
359 
360 #endif	/* _SYS_SGFRUTYPES_H */
361