blob: 83dd53bcff78428b59bc755d32effbfe46711ca1 [file] [log] [blame]
Mauro Carvalho Chehabdade67f2020-03-02 09:16:15 +01001ARECA FIRMWARE SPEC
2===================
3
4Usage of IOP331 adapter
5=======================
6
7(All In/Out is in IOP331's view)
8
91. Message 0
10------------
11
12- InitThread message and return code
13
142. Doorbell is used for RS-232 emulation
15----------------------------------------
16
17inDoorBell
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
25outDooeBell:
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
333. Index Memory Usage
34---------------------
35
36============ ==========================================
37offset 0xf00 for RS232 out (request buffer)
38offset 0xe00 for RS232 in (scratch buffer)
39offset 0xa00 for inbound message code message_rwbuffer
40 (driver send to IOP331)
41offset 0xa00 for outbound message code message_rwbuffer
42 (IOP331 send to driver)
43============ ==========================================
44
454. RS-232 emulation
46-------------------
47
48Currently 128 byte buffer is used:
49
50============ =====================
511st uint32_t Data length (1--124)
52Byte 4--127 Max 124 bytes of data
53============ =====================
54
555. PostQ
56--------
57
58All 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
1016. BIOS request
102---------------
103
104All BIOS request is the same with request from PostQ
105
106Except:
107
108Request 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
116Completion of request::
117
118 (bit30 == 0, bit28==err flag)
119
1207. Definition of SGL entry (structure)
121--------------------------------------
122
1238. Message1 Out - Diag Status Code (????)
124-----------------------------------------
125
1269. Message0 message code
127------------------------
128
129====== =================================================================
1300x00 NOP
1310x01 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 ===================== ==========================================
1500x02 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 ========================= ==================
1580x03 Reset (Abort all queued Command)
1590x04 Stop Background Activity
1600x05 Flush Cache
1610x06 Start Background Activity
162 (re-start if background is halted)
1630x07 Check If Host Command Pending
164 (Novell May Need This Function)
1650x08 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
182RS-232 Interface for Areca Raid Controller
183==========================================
184
185 The low level command interface is exclusive with VT100 terminal
186
1871. 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
2002. 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
2233. Command code and associated data
224-----------------------------------
225
226The following are command code defined in raid controller Command
227code 0x10--0x1? are used for system level management,
228no password checking is needed and should be implemented in separate
229well controlled utility and not for end user access.
230Command code 0x20--0x?? always check the password,
231password 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
280Command description
281^^^^^^^^^^^^^^^^^^^
282
283GUI_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
294GUI_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
305GUI_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
316GUI_IDENTIFY
317 Identify device
318
319 ================ =============================================
320 byte 0,1 length
321 byte 2 command code 0x13
322 return "Areca RAID Subsystem "
323 ================ =============================================
324
325GUI_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
335GUI_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
343GUI_HTTP
344 HTTP interface (reserved for Http proxy service)(0x16)
345
346GUI_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
357GUI_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
371GUI_POLL_EVENT
372 Poll If Event Log Changed
373
374 ================ =============================================
375 byte 0,1 length
376 byte 2 command code 0x19
377 ================ =============================================
378
379GUI_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
388GUI_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
413GUI_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
431GUI_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
464GUI_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
496GUI_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
524GUI_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
579GUI_CLEAR_EVENT
580 Clear System Event
581
582 ================ =============================================
583 byte 0,1 length
584 byte 2 command code 0x24
585 ================ =============================================
586
587GUI_MUTE_BEEPER
588 Mute current beeper
589
590 ================ =============================================
591 byte 0,1 length
592 byte 2 command code 0x30
593 ================ =============================================
594GUI_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
603GUI_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
613GUI_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
622GUI_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
631GUI_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
640GUI_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
649GUI_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
667GUI_NO_OPERATION
668 No operation
669
670 ================ =============================================
671 byte 0,1 length
672 byte 2 command code 0x38
673 ================ =============================================
674
675GUI_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
685GUI_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
702GUI_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
719GUI_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 ================ =============================================
727GUI_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
739GUI_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
749GUI_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
758GUI_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
773GUI_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
782GUI_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
791GUI_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
800GUI_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
824GUI_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
847GUI_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
856GUI_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
865GUI_STOP_CHECK_VOLUME
866 Stop volume consistency check
867
868 ================ =============================================
869 byte 0,1 length
870 byte 2 command code 0x64
871 ================ =============================================
872
8734. 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