4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 #ifndef _SYS_SMC_COMMANDS_H
28 #define _SYS_SMC_COMMANDS_H
30 #pragma ident "%Z%%M% %I% %E% SMI"
36 /* Address of BMC on IPMB */
37 #define BMC_IPMB_ADDR 0x20
38 #define SMC_CPCI_SLOT0_ADDR 0xB0
39 #define SMC_CPCI_SLOT_ADDR(X) (SMC_CPCI_SLOT0_ADDR + \
42 typedef struct ctsmc_code_ent
{
48 * Definition of Network Function Codes
51 SMC_NETFN_CHASSIS_REQ
= 0x0,
52 SMC_NETFN_CHASSIS_RSP
= 0x1,
53 SMC_NETFN_BRIDGE_REQ
= 0x2,
54 SMC_NETFN_BRIDGE_RSP
= 0x3,
55 SMC_NETFN_SENSOR_REQ
= 0x4,
56 SMC_NETFN_SENSOR_RSP
= 0x5,
57 SMC_NETFN_APP_REQ
= 0x6,
58 SMC_NETFN_APP_RSP
= 0x7,
59 SMC_NETFN_FIRMWARE_REQ
= 0x8,
60 SMC_NETFN_FIRMWARE_RSP
= 0x9,
61 SMC_NETFN_STORAGE_REQ
= 0xA,
62 SMC_NETFN_STORAGE_RSP
= 0xB
66 * Definition of Completion codes
69 SMC_CC_SUCCESS
= 0x00,
70 SMC_CC_NODE_BUSY
= 0xC0,
71 SMC_CC_INVALID_COMMAND
= 0xC1,
72 SMC_CC_INVALID_COMMAND_ON_LUN
= 0xC2,
73 SMC_CC_TIMEOUT
= 0xC3,
74 SMC_CC_RESOURCE_NOTAVAIL
= 0xC4,
75 SMC_CC_RESERVATION
= 0xC5,
76 SMC_CC_REQ_TRUNC
= 0xC6,
77 SMC_CC_REQLEN_NOTVALID
= 0xC7,
78 SMC_CC_REQLEN_EXCEED
= 0xC8,
79 SMC_CC_PARAM_OUT_OF_RANGE
= 0xC9,
80 SMC_CC_REQUEST_BYTES_FAILED
= 0xCA,
81 SMC_CC_NOT_PRESENT
= 0xCB,
82 SMC_CC_INVALID_FIELD
= 0xCC,
83 SMC_CC_ILLEGAL_COMMAND
= 0xCD,
84 SMC_CC_RESPONSE_FAILED
= 0xCE,
85 SMC_CC_DUPLICATE_REQUEST
= 0xCF,
86 SMC_CC_SDR_UPDATE_MODE
= 0xD0,
87 SMC_CC_FIRMWARE_UPDATE_MODE
= 0xD1,
88 SMC_CC_INIT_IN_PROGRESS
= 0xD2,
89 SMC_CC_UNSPECIFIED_ERROR
= 0xFF
100 * App command codes for commands/event notifications etc.
103 SMC_GET_DEVICE_ID
= 0x01,
104 SMC_COLD_RESET
= 0x02,
105 SMC_WARM_RESET
= 0x03,
106 SMC_GET_SELFTEST_RESULTS
= 0x04,
107 SMC_MANUFACTURING_TEST_ON
= 0x05,
108 SMC_SET_ACPI_POWER_STATE
= 0x06,
109 SMC_GET_ACPI_POWER_STATE
= 0x07,
110 SMC_GET_DEVICE_GUID
= 0x08,
111 SMC_RESET_WATCHDOG_TIMER
= 0x22,
112 SMC_EXPIRED_WATCHDOG_NOTIF
= 0x23, /* Sent by driver */
113 SMC_SET_WATCHDOG_TIMER
= 0x24,
114 SMC_GET_WATCHDOG_TIMER
= 0x25,
115 SMC_SET_GLOBAL_ENABLES
= 0x2E,
116 SMC_GET_GLOBAL_ENABLES
= 0x2F,
117 SMC_CLEAR_MESSAGE_FLAGS
= 0x30,
118 SMC_GET_MESSAGE_FLAGS
= 0x31,
119 SMC_ENABLE_MESSAGE_CHANNEL_RECEIVE
= 0x32,
120 SMC_GET_MESSAGE
= 0x33,
121 SMC_SEND_MESSAGE
= 0x34,
122 SMC_READ_EVENT_MSG_BUFFER
= 0x35,
123 SMC_SEND_TO_EVENT_MSG_BUFFER
= 0x36, /* Changed from IPMI */
124 SMC_MASTER_WR_RD_I2C
= 0x52,
125 SMC_GET_GEOGRAPHICAL_ADDRESS
= 0x55,
126 SMC_GET_BACKPLANE_TYPE
= 0x57,
127 SMC_SELECT_MEMORY_DEVICE
= 0x60,
128 SMC_READ_SELECTED_MEMORY_DEVICE
= 0x61,
129 SMC_READ_MEMORY_DEVICE
= 0x62,
130 SMC_WRITE_SELECTED_MEMORY_DEVICE
= 0x63,
131 SMC_WRITE_MEMORY_DEVICE
= 0x64,
132 SMC_ERASE_SELECTED_MEMORY_DEVICE
= 0x65,
133 SMC_LOCK_UNLOCK_SELECTED_MEMORY
= 0x66,
134 SMC_COMPUTE_CRC16_OF_SELECTED_MEMORY_DEVICE
= 0x67,
135 SMC_COMPUTE_CRC16_OF_MEMORY_DEVICE
= 0x68,
136 SMC_FILL_MEMORY_DEVICE
= 0x6a,
137 SMC_QUERY_FIRMWARE_VERSION
= 0x6f,
138 SMC_RESET_DEVICE
= 0x70,
139 SMC_GET_ROLE_INFO
= 0x71,
140 SMC_GET_FLASH_AND_BOOT_VERSION
= 0x72,
141 SMC_GET_LOCAL_HA_SIGNAL_STATUS
= 0x73,
142 SMC_SELECT_HA_HOTSWAP_MODE
= 0x80,
143 SMC_GET_HA_HOTSWAP_SIGNAL_STATE
= 0x81,
144 SMC_SET_HA_HOTSWAP_SIGNAL_STATE
= 0x82,
145 SMC_NOTIFY_SMC_OF_HOST_HEALTH
= 0x83,
146 SMC_TURN_ON_OFF_BLUE_LED
= 0x84,
147 SMC_GET_EXECUTION_STATE
= 0x85,
148 SMC_GET_SMC_UPTIME
= 0x86,
149 SMC_ENUM_NOTIF
= 0x87,
150 SMC_IPMI_RESPONSE_NOTIF
= 0x88,
151 SMC_SET_INTERFACE_TIMEOUT
= 0x89,
152 SMC_GET_INTERFACE_TIMEOUT
= 0x8A,
153 SMC_SMC_LOCAL_EVENT_NOTIF
= 0x8B,
154 SMC_GET_DEVICE_TABLE_DATA
= 0x8C,
155 SMC_IPMI_MASTER_WR_RD_I2C
= 0x90,
156 SMC_GET_SMC_SELF_TEST_RESULT
= 0xA0,
157 SMC_READ_SMC_PLD_REGISTER
= 0xA1,
158 SMC_WRITE_SMC_PLD_REGISTER
= 0xA2,
160 SMC_SET_CPCI_INTMASK
= 0xC1,
161 SMC_GET_CPCI_INTMASK
= 0xC2,
162 SMC_EEPROM_WRITE
= 0xC3,
163 SMC_EEPROM_READ
= 0xC4,
164 SMC_SET_STATE
= 0xDE,
165 SMC_GET_STATE
= 0xDF,
166 SMC_SET_DHCP_CLIENT_ID
= 0xE1,
167 SMC_GET_DHCP_CLIENT_ID
= 0xE2,
168 SMC_DEV_SDR_REPOSITORY_RESERVE
= 0xE3,
169 SMC_FRU_INVENTORY_AREA_INFO_GET
= 0xE4,
170 SMC_SET_BANNER
= 0xE5,
171 SMC_GET_BANNER
= 0xE6,
172 SMC_SEND_ASYNC_SEL_CMD_TO_HOST
= 0xE7,
173 SMC_MASTER_WR_RD_I2C_2
= 0xE9,
174 SMC_GET_BUFFER_BLOCK_ALLOC_TABLE
= 0xEA,
175 SMC_GET_BUFFER_ALLOC_TABLE
= 0xEB,
177 SMC_GET_PORT_VALUE
= 0xED,
178 SMC_GET_BUFFER_DATA
= 0xEE,
179 SMC_GET_PCB_DATA
= 0xEF,
180 SMC_GET_PCB_BLOCK_ALLOC_TABLE
= 0xF0,
181 SMC_GET_PCB_TABLE
= 0xF1,
182 SMC_DEVICE_SDR_INFO_GET
= 0xF2,
183 SMC_DEVICE_SDR_GET
= 0xF3,
184 SMC_SENSOR_EVENT_ENABLE_GET
= 0xF4,
185 SMC_SENSOR_EVENT_ENABLE_SET
= 0xF5,
186 SMC_GET_CONFIG_BLOCK
= 0xF8,
187 SMC_SET_CONFIG_BLOCK
= 0xF9,
188 SMC_SET_VOLTAGE
= 0xFB,
189 SMC_SENSOR_READING_GET
= 0xFC,
190 SMC_SENSOR_THRESHOLD_GET
= 0xFD,
191 SMC_SENSOR_THRESHOLD_SET
= 0xFE,
192 SMC_CND_OF_CMD_MARKER
= 0xFF
196 SMC_GET_CHASSIS_STATUS
= 0x01,
197 SMC_CHASSIS_CONTROL
= 0x02,
198 SMC_GET_POH_COUNTER
= 0x0F
199 } smc_chassis_command_t
;
202 SMC_SET_EVENT_RECEIVER
= 0x00,
203 SMC_GET_EVENT_RECEIVER
= 0x01,
204 SMC_PLATFORM_EVENT_MESSAGE
= 0x02
205 } smc_event_command_t
;
208 SMC_GET_SEL_INFO
= 0x40,
209 SMC_GET_SEL_ALLOCATION_INFO
= 0x41,
210 SMC_RESERVE_SEL
= 0x42,
211 SMC_GET_SEL_ENTRY
= 0x43,
212 SMC_ADD_SEL_ENTRY
= 0x44,
213 SMC_PARTIAL_ADD_SEL_ENTRY
= 0x45,
214 SMC_DELETE_SEL_ENTRY
= 0x46,
215 SMC_CLEAR_SEL
= 0x47,
216 SMC_GET_SEL_TIME
= 0x48,
217 SMC_SET_SEL_TIME
= 0x49
221 SMC_GET_SDR_REPOSITORY_INFO
= 0x20,
222 SMC_GET_SDR_REPOSITORY_ALLOCATION_INFO
= 0x21,
223 SMC_RESERVE_SDR_REPOSITORY
= 0x22,
226 SMC_PARTIAL_ADD_SDR
= 0x25,
227 SMC_DELETE_SDR
= 0x26,
228 SMC_CLEAR_SDR_REPOSITORY
= 0x27,
229 SMC_GET_SDR_REPOSITORY_TIME
= 0x28,
230 SMC_SET_SDR_REPOSITORY_TIME
= 0x29,
231 SMC_ENTER_SDR_REPOSITORY_UPDATE_MODE
= 0x2A,
232 SMC_EXIT_SDR_REPOSITORY_UPDATE_MODE
= 0x2B,
233 SMC_RUN_INITIALIZATION_AGENT
= 0x2C
234 } smc_sdr_repository_command_t
;
237 SMC_GET_FRU_INVENTORY_AREA_INFO
= 0x10,
238 SMC_READ_FRU_INVENTORY_DATA
= 0x11,
239 SMC_WRITE_FRU_INVENTORY_DATA
= 0x12
240 } smc_fru_inventory_device_command_t
;
243 SMC_GET_DEVICE_SDR_INFO
= 0x20,
244 SMC_GET_DEVICE_SDR
= 0x21,
245 SMC_RESERVE_DEVICE_SDR_REPOSITORY
= 0x22,
246 SMC_GET_SENSOR_READING_FACTORS
= 0x23,
247 SMC_SET_SENSOR_HYSTERESIS
= 0x24,
248 SMC_GET_SENSOR_HYSTERESIS
= 0x25,
249 SMC_SET_SENSOR_THRESHOLD
= 0x26,
250 SMC_GET_SENSOR_THRESHOLD
= 0x27,
251 SMC_SET_SENSOR_EVENT_ENABLE
= 0x28,
252 SMC_GET_SENSOR_EVENT_ENABLE
= 0x29,
253 SMC_REARM_SENSOR_EVENTS
= 0x2A,
254 SMC_GET_SENSOR_EVENT_STATUS
= 0x2B,
256 SMC_GET_SENSOR_READING
= 0x2D,
257 SMC_SET_SENSOR_TYPE
= 0x2E,
258 SMC_GET_SENSOR_TYPE
= 0x2F
259 } smc_sensor_device_command_t
;
265 #endif /* _SYS_SMC_COMMANDS_H */