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