ses2.h revision 6316:40d5384cc8b2
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 2008 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef	_FRAMEWORK_SES_H
28#define	_FRAMEWORK_SES_H
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32#ifdef	__cplusplus
33extern "C" {
34#endif
35
36/*
37 * Node properties
38 */
39#define	SES_PROP_ELEMENT_TYPE		"ses-element-type"
40typedef enum ses2_element_type {
41	SES_ET_UNSPECIFIED = 0,
42	SES_ET_DEVICE = 0x1,
43	SES_ET_POWER_SUPPLY = 0x2,
44	SES_ET_COOLING = 0x3,
45	SES_ET_TEMPERATURE_SENSOR = 0x4,
46	SES_ET_DOOR_LOCK = 0x5,
47	SES_ET_AUDIBLE_ALARM = 0x6,
48	SES_ET_ESC_ELECTRONICS = 0x7,
49	SES_ET_SCC_ELECTRONICS = 0x8,
50	SES_ET_NONVOLATILE_CACHE = 0x9,
51	SES_ET_INVALID_OPERATION_REASON = 0xa,
52	SES_ET_UPS = 0xb,
53	SES_ET_DISPLAY = 0xc,
54	SES_ET_KEY_PAD_ENTRY = 0xd,
55	SES_ET_ENCLOSURE = 0xe,
56	SES_ET_SCSI_PORT_XCVR = 0xf,
57	SES_ET_LANGUAGE = 0x10,
58	SES_ET_COMMUNICATION_PORT = 0x11,
59	SES_ET_VOLTAGE_SENSOR = 0x12,
60	SES_ET_CURRENT_SENSOR = 0x13,
61	SES_ET_SCSI_TARGET_PORT = 0x14,
62	SES_ET_SCSI_INITIATOR_PORT = 0x15,
63	SES_ET_SIMPLE_SUBENCLOSURE = 0x16,
64	SES_ET_ARRAY_DEVICE = 0x17,
65	SES_ET_SAS_EXPANDER = 0x18,
66	SES_ET_SAS_CONNECTOR = 0x19
67} ses2_element_type_t;
68
69#define	SES_PROP_STATUS_CODE		"ses-status-code"
70typedef enum ses_element_status_code {
71	SES_ESC_UNSUPPORTED = 0,
72	SES_ESC_OK = 1,
73	SES_ESC_CRITICAL = 2,
74	SES_ESC_NONCRITICAL = 3,
75	SES_ESC_UNRECOVERABLE = 4,
76	SES_ESC_NOT_INSTALLED = 5,
77	SES_ESC_UNKNOWN = 6,
78	SES_ESC_UNAVAIL = 7,
79	SES_ESC_NO_ACCESS = 8
80} ses_element_status_code_t;
81
82#define	SES_PROP_ELEMENT_CLASS_INDEX	"ses-element-class-index" /* U64 */
83#define	SES_PROP_ELEMENT_INDEX		"ses-element-index"	/* U64 */
84#define	SES_PROP_BAY_NUMBER		"ses-bay-number"	/* U64 */
85#define	SES_PROP_PRDFAIL		"ses-failure-predicted"
86#define	SES_PROP_SWAP			"ses-swapped"
87#define	SES_PROP_DISABLED		"ses-disabled"
88#define	SES_PROP_IDENT			"ses-identify"
89#define	SES_PROP_WARN			"ses-warning"
90#define	SES_PROP_FAIL			"ses-failed"
91#define	SES_PROP_WARN_REQ		"ses-warning-indicator-requested"
92#define	SES_PROP_FAIL_REQ		"ses-failure-indicator-requested"
93#define	SES_PROP_REPORT			"ses-reported-via"
94#define	SES_PROP_RMV			"ses-ready-to-remove"
95#define	SES_PROP_OFF			"ses-off"
96#define	SES_PROP_REQUESTED_ON		"ses-requested-on"
97#define	SES_PROP_CLASS_DESCRIPTION	"ses-class-description"	/* S */
98#define	SES_PROP_DESCRIPTION		"ses-description"	/* S */
99#define	SES_PROP_HOT_SWAP		"ses-hot-swappable"
100
101#define	SES_FC_PROP_NODE_NAME		"ses-fc-node-name"	/* U64 */
102#define	SES_FC_PROP_LOOP_POS		"ses-fc-loop-position"	/* U64 */
103#define	SES_FC_PROP_REQ_HARDADDR	"ses-fc-requested-hard-address"
104#define	SES_FC_PROP_N_PORT_ID		"ses-fc-n_port-identifier" /* U64 */
105#define	SES_FC_PROP_N_PORT_NAME		"ses-fc-n_port-name"	/* U64 */
106#define	SES_FC_PROP_PORTS		"ses-fc-ports"		/* NVA */
107
108#define	SES_SAS_PROP_DEVICE_TYPE	"ses-sas-device-type"	/* U64 */
109/*
110 * SAS2r11 7.8.2 Table 123
111 */
112typedef enum sas_device_type {
113	SAS_DT_END_DEVICE = 0x01,
114	SAS_DT_EXPANDER = 0x02,
115	SAS_DT_LEGACY_EXPANDER = 0x3
116} sas_device_type_t;
117
118#define	SES_SAS_PROP_SMPI_PORT		"ses-sas-smp-initiator-port"
119#define	SES_SAS_PROP_STPI_PORT		"ses-sas-stp-initiator-port"
120#define	SES_SAS_PROP_SSPI_PORT		"ses-sas-ssp-initiator-port"
121#define	SES_SAS_PROP_SATA_DEVICE	"ses-sas-sata-device"
122#define	SES_SAS_PROP_SMPT_PORT		"ses-sas-smp-target-port"
123#define	SES_SAS_PROP_STPT_PORT		"ses-sas-stp-target-port"
124#define	SES_SAS_PROP_SSPT_PORT		"ses-sas-ssp-target-port"
125#define	SES_SAS_PROP_ATT_ADDR		"ses-sas-attached-address" /* U64 */
126#define	SES_SAS_PROP_ADDR		"ses-sas-address"	/* U64 */
127#define	SES_SAS_PROP_PHY_ID		"ses-sas-phy-identifier" /* U64 */
128#define	SES_SAS_PROP_PHYS		"ses-sas-phys"		/* NVA */
129#define	SES_PROP_CE_IDX			"ses-connector-element-index" /* U64 */
130#define	SES_PROP_OE_IDX			"ses-other-element-index" /* U64 */
131
132#define	SES_PROP_THRESH_CRIT_HI		"ses-high-critical-threshold" /* U64 */
133#define	SES_PROP_THRESH_WARN_HI		"ses-high-warning-threshold" /* U64 */
134#define	SES_PROP_THRESH_CRIT_LO		"ses-low-critical-threshold" /* U64 */
135#define	SES_PROP_THRESH_WARN_LO		"ses-low-warning-threshold" /* U64 */
136
137/*
138 * Audible Alarm properties
139 */
140#define	SES_ALARM_PROP_UNRECOV		"ses-indicating-unrecoverable"
141#define	SES_ALARM_PROP_CRIT		"ses-indicating-critical"
142#define	SES_ALARM_PROP_NONCRIT		"ses-indicating-noncritical"
143#define	SES_ALARM_PROP_INFO		"ses-indicating-informational"
144#define	SES_ALARM_PROP_REMIND		"ses-reminder-mode"
145#define	SES_ALARM_PROP_MUTED		"ses-muted"
146#define	SES_ALARM_PROP_RQST_MUTE	"ses-mute-requested"
147
148/*
149 * Nonvolatile Cache properties
150 */
151#define	SES_CACHE_PROP_SIZE		"ses-cache-size"	/* U64 */
152
153/*
154 * Cooling Element properties
155 */
156#define	SES_COOLING_PROP_FAN_SPEED	"ses-fan-speed"		/* U64 */
157#define	SES_COOLING_PROP_SPEED_CODE	"ses-fan-speed-code"	/* U64 */
158typedef enum ses_cooling_fan_speed {
159	SES_COOLING_FAN_SPEED_STOPPED = 0,
160	SES_COOLING_FAN_SPEED_LOWEST = 1,
161	SES_COOLING_FAN_SPEED_LOWER = 2,
162	SES_COOLING_FAN_SPEED_LOW = 3,
163	SES_COOLING_FAN_SPEED_INTERMEDIATE = 4,
164	SES_COOLING_FAN_SPEED_HIGH = 5,
165	SES_COOLING_FAN_SPEED_HIGHER = 6,
166	SES_COOLING_FAN_SPEED_HIGHEST = 7
167} ses_cooling_fan_speed_t;
168
169/*
170 * Device/Array Device properties
171 */
172#define	SES_DEV_PROP_SLOT_ADDR		"ses-slot-address"	/* U64 */
173#define	SES_DEV_PROP_PRDFAIL		"ses-failure-predicted"
174#define	SES_DEV_PROP_READY_TO_INSERT	"ses-ready-to-insert"
175#define	SES_DEV_PROP_ENC_BYP_A		"ses-enclosure-bypassed-a"
176#define	SES_DEV_PROP_ENC_BYP_B		"ses-enclosure-bypassed-b"
177#define	SES_DEV_PROP_DO_NOT_REMOVE	"ses-do-not-remove"
178#define	SES_DEV_PROP_APP_BYP_A		"ses-app-client-bypassed-a"
179#define	SES_DEV_PROP_APP_BYP_B		"ses-app-client-bypassed-b"
180#define	SES_DEV_PROP_DEV_BYP_A		"ses-device-bypassed-a"
181#define	SES_DEV_PROP_DEV_BYP_B		"ses-device-bypassed-b"
182#define	SES_DEV_PROP_BYP_A		"ses-bypassed-a"
183#define	SES_DEV_PROP_BYP_B		"ses-bypassed-b"
184#define	SES_DEV_PROP_FAULT_RQSTD	"ses-fault-requested"
185#define	SES_DEV_PROP_FAULT_SENSED	"ses-fault-sensed"
186#define	SES_DEV_PROP_SAS_NOT_ALL_PHYS	"ses-sas-not-all-phys"
187
188/* Control only */
189#define	SES_DEV_PROP_REQ_MISSING	"ses-request-missing"
190#define	SES_DEV_PROP_REQ_ACTIVE		"ses-request-activity"
191
192#define	SES_AD_PROP_RR_ABORT		"ses-remap-rebuild-abort"
193#define	SES_AD_PROP_REBUILD		"ses-remap-rebuild"
194#define	SES_AD_PROP_IN_FAILED_ARRAY	"ses-in-failed-array"
195#define	SES_AD_PROP_IN_CRIT_ARRAY	"ses-in-critical-array"
196#define	SES_AD_PROP_CONS_CHK		"ses-consistency-check"
197#define	SES_AD_PROP_HOT_SPARE		"ses-hot-spare"
198#define	SES_AD_PROP_RSVD_DEVICE		"ses-reserved-device"
199#define	SES_AD_PROP_OK			"ses-ok"
200
201/*
202 * Display Element properties
203 */
204#define	SES_DPY_PROP_CHAR		"ses-displayed-character" /* U16 */
205#define	SES_DPY_PROP_MODE		"ses-display-mode"	/* U64 */
206/*
207 * SES-2r17 Table 96, 7.3.14
208 */
209typedef enum ses_display_mode_ctl {
210	SES_DISPLAY_MC_NOCHG = 0,
211	SES_DISPLAY_MC_ESP = 1,
212	SES_DISPLAY_MC_SET = 2
213} ses_display_mode_ctl_t;
214
215typedef enum ses2_display_mode_status {
216	SES_DISPLAY_MS_NOTSUP = 0,
217	SES_DISPLAY_MS_ESP = 1,
218	SES_DISPLAY_MS_SET = 2
219} ses_display_mode_status_t;
220
221/*
222 * Current Sensor properties
223 */
224#define	SES_CS_PROP_CRIT_OVER		"ses-overcurrent-critical"
225#define	SES_CS_PROP_WARN_OVER		"ses-overcurrent-warning"
226#define	SES_CS_PROP_CURRENT_MA		"ses-current"		/* I64 */
227
228/*
229 * Door Lock properties
230 */
231#define	SES_LOCK_PROP_UNLOCKED		"ses-unlocked"
232
233/*
234 * SCSI Initiator or Target Port properties
235 */
236#define	SES_ITP_PROP_ENABLED		"ses-enabled"
237
238/*
239 * Language Module properties
240 */
241#define	SES_LANG_PROP_LANGCODE		"ses-language-code"	/* U64 */
242
243/*
244 * SCSI Port/Transceiver properties
245 */
246#define	SES_PX_PROP_XMIT_FAIL		"ses-transmitter-failure"
247#define	SES_PX_PROP_LOL			"ses-loss-of-link"
248
249/*
250 * Power Supply properties
251 */
252#define	SES_PSU_PROP_DC_OVER_CURRENT	"ses-dc-over-current"
253#define	SES_PSU_PROP_DC_UNDER_VOLTAGE	"ses-dc-under-voltage"
254#define	SES_PSU_PROP_DC_OVER_VOLTAGE	"ses-dc-over-voltage"
255#define	SES_PSU_PROP_DC_FAIL		"ses-dc-fail"
256#define	SES_PSU_PROP_AC_FAIL		"ses-ac-fail"
257#define	SES_PSU_PROP_TEMP_WARN		"ses-temperature-warning" /* I64 */
258#define	SES_PSU_PROP_OVERTEMP_FAIL	"ses-overtemperature-failure"
259
260/*
261 * SAS Expander properties
262 */
263#define	SES_EXP_PROP_SAS_ADDR		"ses-expander-sas-address" /* U64 */
264
265/*
266 * SAS Connector properties
267 */
268#define	SES_SC_PROP_PHYSICAL_LINK	"ses-sas-physical-link"	/* U64 */
269#define	SES_SC_PROP_CONNECTOR_TYPE	"ses-sas-connector-type" /* U64 */
270/*
271 * SES2r17 Table 122, 7.3.26
272 */
273typedef enum ses_sasconn_type {
274	SES_SASCONN_T_UNKNOWN = 0,
275	SES_SASCONN_T_SFF_8470 = 0x1,
276	SES_SASCONN_T_SFF_8088 = 0x2,
277	SES_SASCONN_T_VENDOR_EXT = 0xf,
278	SES_SASCONN_T_SFF_8484 = 0x10,
279	SES_SASCONN_T_SFF_8087 = 0x11,
280	SES_SASCONN_T_SFF_8482_R = 0x20,
281	SES_SASCONN_T_SATA_HOST = 0x21,
282	SES_SASCONN_T_SFF_8482_P = 0x22,
283	SES_SASCONN_T_SATA_DEV = 0x23,
284	SES_SASCONN_T_VIRTUAL = 0x2f,
285	SES_SASCONN_T_VENDOR_INT = 0x3f,
286	SES_SASCONN_T_VENDOR_70 = 0x70,
287	SES_SASCONN_T_VENDOR_71 = 0x71,
288	SES_SASCONN_T_VENDOR_72 = 0x72,
289	SES_SASCONN_T_VENDOR_73 = 0x73,
290	SES_SASCONN_T_VENDOR_74 = 0x74,
291	SES_SASCONN_T_VENDOR_75 = 0x75,
292	SES_SASCONN_T_VENDOR_76 = 0x76,
293	SES_SASCONN_T_VENDOR_77 = 0x77,
294	SES_SASCONN_T_VENDOR_78 = 0x78,
295	SES_SASCONN_T_VENDOR_79 = 0x79,
296	SES_SASCONN_T_VENDOR_7A = 0x7a,
297	SES_SASCONN_T_VENDOR_7B = 0x7b,
298	SES_SASCONN_T_VENDOR_7C = 0x7c,
299	SES_SASCONN_T_VENDOR_7D = 0x7d,
300	SES_SASCONN_T_VENDOR_7E = 0x7e,
301	SES_SASCONN_T_VENDOR_7F = 0x7f
302} ses_sasconn_type_t;
303
304/*
305 * Simple Subenclosure properties
306 */
307#define	SES_SS_PROP_SHORT_STATUS	"ses-short-status"	/* U64 */
308
309/*
310 * Temperature Sensor properties
311 */
312#define	SES_TEMP_PROP_TEMP		"ses-temperature"	/* I64 */
313#define	SES_TEMP_PROP_UNDERTEMP_WARN	"ses-undertemperature-warning"
314#define	SES_TEMP_PROP_UNDERTEMP_FAIL	"ses-undertemperature-failure"
315#define	SES_TEMP_PROP_OVERTEMP_WARN	"ses-overtemperature-warning"
316#define	SES_TEMP_PROP_OVERTEMP_FAIL	"ses-overtemperature-failure"
317
318/*
319 * Uninterruptible Power Supply properties
320 */
321#define	SES_UPS_PROP_TIMELEFT		"ses-battery-time-remaining" /* U64 */
322#define	SES_UPS_PROP_INTF_FAIL		"ses-interface-failure"
323#define	SES_UPS_PROP_WARN		"ses-low-battery-warning"
324#define	SES_UPS_PROP_UPS_FAIL		"ses-ups-failure"
325#define	SES_UPS_PROP_DC_FAIL		"ses-dc-failure"
326#define	SES_UPS_PROP_AC_FAIL		"ses-ac-failure"
327#define	SES_UPS_PROP_AC_QUAL		"ses-ac-quality-exception"
328#define	SES_UPS_PROP_AC_HI		"ses-ac-overvoltage-exception"
329#define	SES_UPS_PROP_AC_LO		"ses-ac-undervoltage-exception"
330#define	SES_UPS_PROP_BPF		"ses-battery-failure-predicted"
331#define	SES_UPS_PROP_BATT_FAIL		"ses-battery-failure"
332
333/*
334 * Voltage Sensor properties
335 */
336#define	SES_VS_PROP_CRIT_UNDER		"ses-undervoltage-critical"
337#define	SES_VS_PROP_CRIT_OVER		"ses-overvoltage-critical"
338#define	SES_VS_PROP_WARN_UNDER		"ses-undervoltage-warning"
339#define	SES_VS_PROP_WARN_OVER		"ses-overvoltage-warning"
340#define	SES_VS_PROP_VOLTAGE_MV		"ses-voltage"		/* I64 */
341
342/*
343 * Enclosure Services Controller properties (Control only)
344 */
345#define	SES_ESC_PROP_SELECT		"ses-select-element"
346
347/*
348 * Primary/Subenclosure properties
349 */
350#define	SES_EN_PROP_EID			"ses-enclosure-id"	/* U64 */
351#define	SES_EN_PROP_ESPID		"ses-enclosure-service-proc-id"
352#define	SES_EN_PROP_NESP		"ses-enclosure-service-proc-count"
353#define	SES_EN_PROP_LID			"ses-logical-id"		/* NV */
354#define	SES_EN_PROP_VID			"ses-vendor-id"		/* S */
355#define	SES_EN_PROP_PID			"ses-product-id"	/* S */
356#define	SES_EN_PROP_REV			"ses-product-revision"	/* S */
357#define	SES_EN_PROP_VS			"ses-product-vendor-specific" /* BA */
358
359#define	SES_EN_PROP_UNRECOV		"ses-status-unrecoverable"
360#define	SES_EN_PROP_CRIT		"ses-status-critical"
361#define	SES_EN_PROP_NONCRIT		"ses-status-noncritical"
362#define	SES_EN_PROP_INFO		"ses-status-informational"
363#define	SES_EN_PROP_INVOP		"ses-status-invalid-operation"
364#define	SES_EN_PROP_HELP		"ses-help-text"		/* S */
365#define	SES_EN_PROP_STRING		"ses-string-in-data"	/* BA */
366#define	SES_EN_PROP_SHORT		"ses-short-status"	/* U64 */
367#define	SES_EN_PROP_UCODE		"ses-microcode-dl-status" /* U64 */
368typedef enum ses2_dl_ucode_status {
369	SES2_DLUCODE_S_NOP = 0,
370	SES2_DLUCODE_S_INPROGRESS = 0x1,
371	SES2_DLUCODE_S_SAVING = 0x2,
372	SES2_DLUCODE_S_INTERIM_3 = 0x3,
373	SES2_DLUCODE_S_INTERIM_4 = 0x4,
374	SES2_DLUCODE_S_INTERIM_5 = 0x5,
375	SES2_DLUCODE_S_INTERIM_6 = 0x6,
376	SES2_DLUCODE_S_INTERIM_7 = 0x7,
377	SES2_DLUCODE_S_INTERIM_8 = 0x8,
378	SES2_DLUCODE_S_INTERIM_9 = 0x9,
379	SES2_DLUCODE_S_INTERIM_A = 0xa,
380	SES2_DLUCODE_S_INTERIM_B = 0xb,
381	SES2_DLUCODE_S_INTERIM_C = 0xc,
382	SES2_DLUCODE_S_INTERIM_D = 0xd,
383	SES2_DLUCODE_S_INTERIM_E = 0xe,
384	SES2_DLUCODE_S_INTERIM_F = 0xf,
385	SES2_DLUCODE_S_COMPLETE_NOW = 0x10,
386	SES2_DLUCODE_S_COMPLETE_AT_RESET = 0x11,
387	SES2_DLUCODE_S_COMPLETE_AT_POWERON = 0x12,
388	SES2_DLUCODE_S_VENDOR_70 = 0x70,
389	SES2_DLUCODE_S_VENDOR_71 = 0x71,
390	SES2_DLUCODE_S_VENDOR_72 = 0x72,
391	SES2_DLUCODE_S_VENDOR_73 = 0x73,
392	SES2_DLUCODE_S_VENDOR_74 = 0x74,
393	SES2_DLUCODE_S_VENDOR_75 = 0x75,
394	SES2_DLUCODE_S_VENDOR_76 = 0x76,
395	SES2_DLUCODE_S_VENDOR_77 = 0x77,
396	SES2_DLUCODE_S_VENDOR_78 = 0x78,
397	SES2_DLUCODE_S_VENDOR_79 = 0x79,
398	SES2_DLUCODE_S_VENDOR_7A = 0x7a,
399	SES2_DLUCODE_S_VENDOR_7B = 0x7b,
400	SES2_DLUCODE_S_VENDOR_7C = 0x7c,
401	SES2_DLUCODE_S_VENDOR_7D = 0x7d,
402	SES2_DLUCODE_S_VENDOR_7E = 0x7e,
403	SES2_DLUCODE_S_VENDOR_7F = 0x7f,
404	SES2_DLUCODE_S_PAGE_ERR = 0x80,
405	SES2_DLUCODE_S_IMAGE_ERR = 0x81,
406	SES2_DLUCODE_S_TIMEOUT = 0x82,
407	SES2_DLUCODE_S_INTERNAL_NEEDIMAGE = 0x83,
408	SES2_DLUCODE_S_INTERNAL_SAFE = 0x84,
409	SES2_DLUCODE_S_VENDOR_ERR_F0 = 0xf0,
410	SES2_DLUCODE_S_VENDOR_ERR_F1 = 0xf1,
411	SES2_DLUCODE_S_VENDOR_ERR_F2 = 0xf2,
412	SES2_DLUCODE_S_VENDOR_ERR_F3 = 0xf3,
413	SES2_DLUCODE_S_VENDOR_ERR_F4 = 0xf4,
414	SES2_DLUCODE_S_VENDOR_ERR_F5 = 0xf5,
415	SES2_DLUCODE_S_VENDOR_ERR_F6 = 0xf6,
416	SES2_DLUCODE_S_VENDOR_ERR_F7 = 0xf7,
417	SES2_DLUCODE_S_VENDOR_ERR_F8 = 0xf8,
418	SES2_DLUCODE_S_VENDOR_ERR_F9 = 0xf9,
419	SES2_DLUCODE_S_VENDOR_ERR_FA = 0xfa,
420	SES2_DLUCODE_S_VENDOR_ERR_FB = 0xfb,
421	SES2_DLUCODE_S_VENDOR_ERR_FC = 0xfc,
422	SES2_DLUCODE_S_VENDOR_ERR_FD = 0xfd,
423	SES2_DLUCODE_S_VENDOR_ERR_FE = 0xfe,
424	SES2_DLUCODE_S_VENDOR_ERR_FF = 0xff
425} ses2_dl_ucode_status_t;
426
427typedef enum ses_dl_ucode_mode {
428	SES_DLUCODE_M_WITH_OFFS = 6,
429	SES_DLUCODE_M_WITH_OFFS_SAVE = 7
430} ses_dl_ucode_mode_t;
431
432#define	SES_EN_PROP_UCODE_A		"ses-microcode-dl-addl-status" /* U64 */
433#define	SES_EN_PROP_UCODE_SZ		"ses-microcode-maximum-size" /* U64 */
434#define	SES_EN_PROP_UCODE_BUF		"ses-microcode-buffer-id" /* U64 */
435#define	SES_EN_PROP_UCODE_OFF		"ses-microcode-buffer-offset" /* U64 */
436
437#define	SES_EN_PROP_NICK		"ses-nickname"		/* S */
438#define	SES_EN_PROP_NICK_STATUS		"ses-nickname-status"	/* U64 */
439typedef enum ses_subnick_status {
440	SES_SNS_NO_ERROR = 0x0,
441	SES_SNS_ERR_PAGE = 0x80,
442	SES_SNS_ERR_INT_NICKLOST = 0x81,
443	SES_SNS_ERR_INT_PRESERVED = 0x82
444} ses_subnick_status_t;
445
446#define	SES_EN_PROP_NICK_ADDL_STATUS	"ses-nickname-additional-status"
447#define	SES_EN_PROP_NICK_LANG		"ses-nickname-language"	/* U64 */
448
449#define	SES_EN_PROP_POWER_DELAY		"ses-power-cycle-delay"	/* U64 */
450#define	SES_EN_PROP_POWER_DURATION	"ses-power-cycle-duration" /* U64 */
451#define	SES_EN_PROP_POWER_REQUEST	"ses-power-cycle-request" /* U64 */
452
453typedef enum ses_power_delay {
454	SES_PDL_NONE = 0x0,
455	SES_PDL_IMMEDIATE = 0x3f
456} ses_power_delay_t;
457
458typedef enum ses_power_duration {
459	SES_PDR_NONE = 0x0,
460	SES_PDR_MANUAL = 0x3f
461} ses_power_duration_t;
462
463typedef enum ses_power_request {
464	SES_PRQ_NONE = 0x0,
465	SES_PRQ_SET = 0x1,
466	SES_PRQ_CANCEL = 0x2
467} ses_power_request_t;
468
469/*
470 * IEEE logical IDs (for SES_EN_PROP_LID)
471 */
472#define	SPC3_NAA_INT			"naa-id-integer"	/* U64 */
473#define	SPC3_NAA_ID_TYPE		"naa-id-type"		/* U64 */
474#define	SPC3_NAA_COMPANY_ID		"naa-company-id"	/* U64 */
475#define	SPC3_NAA_VS_A			"naa-vendor-specific-a"	/* U64 */
476#define	SPC3_NAA_VS_B			"naa-vendor-specific-b"	/* U64 */
477
478/*
479 * SES-2 Diagnostic page codes (Table 5, 6.1.1).  The set of exported pages
480 * constitutes an inter-plugin interface and is therefore part of the public
481 * header file.
482 */
483typedef enum ses2_diag_page {
484	SES2_DIAGPAGE_SUPPORTED_PAGES = 0x00,
485	SES2_DIAGPAGE_CONFIG = 0x01,
486	SES2_DIAGPAGE_ENCLOSURE_CTL_STATUS = 0x02,
487	SES2_DIAGPAGE_HELP_TEXT = 0x03,
488	SES2_DIAGPAGE_STRING_IO = 0x04,
489	SES2_DIAGPAGE_THRESHOLD_IO = 0x05,
490	SES2_DIAGPAGE_ELEMENT_DESC = 0x07,
491	SES2_DIAGPAGE_SHORT_STATUS = 0x08,
492	SES2_DIAGPAGE_ENCLOSURE_BUSY = 0x09,
493	SES2_DIAGPAGE_ADDL_ELEM_STATUS = 0x0a,
494	SES2_DIAGPAGE_SUBENCLOSURE_HELP_TEXT = 0x0b,
495	SES2_DIAGPAGE_SUBENCLOSURE_STRING_IO = 0x0c,
496	SES2_DIAGPAGE_SUPPORTED_SES_PAGES = 0x0d,
497	SES2_DIAGPAGE_DL_MICROCODE_CTL_STATUS = 0x0e,
498	SES2_DIAGPAGE_SUBENCLOSURE_NICKNAME_CTL_STATUS = 0x0f,
499	SES2_DIAGPAGE_VENDOR_0 = 0x10,
500	SES2_DIAGPAGE_VENDOR_1 = 0x11,
501	SES2_DIAGPAGE_VENDOR_2 = 0x12,
502	SES2_DIAGPAGE_VENDOR_3 = 0x13,
503	SES2_DIAGPAGE_VENDOR_4 = 0x14,
504	SES2_DIAGPAGE_VENDOR_5 = 0x15,
505	SES2_DIAGPAGE_VENDOR_6 = 0x16,
506	SES2_DIAGPAGE_VENDOR_7 = 0x17,
507	SES2_DIAGPAGE_VENDOR_8 = 0x18,
508	SES2_DIAGPAGE_VENDOR_9 = 0x19,
509	SES2_DIAGPAGE_VENDOR_A = 0x1a,
510	SES2_DIAGPAGE_VENDOR_B = 0x1b,
511	SES2_DIAGPAGE_VENDOR_C = 0x1c,
512	SES2_DIAGPAGE_VENDOR_D = 0x1d,
513	SES2_DIAGPAGE_VENDOR_E = 0x1e,
514	SES2_DIAGPAGE_VENDOR_F = 0x1f
515} ses2_diag_page_t;
516
517#define	SES_CTL_OP_SETPROP		"ses-ctl-setprop"
518#define	SES_CTL_OP_DL_UCODE		"ses-ctl-dl-ucode"
519
520#define	SES_CTL_PROP_UCODE_DATA		"ses-ctl-ucode-data"
521#define	SES_CTL_PROP_UCODE_BUFID	"ses-ctl-ucode-bufid"
522#define	SES_CTL_PROP_UCODE_MODE		"ses-ctl-ucode-mode"
523
524#ifdef	__cplusplus
525}
526#endif
527
528#endif	/* _FRAMEWORK_SES_H */
529