1 |
3 |
xianfeng |
*******************************************************************************
|
2 |
|
|
** ARECA FIRMWARE SPEC
|
3 |
|
|
*******************************************************************************
|
4 |
|
|
** Usage of IOP331 adapter
|
5 |
|
|
** (All In/Out is in IOP331's view)
|
6 |
|
|
** 1. Message 0 --> InitThread message and return code
|
7 |
|
|
** 2. Doorbell is used for RS-232 emulation
|
8 |
|
|
** inDoorBell : bit0 -- data in ready
|
9 |
|
|
** (DRIVER DATA WRITE OK)
|
10 |
|
|
** bit1 -- data out has been read
|
11 |
|
|
** (DRIVER DATA READ OK)
|
12 |
|
|
** outDooeBell: bit0 -- data out ready
|
13 |
|
|
** (IOP331 DATA WRITE OK)
|
14 |
|
|
** bit1 -- data in has been read
|
15 |
|
|
** (IOP331 DATA READ OK)
|
16 |
|
|
** 3. Index Memory Usage
|
17 |
|
|
** offset 0xf00 : for RS232 out (request buffer)
|
18 |
|
|
** offset 0xe00 : for RS232 in (scratch buffer)
|
19 |
|
|
** offset 0xa00 : for inbound message code message_rwbuffer
|
20 |
|
|
** (driver send to IOP331)
|
21 |
|
|
** offset 0xa00 : for outbound message code message_rwbuffer
|
22 |
|
|
** (IOP331 send to driver)
|
23 |
|
|
** 4. RS-232 emulation
|
24 |
|
|
** Currently 128 byte buffer is used
|
25 |
|
|
** 1st uint32_t : Data length (1--124)
|
26 |
|
|
** Byte 4--127 : Max 124 bytes of data
|
27 |
|
|
** 5. PostQ
|
28 |
|
|
** All SCSI Command must be sent through postQ:
|
29 |
|
|
** (inbound queue port) Request frame must be 32 bytes aligned
|
30 |
|
|
** #bit27--bit31 => flag for post ccb
|
31 |
|
|
** #bit0--bit26 => real address (bit27--bit31) of post arcmsr_cdb
|
32 |
|
|
** bit31 :
|
33 |
|
|
** 0 : 256 bytes frame
|
34 |
|
|
** 1 : 512 bytes frame
|
35 |
|
|
** bit30 :
|
36 |
|
|
** 0 : normal request
|
37 |
|
|
** 1 : BIOS request
|
38 |
|
|
** bit29 : reserved
|
39 |
|
|
** bit28 : reserved
|
40 |
|
|
** bit27 : reserved
|
41 |
|
|
** ---------------------------------------------------------------------------
|
42 |
|
|
** (outbount queue port) Request reply
|
43 |
|
|
** #bit27--bit31
|
44 |
|
|
** => flag for reply
|
45 |
|
|
** #bit0--bit26
|
46 |
|
|
** => real address (bit27--bit31) of reply arcmsr_cdb
|
47 |
|
|
** bit31 : must be 0 (for this type of reply)
|
48 |
|
|
** bit30 : reserved for BIOS handshake
|
49 |
|
|
** bit29 : reserved
|
50 |
|
|
** bit28 :
|
51 |
|
|
** 0 : no error, ignore AdapStatus/DevStatus/SenseData
|
52 |
|
|
** 1 : Error, error code in AdapStatus/DevStatus/SenseData
|
53 |
|
|
** bit27 : reserved
|
54 |
|
|
** 6. BIOS request
|
55 |
|
|
** All BIOS request is the same with request from PostQ
|
56 |
|
|
** Except :
|
57 |
|
|
** Request frame is sent from configuration space
|
58 |
|
|
** offset: 0x78 : Request Frame (bit30 == 1)
|
59 |
|
|
** offset: 0x18 : writeonly to generate
|
60 |
|
|
** IRQ to IOP331
|
61 |
|
|
** Completion of request:
|
62 |
|
|
** (bit30 == 0, bit28==err flag)
|
63 |
|
|
** 7. Definition of SGL entry (structure)
|
64 |
|
|
** 8. Message1 Out - Diag Status Code (????)
|
65 |
|
|
** 9. Message0 message code :
|
66 |
|
|
** 0x00 : NOP
|
67 |
|
|
** 0x01 : Get Config
|
68 |
|
|
** ->offset 0xa00 :for outbound message code message_rwbuffer
|
69 |
|
|
** (IOP331 send to driver)
|
70 |
|
|
** Signature 0x87974060(4)
|
71 |
|
|
** Request len 0x00000200(4)
|
72 |
|
|
** numbers of queue 0x00000100(4)
|
73 |
|
|
** SDRAM Size 0x00000100(4)-->256 MB
|
74 |
|
|
** IDE Channels 0x00000008(4)
|
75 |
|
|
** vendor 40 bytes char
|
76 |
|
|
** model 8 bytes char
|
77 |
|
|
** FirmVer 16 bytes char
|
78 |
|
|
** Device Map 16 bytes char
|
79 |
|
|
** FirmwareVersion DWORD <== Added for checking of
|
80 |
|
|
** new firmware capability
|
81 |
|
|
** 0x02 : Set Config
|
82 |
|
|
** ->offset 0xa00 :for inbound message code message_rwbuffer
|
83 |
|
|
** (driver send to IOP331)
|
84 |
|
|
** Signature 0x87974063(4)
|
85 |
|
|
** UPPER32 of Request Frame (4)-->Driver Only
|
86 |
|
|
** 0x03 : Reset (Abort all queued Command)
|
87 |
|
|
** 0x04 : Stop Background Activity
|
88 |
|
|
** 0x05 : Flush Cache
|
89 |
|
|
** 0x06 : Start Background Activity
|
90 |
|
|
** (re-start if background is halted)
|
91 |
|
|
** 0x07 : Check If Host Command Pending
|
92 |
|
|
** (Novell May Need This Function)
|
93 |
|
|
** 0x08 : Set controller time
|
94 |
|
|
** ->offset 0xa00 : for inbound message code message_rwbuffer
|
95 |
|
|
** (driver to IOP331)
|
96 |
|
|
** byte 0 : 0xaa <-- signature
|
97 |
|
|
** byte 1 : 0x55 <-- signature
|
98 |
|
|
** byte 2 : year (04)
|
99 |
|
|
** byte 3 : month (1..12)
|
100 |
|
|
** byte 4 : date (1..31)
|
101 |
|
|
** byte 5 : hour (0..23)
|
102 |
|
|
** byte 6 : minute (0..59)
|
103 |
|
|
** byte 7 : second (0..59)
|
104 |
|
|
*******************************************************************************
|
105 |
|
|
*******************************************************************************
|
106 |
|
|
** RS-232 Interface for Areca Raid Controller
|
107 |
|
|
** The low level command interface is exclusive with VT100 terminal
|
108 |
|
|
** --------------------------------------------------------------------
|
109 |
|
|
** 1. Sequence of command execution
|
110 |
|
|
** --------------------------------------------------------------------
|
111 |
|
|
** (A) Header : 3 bytes sequence (0x5E, 0x01, 0x61)
|
112 |
|
|
** (B) Command block : variable length of data including length,
|
113 |
|
|
** command code, data and checksum byte
|
114 |
|
|
** (C) Return data : variable length of data
|
115 |
|
|
** --------------------------------------------------------------------
|
116 |
|
|
** 2. Command block
|
117 |
|
|
** --------------------------------------------------------------------
|
118 |
|
|
** (A) 1st byte : command block length (low byte)
|
119 |
|
|
** (B) 2nd byte : command block length (high byte)
|
120 |
|
|
** note ..command block length shouldn't > 2040 bytes,
|
121 |
|
|
** length excludes these two bytes
|
122 |
|
|
** (C) 3rd byte : command code
|
123 |
|
|
** (D) 4th and following bytes : variable length data bytes
|
124 |
|
|
** depends on command code
|
125 |
|
|
** (E) last byte : checksum byte (sum of 1st byte until last data byte)
|
126 |
|
|
** --------------------------------------------------------------------
|
127 |
|
|
** 3. Command code and associated data
|
128 |
|
|
** --------------------------------------------------------------------
|
129 |
|
|
** The following are command code defined in raid controller Command
|
130 |
|
|
** code 0x10--0x1? are used for system level management,
|
131 |
|
|
** no password checking is needed and should be implemented in separate
|
132 |
|
|
** well controlled utility and not for end user access.
|
133 |
|
|
** Command code 0x20--0x?? always check the password,
|
134 |
|
|
** password must be entered to enable these command.
|
135 |
|
|
** enum
|
136 |
|
|
** {
|
137 |
|
|
** GUI_SET_SERIAL=0x10,
|
138 |
|
|
** GUI_SET_VENDOR,
|
139 |
|
|
** GUI_SET_MODEL,
|
140 |
|
|
** GUI_IDENTIFY,
|
141 |
|
|
** GUI_CHECK_PASSWORD,
|
142 |
|
|
** GUI_LOGOUT,
|
143 |
|
|
** GUI_HTTP,
|
144 |
|
|
** GUI_SET_ETHERNET_ADDR,
|
145 |
|
|
** GUI_SET_LOGO,
|
146 |
|
|
** GUI_POLL_EVENT,
|
147 |
|
|
** GUI_GET_EVENT,
|
148 |
|
|
** GUI_GET_HW_MONITOR,
|
149 |
|
|
** // GUI_QUICK_CREATE=0x20, (function removed)
|
150 |
|
|
** GUI_GET_INFO_R=0x20,
|
151 |
|
|
** GUI_GET_INFO_V,
|
152 |
|
|
** GUI_GET_INFO_P,
|
153 |
|
|
** GUI_GET_INFO_S,
|
154 |
|
|
** GUI_CLEAR_EVENT,
|
155 |
|
|
** GUI_MUTE_BEEPER=0x30,
|
156 |
|
|
** GUI_BEEPER_SETTING,
|
157 |
|
|
** GUI_SET_PASSWORD,
|
158 |
|
|
** GUI_HOST_INTERFACE_MODE,
|
159 |
|
|
** GUI_REBUILD_PRIORITY,
|
160 |
|
|
** GUI_MAX_ATA_MODE,
|
161 |
|
|
** GUI_RESET_CONTROLLER,
|
162 |
|
|
** GUI_COM_PORT_SETTING,
|
163 |
|
|
** GUI_NO_OPERATION,
|
164 |
|
|
** GUI_DHCP_IP,
|
165 |
|
|
** GUI_CREATE_PASS_THROUGH=0x40,
|
166 |
|
|
** GUI_MODIFY_PASS_THROUGH,
|
167 |
|
|
** GUI_DELETE_PASS_THROUGH,
|
168 |
|
|
** GUI_IDENTIFY_DEVICE,
|
169 |
|
|
** GUI_CREATE_RAIDSET=0x50,
|
170 |
|
|
** GUI_DELETE_RAIDSET,
|
171 |
|
|
** GUI_EXPAND_RAIDSET,
|
172 |
|
|
** GUI_ACTIVATE_RAIDSET,
|
173 |
|
|
** GUI_CREATE_HOT_SPARE,
|
174 |
|
|
** GUI_DELETE_HOT_SPARE,
|
175 |
|
|
** GUI_CREATE_VOLUME=0x60,
|
176 |
|
|
** GUI_MODIFY_VOLUME,
|
177 |
|
|
** GUI_DELETE_VOLUME,
|
178 |
|
|
** GUI_START_CHECK_VOLUME,
|
179 |
|
|
** GUI_STOP_CHECK_VOLUME
|
180 |
|
|
** };
|
181 |
|
|
** Command description :
|
182 |
|
|
** GUI_SET_SERIAL : Set the controller serial#
|
183 |
|
|
** byte 0,1 : length
|
184 |
|
|
** byte 2 : command code 0x10
|
185 |
|
|
** byte 3 : password length (should be 0x0f)
|
186 |
|
|
** byte 4-0x13 : should be "ArEcATecHnoLogY"
|
187 |
|
|
** byte 0x14--0x23 : Serial number string (must be 16 bytes)
|
188 |
|
|
** GUI_SET_VENDOR : Set vendor string for the controller
|
189 |
|
|
** byte 0,1 : length
|
190 |
|
|
** byte 2 : command code 0x11
|
191 |
|
|
** byte 3 : password length (should be 0x08)
|
192 |
|
|
** byte 4-0x13 : should be "ArEcAvAr"
|
193 |
|
|
** byte 0x14--0x3B : vendor string (must be 40 bytes)
|
194 |
|
|
** GUI_SET_MODEL : Set the model name of the controller
|
195 |
|
|
** byte 0,1 : length
|
196 |
|
|
** byte 2 : command code 0x12
|
197 |
|
|
** byte 3 : password length (should be 0x08)
|
198 |
|
|
** byte 4-0x13 : should be "ArEcAvAr"
|
199 |
|
|
** byte 0x14--0x1B : model string (must be 8 bytes)
|
200 |
|
|
** GUI_IDENTIFY : Identify device
|
201 |
|
|
** byte 0,1 : length
|
202 |
|
|
** byte 2 : command code 0x13
|
203 |
|
|
** return "Areca RAID Subsystem "
|
204 |
|
|
** GUI_CHECK_PASSWORD : Verify password
|
205 |
|
|
** byte 0,1 : length
|
206 |
|
|
** byte 2 : command code 0x14
|
207 |
|
|
** byte 3 : password length
|
208 |
|
|
** byte 4-0x?? : user password to be checked
|
209 |
|
|
** GUI_LOGOUT : Logout GUI (force password checking on next command)
|
210 |
|
|
** byte 0,1 : length
|
211 |
|
|
** byte 2 : command code 0x15
|
212 |
|
|
** GUI_HTTP : HTTP interface (reserved for Http proxy service)(0x16)
|
213 |
|
|
**
|
214 |
|
|
** GUI_SET_ETHERNET_ADDR : Set the ethernet MAC address
|
215 |
|
|
** byte 0,1 : length
|
216 |
|
|
** byte 2 : command code 0x17
|
217 |
|
|
** byte 3 : password length (should be 0x08)
|
218 |
|
|
** byte 4-0x13 : should be "ArEcAvAr"
|
219 |
|
|
** byte 0x14--0x19 : Ethernet MAC address (must be 6 bytes)
|
220 |
|
|
** GUI_SET_LOGO : Set logo in HTTP
|
221 |
|
|
** byte 0,1 : length
|
222 |
|
|
** byte 2 : command code 0x18
|
223 |
|
|
** byte 3 : Page# (0/1/2/3) (0xff --> clear OEM logo)
|
224 |
|
|
** byte 4/5/6/7 : 0x55/0xaa/0xa5/0x5a
|
225 |
|
|
** byte 8 : TITLE.JPG data (each page must be 2000 bytes)
|
226 |
|
|
** note page0 1st 2 byte must be
|
227 |
|
|
** actual length of the JPG file
|
228 |
|
|
** GUI_POLL_EVENT : Poll If Event Log Changed
|
229 |
|
|
** byte 0,1 : length
|
230 |
|
|
** byte 2 : command code 0x19
|
231 |
|
|
** GUI_GET_EVENT : Read Event
|
232 |
|
|
** byte 0,1 : length
|
233 |
|
|
** byte 2 : command code 0x1a
|
234 |
|
|
** byte 3 : Event Page (0:1st page/1/2/3:last page)
|
235 |
|
|
** GUI_GET_HW_MONITOR : Get HW monitor data
|
236 |
|
|
** byte 0,1 : length
|
237 |
|
|
** byte 2 : command code 0x1b
|
238 |
|
|
** byte 3 : # of FANs(example 2)
|
239 |
|
|
** byte 4 : # of Voltage sensor(example 3)
|
240 |
|
|
** byte 5 : # of temperature sensor(example 2)
|
241 |
|
|
** byte 6 : # of power
|
242 |
|
|
** byte 7/8 : Fan#0 (RPM)
|
243 |
|
|
** byte 9/10 : Fan#1
|
244 |
|
|
** byte 11/12 : Voltage#0 original value in *1000
|
245 |
|
|
** byte 13/14 : Voltage#0 value
|
246 |
|
|
** byte 15/16 : Voltage#1 org
|
247 |
|
|
** byte 17/18 : Voltage#1
|
248 |
|
|
** byte 19/20 : Voltage#2 org
|
249 |
|
|
** byte 21/22 : Voltage#2
|
250 |
|
|
** byte 23 : Temp#0
|
251 |
|
|
** byte 24 : Temp#1
|
252 |
|
|
** byte 25 : Power indicator (bit0 : power#0,
|
253 |
|
|
** bit1 : power#1)
|
254 |
|
|
** byte 26 : UPS indicator
|
255 |
|
|
** GUI_QUICK_CREATE : Quick create raid/volume set
|
256 |
|
|
** byte 0,1 : length
|
257 |
|
|
** byte 2 : command code 0x20
|
258 |
|
|
** byte 3/4/5/6 : raw capacity
|
259 |
|
|
** byte 7 : raid level
|
260 |
|
|
** byte 8 : stripe size
|
261 |
|
|
** byte 9 : spare
|
262 |
|
|
** byte 10/11/12/13: device mask (the devices to create raid/volume)
|
263 |
|
|
** This function is removed, application like
|
264 |
|
|
** to implement quick create function
|
265 |
|
|
** need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.
|
266 |
|
|
** GUI_GET_INFO_R : Get Raid Set Information
|
267 |
|
|
** byte 0,1 : length
|
268 |
|
|
** byte 2 : command code 0x20
|
269 |
|
|
** byte 3 : raidset#
|
270 |
|
|
** typedef struct sGUI_RAIDSET
|
271 |
|
|
** {
|
272 |
|
|
** BYTE grsRaidSetName[16];
|
273 |
|
|
** DWORD grsCapacity;
|
274 |
|
|
** DWORD grsCapacityX;
|
275 |
|
|
** DWORD grsFailMask;
|
276 |
|
|
** BYTE grsDevArray[32];
|
277 |
|
|
** BYTE grsMemberDevices;
|
278 |
|
|
** BYTE grsNewMemberDevices;
|
279 |
|
|
** BYTE grsRaidState;
|
280 |
|
|
** BYTE grsVolumes;
|
281 |
|
|
** BYTE grsVolumeList[16];
|
282 |
|
|
** BYTE grsRes1;
|
283 |
|
|
** BYTE grsRes2;
|
284 |
|
|
** BYTE grsRes3;
|
285 |
|
|
** BYTE grsFreeSegments;
|
286 |
|
|
** DWORD grsRawStripes[8];
|
287 |
|
|
** DWORD grsRes4;
|
288 |
|
|
** DWORD grsRes5; // Total to 128 bytes
|
289 |
|
|
** DWORD grsRes6; // Total to 128 bytes
|
290 |
|
|
** } sGUI_RAIDSET, *pGUI_RAIDSET;
|
291 |
|
|
** GUI_GET_INFO_V : Get Volume Set Information
|
292 |
|
|
** byte 0,1 : length
|
293 |
|
|
** byte 2 : command code 0x21
|
294 |
|
|
** byte 3 : volumeset#
|
295 |
|
|
** typedef struct sGUI_VOLUMESET
|
296 |
|
|
** {
|
297 |
|
|
** BYTE gvsVolumeName[16]; // 16
|
298 |
|
|
** DWORD gvsCapacity;
|
299 |
|
|
** DWORD gvsCapacityX;
|
300 |
|
|
** DWORD gvsFailMask;
|
301 |
|
|
** DWORD gvsStripeSize;
|
302 |
|
|
** DWORD gvsNewFailMask;
|
303 |
|
|
** DWORD gvsNewStripeSize;
|
304 |
|
|
** DWORD gvsVolumeStatus;
|
305 |
|
|
** DWORD gvsProgress; // 32
|
306 |
|
|
** sSCSI_ATTR gvsScsi;
|
307 |
|
|
** BYTE gvsMemberDisks;
|
308 |
|
|
** BYTE gvsRaidLevel; // 8
|
309 |
|
|
** BYTE gvsNewMemberDisks;
|
310 |
|
|
** BYTE gvsNewRaidLevel;
|
311 |
|
|
** BYTE gvsRaidSetNumber;
|
312 |
|
|
** BYTE gvsRes0; // 4
|
313 |
|
|
** BYTE gvsRes1[4]; // 64 bytes
|
314 |
|
|
** } sGUI_VOLUMESET, *pGUI_VOLUMESET;
|
315 |
|
|
** GUI_GET_INFO_P : Get Physical Drive Information
|
316 |
|
|
** byte 0,1 : length
|
317 |
|
|
** byte 2 : command code 0x22
|
318 |
|
|
** byte 3 : drive # (from 0 to max-channels - 1)
|
319 |
|
|
** typedef struct sGUI_PHY_DRV
|
320 |
|
|
** {
|
321 |
|
|
** BYTE gpdModelName[40];
|
322 |
|
|
** BYTE gpdSerialNumber[20];
|
323 |
|
|
** BYTE gpdFirmRev[8];
|
324 |
|
|
** DWORD gpdCapacity;
|
325 |
|
|
** DWORD gpdCapacityX; // Reserved for expansion
|
326 |
|
|
** BYTE gpdDeviceState;
|
327 |
|
|
** BYTE gpdPioMode;
|
328 |
|
|
** BYTE gpdCurrentUdmaMode;
|
329 |
|
|
** BYTE gpdUdmaMode;
|
330 |
|
|
** BYTE gpdDriveSelect;
|
331 |
|
|
** BYTE gpdRaidNumber; // 0xff if not belongs to a raid set
|
332 |
|
|
** sSCSI_ATTR gpdScsi;
|
333 |
|
|
** BYTE gpdReserved[40]; // Total to 128 bytes
|
334 |
|
|
** } sGUI_PHY_DRV, *pGUI_PHY_DRV;
|
335 |
|
|
** GUI_GET_INFO_S : Get System Information
|
336 |
|
|
** byte 0,1 : length
|
337 |
|
|
** byte 2 : command code 0x23
|
338 |
|
|
** typedef struct sCOM_ATTR
|
339 |
|
|
** {
|
340 |
|
|
** BYTE comBaudRate;
|
341 |
|
|
** BYTE comDataBits;
|
342 |
|
|
** BYTE comStopBits;
|
343 |
|
|
** BYTE comParity;
|
344 |
|
|
** BYTE comFlowControl;
|
345 |
|
|
** } sCOM_ATTR, *pCOM_ATTR;
|
346 |
|
|
** typedef struct sSYSTEM_INFO
|
347 |
|
|
** {
|
348 |
|
|
** BYTE gsiVendorName[40];
|
349 |
|
|
** BYTE gsiSerialNumber[16];
|
350 |
|
|
** BYTE gsiFirmVersion[16];
|
351 |
|
|
** BYTE gsiBootVersion[16];
|
352 |
|
|
** BYTE gsiMbVersion[16];
|
353 |
|
|
** BYTE gsiModelName[8];
|
354 |
|
|
** BYTE gsiLocalIp[4];
|
355 |
|
|
** BYTE gsiCurrentIp[4];
|
356 |
|
|
** DWORD gsiTimeTick;
|
357 |
|
|
** DWORD gsiCpuSpeed;
|
358 |
|
|
** DWORD gsiICache;
|
359 |
|
|
** DWORD gsiDCache;
|
360 |
|
|
** DWORD gsiScache;
|
361 |
|
|
** DWORD gsiMemorySize;
|
362 |
|
|
** DWORD gsiMemorySpeed;
|
363 |
|
|
** DWORD gsiEvents;
|
364 |
|
|
** BYTE gsiMacAddress[6];
|
365 |
|
|
** BYTE gsiDhcp;
|
366 |
|
|
** BYTE gsiBeeper;
|
367 |
|
|
** BYTE gsiChannelUsage;
|
368 |
|
|
** BYTE gsiMaxAtaMode;
|
369 |
|
|
** BYTE gsiSdramEcc; // 1:if ECC enabled
|
370 |
|
|
** BYTE gsiRebuildPriority;
|
371 |
|
|
** sCOM_ATTR gsiComA; // 5 bytes
|
372 |
|
|
** sCOM_ATTR gsiComB; // 5 bytes
|
373 |
|
|
** BYTE gsiIdeChannels;
|
374 |
|
|
** BYTE gsiScsiHostChannels;
|
375 |
|
|
** BYTE gsiIdeHostChannels;
|
376 |
|
|
** BYTE gsiMaxVolumeSet;
|
377 |
|
|
** BYTE gsiMaxRaidSet;
|
378 |
|
|
** BYTE gsiEtherPort; // 1:if ether net port supported
|
379 |
|
|
** BYTE gsiRaid6Engine; // 1:Raid6 engine supported
|
380 |
|
|
** BYTE gsiRes[75];
|
381 |
|
|
** } sSYSTEM_INFO, *pSYSTEM_INFO;
|
382 |
|
|
** GUI_CLEAR_EVENT : Clear System Event
|
383 |
|
|
** byte 0,1 : length
|
384 |
|
|
** byte 2 : command code 0x24
|
385 |
|
|
** GUI_MUTE_BEEPER : Mute current beeper
|
386 |
|
|
** byte 0,1 : length
|
387 |
|
|
** byte 2 : command code 0x30
|
388 |
|
|
** GUI_BEEPER_SETTING : Disable beeper
|
389 |
|
|
** byte 0,1 : length
|
390 |
|
|
** byte 2 : command code 0x31
|
391 |
|
|
** byte 3 : 0->disable, 1->enable
|
392 |
|
|
** GUI_SET_PASSWORD : Change password
|
393 |
|
|
** byte 0,1 : length
|
394 |
|
|
** byte 2 : command code 0x32
|
395 |
|
|
** byte 3 : pass word length ( must <= 15 )
|
396 |
|
|
** byte 4 : password (must be alpha-numerical)
|
397 |
|
|
** GUI_HOST_INTERFACE_MODE : Set host interface mode
|
398 |
|
|
** byte 0,1 : length
|
399 |
|
|
** byte 2 : command code 0x33
|
400 |
|
|
** byte 3 : 0->Independent, 1->cluster
|
401 |
|
|
** GUI_REBUILD_PRIORITY : Set rebuild priority
|
402 |
|
|
** byte 0,1 : length
|
403 |
|
|
** byte 2 : command code 0x34
|
404 |
|
|
** byte 3 : 0/1/2/3 (low->high)
|
405 |
|
|
** GUI_MAX_ATA_MODE : Set maximum ATA mode to be used
|
406 |
|
|
** byte 0,1 : length
|
407 |
|
|
** byte 2 : command code 0x35
|
408 |
|
|
** byte 3 : 0/1/2/3 (133/100/66/33)
|
409 |
|
|
** GUI_RESET_CONTROLLER : Reset Controller
|
410 |
|
|
** byte 0,1 : length
|
411 |
|
|
** byte 2 : command code 0x36
|
412 |
|
|
** *Response with VT100 screen (discard it)
|
413 |
|
|
** GUI_COM_PORT_SETTING : COM port setting
|
414 |
|
|
** byte 0,1 : length
|
415 |
|
|
** byte 2 : command code 0x37
|
416 |
|
|
** byte 3 : 0->COMA (term port),
|
417 |
|
|
** 1->COMB (debug port)
|
418 |
|
|
** byte 4 : 0/1/2/3/4/5/6/7
|
419 |
|
|
** (1200/2400/4800/9600/19200/38400/57600/115200)
|
420 |
|
|
** byte 5 : data bit
|
421 |
|
|
** (0:7 bit, 1:8 bit : must be 8 bit)
|
422 |
|
|
** byte 6 : stop bit (0:1, 1:2 stop bits)
|
423 |
|
|
** byte 7 : parity (0:none, 1:off, 2:even)
|
424 |
|
|
** byte 8 : flow control
|
425 |
|
|
** (0:none, 1:xon/xoff, 2:hardware => must use none)
|
426 |
|
|
** GUI_NO_OPERATION : No operation
|
427 |
|
|
** byte 0,1 : length
|
428 |
|
|
** byte 2 : command code 0x38
|
429 |
|
|
** GUI_DHCP_IP : Set DHCP option and local IP address
|
430 |
|
|
** byte 0,1 : length
|
431 |
|
|
** byte 2 : command code 0x39
|
432 |
|
|
** byte 3 : 0:dhcp disabled, 1:dhcp enabled
|
433 |
|
|
** byte 4/5/6/7 : IP address
|
434 |
|
|
** GUI_CREATE_PASS_THROUGH : Create pass through disk
|
435 |
|
|
** byte 0,1 : length
|
436 |
|
|
** byte 2 : command code 0x40
|
437 |
|
|
** byte 3 : device #
|
438 |
|
|
** byte 4 : scsi channel (0/1)
|
439 |
|
|
** byte 5 : scsi id (0-->15)
|
440 |
|
|
** byte 6 : scsi lun (0-->7)
|
441 |
|
|
** byte 7 : tagged queue (1 : enabled)
|
442 |
|
|
** byte 8 : cache mode (1 : enabled)
|
443 |
|
|
** byte 9 : max speed (0/1/2/3/4,
|
444 |
|
|
** async/20/40/80/160 for scsi)
|
445 |
|
|
** (0/1/2/3/4, 33/66/100/133/150 for ide )
|
446 |
|
|
** GUI_MODIFY_PASS_THROUGH : Modify pass through disk
|
447 |
|
|
** byte 0,1 : length
|
448 |
|
|
** byte 2 : command code 0x41
|
449 |
|
|
** byte 3 : device #
|
450 |
|
|
** byte 4 : scsi channel (0/1)
|
451 |
|
|
** byte 5 : scsi id (0-->15)
|
452 |
|
|
** byte 6 : scsi lun (0-->7)
|
453 |
|
|
** byte 7 : tagged queue (1 : enabled)
|
454 |
|
|
** byte 8 : cache mode (1 : enabled)
|
455 |
|
|
** byte 9 : max speed (0/1/2/3/4,
|
456 |
|
|
** async/20/40/80/160 for scsi)
|
457 |
|
|
** (0/1/2/3/4, 33/66/100/133/150 for ide )
|
458 |
|
|
** GUI_DELETE_PASS_THROUGH : Delete pass through disk
|
459 |
|
|
** byte 0,1 : length
|
460 |
|
|
** byte 2 : command code 0x42
|
461 |
|
|
** byte 3 : device# to be deleted
|
462 |
|
|
** GUI_IDENTIFY_DEVICE : Identify Device
|
463 |
|
|
** byte 0,1 : length
|
464 |
|
|
** byte 2 : command code 0x43
|
465 |
|
|
** byte 3 : Flash Method
|
466 |
|
|
** (0:flash selected, 1:flash not selected)
|
467 |
|
|
** byte 4/5/6/7 : IDE device mask to be flashed
|
468 |
|
|
** note .... no response data available
|
469 |
|
|
** GUI_CREATE_RAIDSET : Create Raid Set
|
470 |
|
|
** byte 0,1 : length
|
471 |
|
|
** byte 2 : command code 0x50
|
472 |
|
|
** byte 3/4/5/6 : device mask
|
473 |
|
|
** byte 7-22 : raidset name (if byte 7 == 0:use default)
|
474 |
|
|
** GUI_DELETE_RAIDSET : Delete Raid Set
|
475 |
|
|
** byte 0,1 : length
|
476 |
|
|
** byte 2 : command code 0x51
|
477 |
|
|
** byte 3 : raidset#
|
478 |
|
|
** GUI_EXPAND_RAIDSET : Expand Raid Set
|
479 |
|
|
** byte 0,1 : length
|
480 |
|
|
** byte 2 : command code 0x52
|
481 |
|
|
** byte 3 : raidset#
|
482 |
|
|
** byte 4/5/6/7 : device mask for expansion
|
483 |
|
|
** byte 8/9/10 : (8:0 no change, 1 change, 0xff:terminate,
|
484 |
|
|
** 9:new raid level,
|
485 |
|
|
** 10:new stripe size
|
486 |
|
|
** 0/1/2/3/4/5->4/8/16/32/64/128K )
|
487 |
|
|
** byte 11/12/13 : repeat for each volume in the raidset
|
488 |
|
|
** GUI_ACTIVATE_RAIDSET : Activate incomplete raid set
|
489 |
|
|
** byte 0,1 : length
|
490 |
|
|
** byte 2 : command code 0x53
|
491 |
|
|
** byte 3 : raidset#
|
492 |
|
|
** GUI_CREATE_HOT_SPARE : Create hot spare disk
|
493 |
|
|
** byte 0,1 : length
|
494 |
|
|
** byte 2 : command code 0x54
|
495 |
|
|
** byte 3/4/5/6 : device mask for hot spare creation
|
496 |
|
|
** GUI_DELETE_HOT_SPARE : Delete hot spare disk
|
497 |
|
|
** byte 0,1 : length
|
498 |
|
|
** byte 2 : command code 0x55
|
499 |
|
|
** byte 3/4/5/6 : device mask for hot spare deletion
|
500 |
|
|
** GUI_CREATE_VOLUME : Create volume set
|
501 |
|
|
** byte 0,1 : length
|
502 |
|
|
** byte 2 : command code 0x60
|
503 |
|
|
** byte 3 : raidset#
|
504 |
|
|
** byte 4-19 : volume set name
|
505 |
|
|
** (if byte4 == 0, use default)
|
506 |
|
|
** byte 20-27 : volume capacity (blocks)
|
507 |
|
|
** byte 28 : raid level
|
508 |
|
|
** byte 29 : stripe size
|
509 |
|
|
** (0/1/2/3/4/5->4/8/16/32/64/128K)
|
510 |
|
|
** byte 30 : channel
|
511 |
|
|
** byte 31 : ID
|
512 |
|
|
** byte 32 : LUN
|
513 |
|
|
** byte 33 : 1 enable tag
|
514 |
|
|
** byte 34 : 1 enable cache
|
515 |
|
|
** byte 35 : speed
|
516 |
|
|
** (0/1/2/3/4->async/20/40/80/160 for scsi)
|
517 |
|
|
** (0/1/2/3/4->33/66/100/133/150 for IDE )
|
518 |
|
|
** byte 36 : 1 to select quick init
|
519 |
|
|
**
|
520 |
|
|
** GUI_MODIFY_VOLUME : Modify volume Set
|
521 |
|
|
** byte 0,1 : length
|
522 |
|
|
** byte 2 : command code 0x61
|
523 |
|
|
** byte 3 : volumeset#
|
524 |
|
|
** byte 4-19 : new volume set name
|
525 |
|
|
** (if byte4 == 0, not change)
|
526 |
|
|
** byte 20-27 : new volume capacity (reserved)
|
527 |
|
|
** byte 28 : new raid level
|
528 |
|
|
** byte 29 : new stripe size
|
529 |
|
|
** (0/1/2/3/4/5->4/8/16/32/64/128K)
|
530 |
|
|
** byte 30 : new channel
|
531 |
|
|
** byte 31 : new ID
|
532 |
|
|
** byte 32 : new LUN
|
533 |
|
|
** byte 33 : 1 enable tag
|
534 |
|
|
** byte 34 : 1 enable cache
|
535 |
|
|
** byte 35 : speed
|
536 |
|
|
** (0/1/2/3/4->async/20/40/80/160 for scsi)
|
537 |
|
|
** (0/1/2/3/4->33/66/100/133/150 for IDE )
|
538 |
|
|
** GUI_DELETE_VOLUME : Delete volume set
|
539 |
|
|
** byte 0,1 : length
|
540 |
|
|
** byte 2 : command code 0x62
|
541 |
|
|
** byte 3 : volumeset#
|
542 |
|
|
** GUI_START_CHECK_VOLUME : Start volume consistency check
|
543 |
|
|
** byte 0,1 : length
|
544 |
|
|
** byte 2 : command code 0x63
|
545 |
|
|
** byte 3 : volumeset#
|
546 |
|
|
** GUI_STOP_CHECK_VOLUME : Stop volume consistency check
|
547 |
|
|
** byte 0,1 : length
|
548 |
|
|
** byte 2 : command code 0x64
|
549 |
|
|
** ---------------------------------------------------------------------
|
550 |
|
|
** 4. Returned data
|
551 |
|
|
** ---------------------------------------------------------------------
|
552 |
|
|
** (A) Header : 3 bytes sequence (0x5E, 0x01, 0x61)
|
553 |
|
|
** (B) Length : 2 bytes
|
554 |
|
|
** (low byte 1st, excludes length and checksum byte)
|
555 |
|
|
** (C) status or data :
|
556 |
|
|
** <1> If length == 1 ==> 1 byte status code
|
557 |
|
|
** #define GUI_OK 0x41
|
558 |
|
|
** #define GUI_RAIDSET_NOT_NORMAL 0x42
|
559 |
|
|
** #define GUI_VOLUMESET_NOT_NORMAL 0x43
|
560 |
|
|
** #define GUI_NO_RAIDSET 0x44
|
561 |
|
|
** #define GUI_NO_VOLUMESET 0x45
|
562 |
|
|
** #define GUI_NO_PHYSICAL_DRIVE 0x46
|
563 |
|
|
** #define GUI_PARAMETER_ERROR 0x47
|
564 |
|
|
** #define GUI_UNSUPPORTED_COMMAND 0x48
|
565 |
|
|
** #define GUI_DISK_CONFIG_CHANGED 0x49
|
566 |
|
|
** #define GUI_INVALID_PASSWORD 0x4a
|
567 |
|
|
** #define GUI_NO_DISK_SPACE 0x4b
|
568 |
|
|
** #define GUI_CHECKSUM_ERROR 0x4c
|
569 |
|
|
** #define GUI_PASSWORD_REQUIRED 0x4d
|
570 |
|
|
** <2> If length > 1 ==>
|
571 |
|
|
** data block returned from controller
|
572 |
|
|
** and the contents depends on the command code
|
573 |
|
|
** (E) Checksum : checksum of length and status or data byte
|
574 |
|
|
**************************************************************************
|