]>
Commit | Line | Data |
---|---|---|
dade67f4 MCC |
1 | ARECA FIRMWARE SPEC |
2 | =================== | |
3 | ||
4 | Usage of IOP331 adapter | |
5 | ======================= | |
6 | ||
7 | (All In/Out is in IOP331's view) | |
8 | ||
9 | 1. Message 0 | |
10 | ------------ | |
11 | ||
12 | - InitThread message and return code | |
13 | ||
14 | 2. Doorbell is used for RS-232 emulation | |
15 | ---------------------------------------- | |
16 | ||
17 | inDoorBell | |
18 | bit0 | |
19 | data in ready | |
20 | zDRIVER DATA WRITE OK) | |
21 | bit1 | |
22 | data out has been read | |
23 | (DRIVER DATA READ OK) | |
24 | ||
25 | outDooeBell: | |
26 | bit0 | |
27 | data out ready | |
28 | (IOP331 DATA WRITE OK) | |
29 | bit1 | |
30 | data in has been read | |
31 | (IOP331 DATA READ OK) | |
32 | ||
33 | 3. Index Memory Usage | |
34 | --------------------- | |
35 | ||
36 | ============ ========================================== | |
37 | offset 0xf00 for RS232 out (request buffer) | |
38 | offset 0xe00 for RS232 in (scratch buffer) | |
39 | offset 0xa00 for inbound message code message_rwbuffer | |
40 | (driver send to IOP331) | |
41 | offset 0xa00 for outbound message code message_rwbuffer | |
42 | (IOP331 send to driver) | |
43 | ============ ========================================== | |
44 | ||
45 | 4. RS-232 emulation | |
46 | ------------------- | |
47 | ||
48 | Currently 128 byte buffer is used: | |
49 | ||
50 | ============ ===================== | |
51 | 1st uint32_t Data length (1--124) | |
52 | Byte 4--127 Max 124 bytes of data | |
53 | ============ ===================== | |
54 | ||
55 | 5. PostQ | |
56 | -------- | |
57 | ||
58 | All SCSI Command must be sent through postQ: | |
59 | ||
60 | (inbound queue port) | |
61 | Request frame must be 32 bytes aligned: | |
62 | ||
63 | #bit27--bit31 | |
64 | flag for post ccb | |
65 | #bit0--bit26 | |
66 | real address (bit27--bit31) of post arcmsr_cdb | |
67 | ||
68 | ===== =================== | |
69 | bit31 == =============== | |
70 | 0 256 bytes frame | |
71 | 1 512 bytes frame | |
72 | == =============== | |
73 | bit30 == ============== | |
74 | 0 normal request | |
75 | 1 BIOS request | |
76 | == ============== | |
77 | bit29 reserved | |
78 | bit28 reserved | |
79 | bit27 reserved | |
80 | ===== =================== | |
81 | ||
82 | (outbount queue port) | |
83 | Request reply: | |
84 | ||
85 | #bit27--bit31 | |
86 | flag for reply | |
87 | #bit0--bit26 | |
88 | real address (bit27--bit31) of reply arcmsr_cdb | |
89 | ||
90 | ===== ======================================================= | |
91 | bit31 must be 0 (for this type of reply) | |
92 | bit30 reserved for BIOS handshake | |
93 | bit29 reserved | |
94 | bit28 == =================================================== | |
95 | 0 no error, ignore AdapStatus/DevStatus/SenseData | |
96 | 1 Error, error code in AdapStatus/DevStatus/SenseData | |
97 | == =================================================== | |
98 | bit27 reserved | |
99 | ===== ======================================================= | |
100 | ||
101 | 6. BIOS request | |
102 | --------------- | |
103 | ||
104 | All BIOS request is the same with request from PostQ | |
105 | ||
106 | Except: | |
107 | ||
108 | Request frame is sent from configuration space: | |
109 | ||
110 | ============ ========================== | |
111 | offset: 0x78 Request Frame (bit30 == 1) | |
112 | offset: 0x18 writeonly to generate | |
113 | IRQ to IOP331 | |
114 | ============ ========================== | |
115 | ||
116 | Completion of request:: | |
117 | ||
118 | (bit30 == 0, bit28==err flag) | |
119 | ||
120 | 7. Definition of SGL entry (structure) | |
121 | -------------------------------------- | |
122 | ||
123 | 8. Message1 Out - Diag Status Code (????) | |
124 | ----------------------------------------- | |
125 | ||
126 | 9. Message0 message code | |
127 | ------------------------ | |
128 | ||
129 | ====== ================================================================= | |
130 | 0x00 NOP | |
131 | 0x01 Get Config | |
132 | ->offset 0xa00 :for outbound message code message_rwbuffer | |
133 | (IOP331 send to driver) | |
134 | ||
135 | ===================== ========================================== | |
136 | Signature 0x87974060(4) | |
137 | Request len 0x00000200(4) | |
138 | numbers of queue 0x00000100(4) | |
139 | SDRAM Size 0x00000100(4)-->256 MB | |
140 | IDE Channels 0x00000008(4) | |
141 | vendor 40 bytes char | |
142 | model 8 bytes char | |
143 | FirmVer 16 bytes char | |
144 | Device Map 16 bytes char | |
145 | FirmwareVersion DWORD | |
146 | ||
147 | - Added for checking of | |
148 | new firmware capability | |
149 | ===================== ========================================== | |
150 | 0x02 Set Config | |
151 | ->offset 0xa00 :for inbound message code message_rwbuffer | |
152 | (driver send to IOP331) | |
153 | ||
154 | ========================= ================== | |
155 | Signature 0x87974063(4) | |
156 | UPPER32 of Request Frame (4)-->Driver Only | |
157 | ========================= ================== | |
158 | 0x03 Reset (Abort all queued Command) | |
159 | 0x04 Stop Background Activity | |
160 | 0x05 Flush Cache | |
161 | 0x06 Start Background Activity | |
162 | (re-start if background is halted) | |
163 | 0x07 Check If Host Command Pending | |
164 | (Novell May Need This Function) | |
165 | 0x08 Set controller time | |
166 | ->offset 0xa00 for inbound message code message_rwbuffer | |
167 | (driver to IOP331) | |
168 | ||
169 | ====== ================== | |
170 | byte 0 0xaa <-- signature | |
171 | byte 1 0x55 <-- signature | |
172 | byte 2 year (04) | |
173 | byte 3 month (1..12) | |
174 | byte 4 date (1..31) | |
175 | byte 5 hour (0..23) | |
176 | byte 6 minute (0..59) | |
177 | byte 7 second (0..59) | |
178 | ====== ================== | |
179 | ====== ================================================================= | |
180 | ||
181 | ||
182 | RS-232 Interface for Areca Raid Controller | |
183 | ========================================== | |
184 | ||
185 | The low level command interface is exclusive with VT100 terminal | |
186 | ||
187 | 1. Sequence of command execution | |
188 | -------------------------------- | |
189 | ||
190 | (A) Header | |
191 | 3 bytes sequence (0x5E, 0x01, 0x61) | |
192 | ||
193 | (B) Command block | |
194 | variable length of data including length, | |
195 | command code, data and checksum byte | |
196 | ||
197 | (C) Return data | |
198 | variable length of data | |
199 | ||
200 | 2. Command block | |
201 | ---------------- | |
202 | ||
203 | (A) 1st byte | |
204 | command block length (low byte) | |
205 | ||
206 | (B) 2nd byte | |
207 | command block length (high byte) | |
208 | ||
209 | .. Note:: command block length shouldn't > 2040 bytes, | |
210 | length excludes these two bytes | |
211 | ||
212 | (C) 3rd byte | |
213 | command code | |
214 | ||
215 | (D) 4th and following bytes | |
216 | variable length data bytes | |
217 | ||
218 | depends on command code | |
219 | ||
220 | (E) last byte | |
221 | checksum byte (sum of 1st byte until last data byte) | |
222 | ||
223 | 3. Command code and associated data | |
224 | ----------------------------------- | |
225 | ||
226 | The following are command code defined in raid controller Command | |
227 | code 0x10--0x1? are used for system level management, | |
228 | no password checking is needed and should be implemented in separate | |
229 | well controlled utility and not for end user access. | |
230 | Command code 0x20--0x?? always check the password, | |
231 | password must be entered to enable these command:: | |
232 | ||
233 | enum | |
234 | { | |
235 | GUI_SET_SERIAL=0x10, | |
236 | GUI_SET_VENDOR, | |
237 | GUI_SET_MODEL, | |
238 | GUI_IDENTIFY, | |
239 | GUI_CHECK_PASSWORD, | |
240 | GUI_LOGOUT, | |
241 | GUI_HTTP, | |
242 | GUI_SET_ETHERNET_ADDR, | |
243 | GUI_SET_LOGO, | |
244 | GUI_POLL_EVENT, | |
245 | GUI_GET_EVENT, | |
246 | GUI_GET_HW_MONITOR, | |
247 | // GUI_QUICK_CREATE=0x20, (function removed) | |
248 | GUI_GET_INFO_R=0x20, | |
249 | GUI_GET_INFO_V, | |
250 | GUI_GET_INFO_P, | |
251 | GUI_GET_INFO_S, | |
252 | GUI_CLEAR_EVENT, | |
253 | GUI_MUTE_BEEPER=0x30, | |
254 | GUI_BEEPER_SETTING, | |
255 | GUI_SET_PASSWORD, | |
256 | GUI_HOST_INTERFACE_MODE, | |
257 | GUI_REBUILD_PRIORITY, | |
258 | GUI_MAX_ATA_MODE, | |
259 | GUI_RESET_CONTROLLER, | |
260 | GUI_COM_PORT_SETTING, | |
261 | GUI_NO_OPERATION, | |
262 | GUI_DHCP_IP, | |
263 | GUI_CREATE_PASS_THROUGH=0x40, | |
264 | GUI_MODIFY_PASS_THROUGH, | |
265 | GUI_DELETE_PASS_THROUGH, | |
266 | GUI_IDENTIFY_DEVICE, | |
267 | GUI_CREATE_RAIDSET=0x50, | |
268 | GUI_DELETE_RAIDSET, | |
269 | GUI_EXPAND_RAIDSET, | |
270 | GUI_ACTIVATE_RAIDSET, | |
271 | GUI_CREATE_HOT_SPARE, | |
272 | GUI_DELETE_HOT_SPARE, | |
273 | GUI_CREATE_VOLUME=0x60, | |
274 | GUI_MODIFY_VOLUME, | |
275 | GUI_DELETE_VOLUME, | |
276 | GUI_START_CHECK_VOLUME, | |
277 | GUI_STOP_CHECK_VOLUME | |
278 | }; | |
279 | ||
280 | Command description | |
281 | ^^^^^^^^^^^^^^^^^^^ | |
282 | ||
283 | GUI_SET_SERIAL | |
284 | Set the controller serial# | |
285 | ||
286 | ================ ============================================= | |
287 | byte 0,1 length | |
288 | byte 2 command code 0x10 | |
289 | byte 3 password length (should be 0x0f) | |
290 | byte 4-0x13 should be "ArEcATecHnoLogY" | |
291 | byte 0x14--0x23 Serial number string (must be 16 bytes) | |
292 | ================ ============================================= | |
293 | ||
294 | GUI_SET_VENDOR | |
295 | Set vendor string for the controller | |
296 | ||
297 | ================ ============================================= | |
298 | byte 0,1 length | |
299 | byte 2 command code 0x11 | |
300 | byte 3 password length (should be 0x08) | |
301 | byte 4-0x13 should be "ArEcAvAr" | |
302 | byte 0x14--0x3B vendor string (must be 40 bytes) | |
303 | ================ ============================================= | |
304 | ||
305 | GUI_SET_MODEL | |
306 | Set the model name of the controller | |
307 | ||
308 | ================ ============================================= | |
309 | byte 0,1 length | |
310 | byte 2 command code 0x12 | |
311 | byte 3 password length (should be 0x08) | |
312 | byte 4-0x13 should be "ArEcAvAr" | |
313 | byte 0x14--0x1B model string (must be 8 bytes) | |
314 | ================ ============================================= | |
315 | ||
316 | GUI_IDENTIFY | |
317 | Identify device | |
318 | ||
319 | ================ ============================================= | |
320 | byte 0,1 length | |
321 | byte 2 command code 0x13 | |
322 | return "Areca RAID Subsystem " | |
323 | ================ ============================================= | |
324 | ||
325 | GUI_CHECK_PASSWORD | |
326 | Verify password | |
327 | ||
328 | ================ ============================================= | |
329 | byte 0,1 length | |
330 | byte 2 command code 0x14 | |
331 | byte 3 password length | |
332 | byte 4-0x?? user password to be checked | |
333 | ================ ============================================= | |
334 | ||
335 | GUI_LOGOUT | |
336 | Logout GUI (force password checking on next command) | |
337 | ||
338 | ================ ============================================= | |
339 | byte 0,1 length | |
340 | byte 2 command code 0x15 | |
341 | ================ ============================================= | |
342 | ||
343 | GUI_HTTP | |
344 | HTTP interface (reserved for Http proxy service)(0x16) | |
345 | ||
346 | GUI_SET_ETHERNET_ADDR | |
347 | Set the ethernet MAC address | |
348 | ||
349 | ================ ============================================= | |
350 | byte 0,1 length | |
351 | byte 2 command code 0x17 | |
352 | byte 3 password length (should be 0x08) | |
353 | byte 4-0x13 should be "ArEcAvAr" | |
354 | byte 0x14--0x19 Ethernet MAC address (must be 6 bytes) | |
355 | ================ ============================================= | |
356 | ||
357 | GUI_SET_LOGO | |
358 | Set logo in HTTP | |
359 | ||
360 | ================ ============================================= | |
361 | byte 0,1 length | |
362 | byte 2 command code 0x18 | |
363 | byte 3 Page# (0/1/2/3) (0xff --> clear OEM logo) | |
364 | byte 4/5/6/7 0x55/0xaa/0xa5/0x5a | |
365 | byte 8 TITLE.JPG data (each page must be 2000 bytes) | |
366 | ||
367 | .. Note:: page0 1st 2 byte must be | |
368 | actual length of the JPG file | |
369 | ================ ============================================= | |
370 | ||
371 | GUI_POLL_EVENT | |
372 | Poll If Event Log Changed | |
373 | ||
374 | ================ ============================================= | |
375 | byte 0,1 length | |
376 | byte 2 command code 0x19 | |
377 | ================ ============================================= | |
378 | ||
379 | GUI_GET_EVENT | |
380 | Read Event | |
381 | ||
382 | ================ ============================================= | |
383 | byte 0,1 length | |
384 | byte 2 command code 0x1a | |
385 | byte 3 Event Page (0:1st page/1/2/3:last page) | |
386 | ================ ============================================= | |
387 | ||
388 | GUI_GET_HW_MONITOR | |
389 | Get HW monitor data | |
390 | ||
391 | ================ ============================================= | |
392 | byte 0,1 length | |
393 | byte 2 command code 0x1b | |
394 | byte 3 # of FANs(example 2) | |
395 | byte 4 # of Voltage sensor(example 3) | |
396 | byte 5 # of temperature sensor(example 2) | |
397 | byte 6 # of power | |
398 | byte 7/8 Fan#0 (RPM) | |
399 | byte 9/10 Fan#1 | |
400 | byte 11/12 Voltage#0 original value in ``*1000`` | |
401 | byte 13/14 Voltage#0 value | |
402 | byte 15/16 Voltage#1 org | |
403 | byte 17/18 Voltage#1 | |
404 | byte 19/20 Voltage#2 org | |
405 | byte 21/22 Voltage#2 | |
406 | byte 23 Temp#0 | |
407 | byte 24 Temp#1 | |
408 | byte 25 Power indicator (bit0 power#0, | |
409 | bit1 power#1) | |
410 | byte 26 UPS indicator | |
411 | ================ ============================================= | |
412 | ||
413 | GUI_QUICK_CREATE | |
414 | Quick create raid/volume set | |
415 | ||
416 | ================ ============================================== | |
417 | byte 0,1 length | |
418 | byte 2 command code 0x20 | |
419 | byte 3/4/5/6 raw capacity | |
420 | byte 7 raid level | |
421 | byte 8 stripe size | |
422 | byte 9 spare | |
423 | byte 10/11/12/13 device mask (the devices to create raid/volume) | |
424 | ================ ============================================== | |
425 | ||
426 | This function is removed, application like | |
427 | to implement quick create function | |
428 | ||
429 | need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function. | |
430 | ||
431 | GUI_GET_INFO_R | |
432 | Get Raid Set Information | |
433 | ||
434 | ================ ============================================= | |
435 | byte 0,1 length | |
436 | byte 2 command code 0x20 | |
437 | byte 3 raidset# | |
438 | ================ ============================================= | |
439 | ||
440 | :: | |
441 | ||
442 | typedef struct sGUI_RAIDSET | |
443 | { | |
444 | BYTE grsRaidSetName[16]; | |
445 | DWORD grsCapacity; | |
446 | DWORD grsCapacityX; | |
447 | DWORD grsFailMask; | |
448 | BYTE grsDevArray[32]; | |
449 | BYTE grsMemberDevices; | |
450 | BYTE grsNewMemberDevices; | |
451 | BYTE grsRaidState; | |
452 | BYTE grsVolumes; | |
453 | BYTE grsVolumeList[16]; | |
454 | BYTE grsRes1; | |
455 | BYTE grsRes2; | |
456 | BYTE grsRes3; | |
457 | BYTE grsFreeSegments; | |
458 | DWORD grsRawStripes[8]; | |
459 | DWORD grsRes4; | |
460 | DWORD grsRes5; // Total to 128 bytes | |
461 | DWORD grsRes6; // Total to 128 bytes | |
462 | } sGUI_RAIDSET, *pGUI_RAIDSET; | |
463 | ||
464 | GUI_GET_INFO_V | |
465 | Get Volume Set Information | |
466 | ||
467 | ================ ============================================= | |
468 | byte 0,1 length | |
469 | byte 2 command code 0x21 | |
470 | byte 3 volumeset# | |
471 | ================ ============================================= | |
472 | ||
473 | :: | |
474 | ||
475 | typedef struct sGUI_VOLUMESET | |
476 | { | |
477 | BYTE gvsVolumeName[16]; // 16 | |
478 | DWORD gvsCapacity; | |
479 | DWORD gvsCapacityX; | |
480 | DWORD gvsFailMask; | |
481 | DWORD gvsStripeSize; | |
482 | DWORD gvsNewFailMask; | |
483 | DWORD gvsNewStripeSize; | |
484 | DWORD gvsVolumeStatus; | |
485 | DWORD gvsProgress; // 32 | |
486 | sSCSI_ATTR gvsScsi; | |
487 | BYTE gvsMemberDisks; | |
488 | BYTE gvsRaidLevel; // 8 | |
489 | BYTE gvsNewMemberDisks; | |
490 | BYTE gvsNewRaidLevel; | |
491 | BYTE gvsRaidSetNumber; | |
492 | BYTE gvsRes0; // 4 | |
493 | BYTE gvsRes1[4]; // 64 bytes | |
494 | } sGUI_VOLUMESET, *pGUI_VOLUMESET; | |
495 | ||
496 | GUI_GET_INFO_P | |
497 | Get Physical Drive Information | |
498 | ||
499 | ================ ============================================= | |
500 | byte 0,1 length | |
501 | byte 2 command code 0x22 | |
502 | byte 3 drive # (from 0 to max-channels - 1) | |
503 | ================ ============================================= | |
504 | ||
505 | :: | |
506 | ||
507 | typedef struct sGUI_PHY_DRV | |
508 | { | |
509 | BYTE gpdModelName[40]; | |
510 | BYTE gpdSerialNumber[20]; | |
511 | BYTE gpdFirmRev[8]; | |
512 | DWORD gpdCapacity; | |
513 | DWORD gpdCapacityX; // Reserved for expansion | |
514 | BYTE gpdDeviceState; | |
515 | BYTE gpdPioMode; | |
516 | BYTE gpdCurrentUdmaMode; | |
517 | BYTE gpdUdmaMode; | |
518 | BYTE gpdDriveSelect; | |
519 | BYTE gpdRaidNumber; // 0xff if not belongs to a raid set | |
520 | sSCSI_ATTR gpdScsi; | |
521 | BYTE gpdReserved[40]; // Total to 128 bytes | |
522 | } sGUI_PHY_DRV, *pGUI_PHY_DRV; | |
523 | ||
524 | GUI_GET_INFO_S | |
525 | Get System Information | |
526 | ||
527 | ================ ============================================= | |
528 | byte 0,1 length | |
529 | byte 2 command code 0x23 | |
530 | ================ ============================================= | |
531 | ||
532 | :: | |
533 | ||
534 | typedef struct sCOM_ATTR | |
535 | { | |
536 | BYTE comBaudRate; | |
537 | BYTE comDataBits; | |
538 | BYTE comStopBits; | |
539 | BYTE comParity; | |
540 | BYTE comFlowControl; | |
541 | } sCOM_ATTR, *pCOM_ATTR; | |
542 | typedef struct sSYSTEM_INFO | |
543 | { | |
544 | BYTE gsiVendorName[40]; | |
545 | BYTE gsiSerialNumber[16]; | |
546 | BYTE gsiFirmVersion[16]; | |
547 | BYTE gsiBootVersion[16]; | |
548 | BYTE gsiMbVersion[16]; | |
549 | BYTE gsiModelName[8]; | |
550 | BYTE gsiLocalIp[4]; | |
551 | BYTE gsiCurrentIp[4]; | |
552 | DWORD gsiTimeTick; | |
553 | DWORD gsiCpuSpeed; | |
554 | DWORD gsiICache; | |
555 | DWORD gsiDCache; | |
556 | DWORD gsiScache; | |
557 | DWORD gsiMemorySize; | |
558 | DWORD gsiMemorySpeed; | |
559 | DWORD gsiEvents; | |
560 | BYTE gsiMacAddress[6]; | |
561 | BYTE gsiDhcp; | |
562 | BYTE gsiBeeper; | |
563 | BYTE gsiChannelUsage; | |
564 | BYTE gsiMaxAtaMode; | |
565 | BYTE gsiSdramEcc; // 1:if ECC enabled | |
566 | BYTE gsiRebuildPriority; | |
567 | sCOM_ATTR gsiComA; // 5 bytes | |
568 | sCOM_ATTR gsiComB; // 5 bytes | |
569 | BYTE gsiIdeChannels; | |
570 | BYTE gsiScsiHostChannels; | |
571 | BYTE gsiIdeHostChannels; | |
572 | BYTE gsiMaxVolumeSet; | |
573 | BYTE gsiMaxRaidSet; | |
574 | BYTE gsiEtherPort; // 1:if ether net port supported | |
575 | BYTE gsiRaid6Engine; // 1:Raid6 engine supported | |
576 | BYTE gsiRes[75]; | |
577 | } sSYSTEM_INFO, *pSYSTEM_INFO; | |
578 | ||
579 | GUI_CLEAR_EVENT | |
580 | Clear System Event | |
581 | ||
582 | ================ ============================================= | |
583 | byte 0,1 length | |
584 | byte 2 command code 0x24 | |
585 | ================ ============================================= | |
586 | ||
587 | GUI_MUTE_BEEPER | |
588 | Mute current beeper | |
589 | ||
590 | ================ ============================================= | |
591 | byte 0,1 length | |
592 | byte 2 command code 0x30 | |
593 | ================ ============================================= | |
594 | GUI_BEEPER_SETTING | |
595 | Disable beeper | |
596 | ||
597 | ================ ============================================= | |
598 | byte 0,1 length | |
599 | byte 2 command code 0x31 | |
600 | byte 3 0->disable, 1->enable | |
601 | ================ ============================================= | |
602 | ||
603 | GUI_SET_PASSWORD | |
604 | Change password | |
605 | ||
606 | ================ ============================================= | |
607 | byte 0,1 length | |
608 | byte 2 command code 0x32 | |
609 | byte 3 pass word length ( must <= 15 ) | |
610 | byte 4 password (must be alpha-numerical) | |
611 | ================ ============================================= | |
612 | ||
613 | GUI_HOST_INTERFACE_MODE | |
614 | Set host interface mode | |
615 | ||
616 | ================ ============================================= | |
617 | byte 0,1 length | |
618 | byte 2 command code 0x33 | |
619 | byte 3 0->Independent, 1->cluster | |
620 | ================ ============================================= | |
621 | ||
622 | GUI_REBUILD_PRIORITY | |
623 | Set rebuild priority | |
624 | ||
625 | ================ ============================================= | |
626 | byte 0,1 length | |
627 | byte 2 command code 0x34 | |
628 | byte 3 0/1/2/3 (low->high) | |
629 | ================ ============================================= | |
630 | ||
631 | GUI_MAX_ATA_MODE | |
632 | Set maximum ATA mode to be used | |
633 | ||
634 | ================ ============================================= | |
635 | byte 0,1 length | |
636 | byte 2 command code 0x35 | |
637 | byte 3 0/1/2/3 (133/100/66/33) | |
638 | ================ ============================================= | |
639 | ||
640 | GUI_RESET_CONTROLLER | |
641 | Reset Controller | |
642 | ||
643 | ================ ============================================= | |
644 | byte 0,1 length | |
645 | byte 2 command code 0x36 | |
646 | * Response with VT100 screen (discard it) | |
647 | ================ ============================================= | |
648 | ||
649 | GUI_COM_PORT_SETTING | |
650 | COM port setting | |
651 | ||
652 | ================ ================================================= | |
653 | byte 0,1 length | |
654 | byte 2 command code 0x37 | |
655 | byte 3 0->COMA (term port), | |
656 | 1->COMB (debug port) | |
657 | byte 4 0/1/2/3/4/5/6/7 | |
658 | (1200/2400/4800/9600/19200/38400/57600/115200) | |
659 | byte 5 data bit | |
660 | (0:7 bit, 1:8 bit must be 8 bit) | |
661 | byte 6 stop bit (0:1, 1:2 stop bits) | |
662 | byte 7 parity (0:none, 1:off, 2:even) | |
663 | byte 8 flow control | |
664 | (0:none, 1:xon/xoff, 2:hardware => must use none) | |
665 | ================ ================================================= | |
666 | ||
667 | GUI_NO_OPERATION | |
668 | No operation | |
669 | ||
670 | ================ ============================================= | |
671 | byte 0,1 length | |
672 | byte 2 command code 0x38 | |
673 | ================ ============================================= | |
674 | ||
675 | GUI_DHCP_IP | |
676 | Set DHCP option and local IP address | |
677 | ||
678 | ================ ============================================= | |
679 | byte 0,1 length | |
680 | byte 2 command code 0x39 | |
681 | byte 3 0:dhcp disabled, 1:dhcp enabled | |
682 | byte 4/5/6/7 IP address | |
683 | ================ ============================================= | |
684 | ||
685 | GUI_CREATE_PASS_THROUGH | |
686 | Create pass through disk | |
687 | ||
688 | ================ ============================================= | |
689 | byte 0,1 length | |
690 | byte 2 command code 0x40 | |
691 | byte 3 device # | |
692 | byte 4 scsi channel (0/1) | |
693 | byte 5 scsi id (0-->15) | |
694 | byte 6 scsi lun (0-->7) | |
695 | byte 7 tagged queue (1 enabled) | |
696 | byte 8 cache mode (1 enabled) | |
697 | byte 9 max speed (0/1/2/3/4, | |
698 | async/20/40/80/160 for scsi) | |
699 | (0/1/2/3/4, 33/66/100/133/150 for ide ) | |
700 | ================ ============================================= | |
701 | ||
702 | GUI_MODIFY_PASS_THROUGH | |
703 | Modify pass through disk | |
704 | ||
705 | ================ ============================================= | |
706 | byte 0,1 length | |
707 | byte 2 command code 0x41 | |
708 | byte 3 device # | |
709 | byte 4 scsi channel (0/1) | |
710 | byte 5 scsi id (0-->15) | |
711 | byte 6 scsi lun (0-->7) | |
712 | byte 7 tagged queue (1 enabled) | |
713 | byte 8 cache mode (1 enabled) | |
714 | byte 9 max speed (0/1/2/3/4, | |
715 | async/20/40/80/160 for scsi) | |
716 | (0/1/2/3/4, 33/66/100/133/150 for ide ) | |
717 | ================ ============================================= | |
718 | ||
719 | GUI_DELETE_PASS_THROUGH | |
720 | Delete pass through disk | |
721 | ||
722 | ================ ============================================= | |
723 | byte 0,1 length | |
724 | byte 2 command code 0x42 | |
725 | byte 3 device# to be deleted | |
726 | ================ ============================================= | |
727 | GUI_IDENTIFY_DEVICE | |
728 | Identify Device | |
729 | ||
730 | ================ ============================================= | |
731 | byte 0,1 length | |
732 | byte 2 command code 0x43 | |
733 | byte 3 Flash Method | |
734 | (0:flash selected, 1:flash not selected) | |
735 | byte 4/5/6/7 IDE device mask to be flashed | |
736 | .. Note:: no response data available | |
737 | ================ ============================================= | |
738 | ||
739 | GUI_CREATE_RAIDSET | |
740 | Create Raid Set | |
741 | ||
742 | ================ ============================================= | |
743 | byte 0,1 length | |
744 | byte 2 command code 0x50 | |
745 | byte 3/4/5/6 device mask | |
746 | byte 7-22 raidset name (if byte 7 == 0:use default) | |
747 | ================ ============================================= | |
748 | ||
749 | GUI_DELETE_RAIDSET | |
750 | Delete Raid Set | |
751 | ||
752 | ================ ============================================= | |
753 | byte 0,1 length | |
754 | byte 2 command code 0x51 | |
755 | byte 3 raidset# | |
756 | ================ ============================================= | |
757 | ||
758 | GUI_EXPAND_RAIDSET | |
759 | Expand Raid Set | |
760 | ||
761 | ================ ============================================= | |
762 | byte 0,1 length | |
763 | byte 2 command code 0x52 | |
764 | byte 3 raidset# | |
765 | byte 4/5/6/7 device mask for expansion | |
766 | byte 8/9/10 (8:0 no change, 1 change, 0xff:terminate, | |
767 | 9:new raid level, | |
768 | 10:new stripe size | |
769 | 0/1/2/3/4/5->4/8/16/32/64/128K ) | |
770 | byte 11/12/13 repeat for each volume in the raidset | |
771 | ================ ============================================= | |
772 | ||
773 | GUI_ACTIVATE_RAIDSET | |
774 | Activate incomplete raid set | |
775 | ||
776 | ================ ============================================= | |
777 | byte 0,1 length | |
778 | byte 2 command code 0x53 | |
779 | byte 3 raidset# | |
780 | ================ ============================================= | |
781 | ||
782 | GUI_CREATE_HOT_SPARE | |
783 | Create hot spare disk | |
784 | ||
785 | ================ ============================================= | |
786 | byte 0,1 length | |
787 | byte 2 command code 0x54 | |
788 | byte 3/4/5/6 device mask for hot spare creation | |
789 | ================ ============================================= | |
790 | ||
791 | GUI_DELETE_HOT_SPARE | |
792 | Delete hot spare disk | |
793 | ||
794 | ================ ============================================= | |
795 | byte 0,1 length | |
796 | byte 2 command code 0x55 | |
797 | byte 3/4/5/6 device mask for hot spare deletion | |
798 | ================ ============================================= | |
799 | ||
800 | GUI_CREATE_VOLUME | |
801 | Create volume set | |
802 | ||
803 | ================ ============================================= | |
804 | byte 0,1 length | |
805 | byte 2 command code 0x60 | |
806 | byte 3 raidset# | |
807 | byte 4-19 volume set name | |
808 | (if byte4 == 0, use default) | |
809 | byte 20-27 volume capacity (blocks) | |
810 | byte 28 raid level | |
811 | byte 29 stripe size | |
812 | (0/1/2/3/4/5->4/8/16/32/64/128K) | |
813 | byte 30 channel | |
814 | byte 31 ID | |
815 | byte 32 LUN | |
816 | byte 33 1 enable tag | |
817 | byte 34 1 enable cache | |
818 | byte 35 speed | |
819 | (0/1/2/3/4->async/20/40/80/160 for scsi) | |
820 | (0/1/2/3/4->33/66/100/133/150 for IDE ) | |
821 | byte 36 1 to select quick init | |
822 | ================ ============================================= | |
823 | ||
824 | GUI_MODIFY_VOLUME | |
825 | Modify volume Set | |
826 | ||
827 | ================ ============================================= | |
828 | byte 0,1 length | |
829 | byte 2 command code 0x61 | |
830 | byte 3 volumeset# | |
831 | byte 4-19 new volume set name | |
832 | (if byte4 == 0, not change) | |
833 | byte 20-27 new volume capacity (reserved) | |
834 | byte 28 new raid level | |
835 | byte 29 new stripe size | |
836 | (0/1/2/3/4/5->4/8/16/32/64/128K) | |
837 | byte 30 new channel | |
838 | byte 31 new ID | |
839 | byte 32 new LUN | |
840 | byte 33 1 enable tag | |
841 | byte 34 1 enable cache | |
842 | byte 35 speed | |
843 | (0/1/2/3/4->async/20/40/80/160 for scsi) | |
844 | (0/1/2/3/4->33/66/100/133/150 for IDE ) | |
845 | ================ ============================================= | |
846 | ||
847 | GUI_DELETE_VOLUME | |
848 | Delete volume set | |
849 | ||
850 | ================ ============================================= | |
851 | byte 0,1 length | |
852 | byte 2 command code 0x62 | |
853 | byte 3 volumeset# | |
854 | ================ ============================================= | |
855 | ||
856 | GUI_START_CHECK_VOLUME | |
857 | Start volume consistency check | |
858 | ||
859 | ================ ============================================= | |
860 | byte 0,1 length | |
861 | byte 2 command code 0x63 | |
862 | byte 3 volumeset# | |
863 | ================ ============================================= | |
864 | ||
865 | GUI_STOP_CHECK_VOLUME | |
866 | Stop volume consistency check | |
867 | ||
868 | ================ ============================================= | |
869 | byte 0,1 length | |
870 | byte 2 command code 0x64 | |
871 | ================ ============================================= | |
872 | ||
873 | 4. Returned data | |
874 | ---------------- | |
875 | ||
876 | (A) Header | |
877 | 3 bytes sequence (0x5E, 0x01, 0x61) | |
878 | (B) Length | |
879 | 2 bytes | |
880 | (low byte 1st, excludes length and checksum byte) | |
881 | (C) | |
882 | status or data: | |
883 | ||
884 | 1) If length == 1 ==> 1 byte status code:: | |
885 | ||
886 | #define GUI_OK 0x41 | |
887 | #define GUI_RAIDSET_NOT_NORMAL 0x42 | |
888 | #define GUI_VOLUMESET_NOT_NORMAL 0x43 | |
889 | #define GUI_NO_RAIDSET 0x44 | |
890 | #define GUI_NO_VOLUMESET 0x45 | |
891 | #define GUI_NO_PHYSICAL_DRIVE 0x46 | |
892 | #define GUI_PARAMETER_ERROR 0x47 | |
893 | #define GUI_UNSUPPORTED_COMMAND 0x48 | |
894 | #define GUI_DISK_CONFIG_CHANGED 0x49 | |
895 | #define GUI_INVALID_PASSWORD 0x4a | |
896 | #define GUI_NO_DISK_SPACE 0x4b | |
897 | #define GUI_CHECKSUM_ERROR 0x4c | |
898 | #define GUI_PASSWORD_REQUIRED 0x4d | |
899 | ||
900 | 2) If length > 1: | |
901 | ||
902 | data block returned from controller | |
903 | and the contents depends on the command code | |
904 | ||
905 | (E) Checksum | |
906 | checksum of length and status or data byte | |
907 |