Back to home page

OSCL-LXR

 
 

    


0001 ARECA FIRMWARE SPEC
0002 ===================
0003 
0004 Usage of IOP331 adapter
0005 =======================
0006 
0007 (All In/Out is in IOP331's view)
0008 
0009 1. Message 0
0010 ------------
0011 
0012 - InitThread message and return code
0013 
0014 2. Doorbell is used for RS-232 emulation
0015 ----------------------------------------
0016 
0017 inDoorBell
0018     bit0
0019         data in ready
0020         zDRIVER DATA WRITE OK)
0021     bit1
0022         data out has been read
0023         (DRIVER DATA READ OK)
0024 
0025 outDooeBell:
0026     bit0
0027         data out ready
0028         (IOP331 DATA WRITE OK)
0029     bit1
0030         data in has been read
0031         (IOP331 DATA READ OK)
0032 
0033 3. Index Memory Usage
0034 ---------------------
0035 
0036 ============   ==========================================
0037 offset 0xf00   for RS232 out (request buffer)
0038 offset 0xe00   for RS232 in  (scratch buffer)
0039 offset 0xa00   for inbound message code message_rwbuffer
0040                (driver send to IOP331)
0041 offset 0xa00   for outbound message code message_rwbuffer
0042                (IOP331 send to driver)
0043 ============   ==========================================
0044 
0045 4. RS-232 emulation
0046 -------------------
0047 
0048 Currently 128 byte buffer is used:
0049 
0050 ============   =====================
0051 1st uint32_t   Data length (1--124)
0052 Byte 4--127    Max 124 bytes of data
0053 ============   =====================
0054 
0055 5. PostQ
0056 --------
0057 
0058 All SCSI Command must be sent through postQ:
0059 
0060     (inbound queue port)
0061         Request frame must be 32 bytes aligned:
0062 
0063             #bit27--bit31
0064                 flag for post ccb
0065             #bit0--bit26
0066                 real address (bit27--bit31) of post arcmsr_cdb
0067 
0068                 =====   ===================
0069                 bit31   ==  ===============
0070                         0   256 bytes frame
0071                         1   512 bytes frame
0072                         ==  ===============
0073                 bit30   ==  ==============
0074                         0   normal request
0075                         1   BIOS request
0076                         ==  ==============
0077                 bit29   reserved
0078                 bit28   reserved
0079                 bit27   reserved
0080                 =====   ===================
0081 
0082     (outbount queue port)
0083         Request reply:
0084 
0085             #bit27--bit31
0086                     flag for reply
0087             #bit0--bit26
0088                     real address (bit27--bit31) of reply arcmsr_cdb
0089 
0090                     =====   =======================================================
0091                     bit31   must be 0 (for this type of reply)
0092                     bit30   reserved for BIOS handshake
0093                     bit29   reserved
0094                     bit28   ==  ===================================================
0095                             0   no error, ignore AdapStatus/DevStatus/SenseData
0096                             1   Error, error code in AdapStatus/DevStatus/SenseData
0097                             ==  ===================================================
0098                     bit27   reserved
0099                     =====   =======================================================
0100 
0101 6. BIOS request
0102 ---------------
0103 
0104 All BIOS request is the same with request from PostQ
0105 
0106 Except:
0107 
0108 Request frame is sent from configuration space:
0109 
0110         ============   ==========================
0111         offset: 0x78   Request Frame (bit30 == 1)
0112         offset: 0x18   writeonly to generate
0113                        IRQ to IOP331
0114         ============   ==========================
0115 
0116 Completion of request::
0117 
0118         (bit30 == 0, bit28==err flag)
0119 
0120 7. Definition of SGL entry (structure)
0121 --------------------------------------
0122 
0123 8. Message1 Out - Diag Status Code (????)
0124 -----------------------------------------
0125 
0126 9. Message0 message code
0127 ------------------------
0128 
0129 ======  =================================================================
0130 0x00    NOP
0131 0x01    Get Config
0132         ->offset 0xa00 :for outbound message code message_rwbuffer
0133         (IOP331 send to driver)
0134 
0135         ===================== ==========================================
0136         Signature             0x87974060(4)
0137         Request len           0x00000200(4)
0138         numbers of queue      0x00000100(4)
0139         SDRAM Size            0x00000100(4)-->256 MB
0140         IDE Channels          0x00000008(4)
0141         vendor                40 bytes char
0142         model                 8 bytes char
0143         FirmVer               16 bytes char
0144         Device Map            16 bytes char
0145         FirmwareVersion       DWORD
0146 
0147                               - Added for checking of
0148                                 new firmware capability
0149         ===================== ==========================================
0150 0x02    Set Config
0151         ->offset 0xa00 :for inbound message code message_rwbuffer
0152         (driver send to IOP331)
0153 
0154         ========================= ==================
0155         Signature                 0x87974063(4)
0156         UPPER32 of Request Frame  (4)-->Driver Only
0157         ========================= ==================
0158 0x03    Reset (Abort all queued Command)
0159 0x04    Stop Background Activity
0160 0x05    Flush Cache
0161 0x06    Start Background Activity
0162         (re-start if background is halted)
0163 0x07    Check If Host Command Pending
0164         (Novell May Need This Function)
0165 0x08    Set controller time
0166         ->offset 0xa00   for inbound message code message_rwbuffer
0167         (driver to IOP331)
0168 
0169         ======   ==================
0170         byte 0   0xaa <-- signature
0171         byte 1   0x55 <-- signature
0172         byte 2   year (04)
0173         byte 3   month (1..12)
0174         byte 4   date (1..31)
0175         byte 5   hour (0..23)
0176         byte 6   minute (0..59)
0177         byte 7   second (0..59)
0178         ======   ==================
0179 ======  =================================================================
0180 
0181 
0182 RS-232 Interface for Areca Raid Controller
0183 ==========================================
0184 
0185       The low level command interface is exclusive with VT100 terminal
0186 
0187 1. Sequence of command execution
0188 --------------------------------
0189 
0190         (A) Header
0191                 3 bytes sequence (0x5E, 0x01, 0x61)
0192 
0193         (B) Command block
0194                 variable length of data including length,
0195                 command code, data and checksum byte
0196 
0197         (C) Return data
0198                 variable length of data
0199 
0200 2. Command block
0201 ----------------
0202 
0203         (A) 1st byte
0204                 command block length (low byte)
0205 
0206         (B) 2nd byte
0207                 command block length (high byte)
0208 
0209                 .. Note:: command block length shouldn't > 2040 bytes,
0210                           length excludes these two bytes
0211 
0212         (C) 3rd byte
0213                 command code
0214 
0215         (D) 4th and following bytes
0216                 variable length data bytes
0217 
0218             depends on command code
0219 
0220         (E) last byte
0221             checksum byte (sum of 1st byte until last data byte)
0222 
0223 3. Command code and associated data
0224 -----------------------------------
0225 
0226 The following are command code defined in raid controller Command
0227 code 0x10--0x1? are used for system level management,
0228 no password checking is needed and should be implemented in separate
0229 well controlled utility and not for end user access.
0230 Command code 0x20--0x?? always check the password,
0231 password must be entered to enable these command::
0232 
0233         enum
0234         {
0235                 GUI_SET_SERIAL=0x10,
0236                 GUI_SET_VENDOR,
0237                 GUI_SET_MODEL,
0238                 GUI_IDENTIFY,
0239                 GUI_CHECK_PASSWORD,
0240                 GUI_LOGOUT,
0241                 GUI_HTTP,
0242                 GUI_SET_ETHERNET_ADDR,
0243                 GUI_SET_LOGO,
0244                 GUI_POLL_EVENT,
0245                 GUI_GET_EVENT,
0246                 GUI_GET_HW_MONITOR,
0247                 //    GUI_QUICK_CREATE=0x20, (function removed)
0248                 GUI_GET_INFO_R=0x20,
0249                 GUI_GET_INFO_V,
0250                 GUI_GET_INFO_P,
0251                 GUI_GET_INFO_S,
0252                 GUI_CLEAR_EVENT,
0253                 GUI_MUTE_BEEPER=0x30,
0254                 GUI_BEEPER_SETTING,
0255                 GUI_SET_PASSWORD,
0256                 GUI_HOST_INTERFACE_MODE,
0257                 GUI_REBUILD_PRIORITY,
0258                 GUI_MAX_ATA_MODE,
0259                 GUI_RESET_CONTROLLER,
0260                 GUI_COM_PORT_SETTING,
0261                 GUI_NO_OPERATION,
0262                 GUI_DHCP_IP,
0263                 GUI_CREATE_PASS_THROUGH=0x40,
0264                 GUI_MODIFY_PASS_THROUGH,
0265                 GUI_DELETE_PASS_THROUGH,
0266                 GUI_IDENTIFY_DEVICE,
0267                 GUI_CREATE_RAIDSET=0x50,
0268                 GUI_DELETE_RAIDSET,
0269                 GUI_EXPAND_RAIDSET,
0270                 GUI_ACTIVATE_RAIDSET,
0271                 GUI_CREATE_HOT_SPARE,
0272                 GUI_DELETE_HOT_SPARE,
0273                 GUI_CREATE_VOLUME=0x60,
0274                 GUI_MODIFY_VOLUME,
0275                 GUI_DELETE_VOLUME,
0276                 GUI_START_CHECK_VOLUME,
0277                 GUI_STOP_CHECK_VOLUME
0278         };
0279 
0280 Command description
0281 ^^^^^^^^^^^^^^^^^^^
0282 
0283 GUI_SET_SERIAL
0284         Set the controller serial#
0285 
0286         ================  =============================================
0287         byte 0,1          length
0288         byte 2            command code 0x10
0289         byte 3            password length (should be 0x0f)
0290         byte 4-0x13       should be "ArEcATecHnoLogY"
0291         byte 0x14--0x23   Serial number string (must be 16 bytes)
0292         ================  =============================================
0293 
0294 GUI_SET_VENDOR
0295         Set vendor string for the controller
0296 
0297         ================  =============================================
0298         byte 0,1          length
0299         byte 2            command code 0x11
0300         byte 3            password length (should be 0x08)
0301         byte 4-0x13       should be "ArEcAvAr"
0302         byte 0x14--0x3B   vendor string (must be 40 bytes)
0303         ================  =============================================
0304 
0305 GUI_SET_MODEL
0306         Set the model name of the controller
0307 
0308         ================  =============================================
0309         byte 0,1          length
0310         byte 2            command code 0x12
0311         byte 3            password length (should be 0x08)
0312         byte 4-0x13       should be "ArEcAvAr"
0313         byte 0x14--0x1B   model string (must be 8 bytes)
0314         ================  =============================================
0315 
0316 GUI_IDENTIFY
0317         Identify device
0318 
0319         ================  =============================================
0320         byte 0,1          length
0321         byte 2            command code 0x13
0322                             return "Areca RAID Subsystem "
0323         ================  =============================================
0324 
0325 GUI_CHECK_PASSWORD
0326         Verify password
0327 
0328         ================  =============================================
0329         byte 0,1          length
0330         byte 2            command code 0x14
0331         byte 3            password length
0332         byte 4-0x??       user password to be checked
0333         ================  =============================================
0334 
0335 GUI_LOGOUT
0336         Logout GUI (force password checking on next command)
0337 
0338         ================  =============================================
0339         byte 0,1          length
0340         byte 2            command code 0x15
0341         ================  =============================================
0342 
0343 GUI_HTTP
0344         HTTP interface (reserved for Http proxy service)(0x16)
0345 
0346 GUI_SET_ETHERNET_ADDR
0347         Set the ethernet MAC address
0348 
0349         ================  =============================================
0350         byte 0,1          length
0351         byte 2            command code 0x17
0352         byte 3            password length (should be 0x08)
0353         byte 4-0x13       should be "ArEcAvAr"
0354         byte 0x14--0x19   Ethernet MAC address (must be 6 bytes)
0355         ================  =============================================
0356 
0357 GUI_SET_LOGO
0358         Set logo in HTTP
0359 
0360         ================  =============================================
0361         byte 0,1          length
0362         byte 2            command code 0x18
0363         byte 3            Page# (0/1/2/3) (0xff --> clear OEM logo)
0364         byte 4/5/6/7      0x55/0xaa/0xa5/0x5a
0365         byte 8            TITLE.JPG data (each page must be 2000 bytes)
0366 
0367                           .. Note:: page0 1st 2 byte must be
0368                                     actual length of the JPG file
0369         ================  =============================================
0370 
0371 GUI_POLL_EVENT
0372         Poll If Event Log Changed
0373 
0374         ================  =============================================
0375         byte 0,1          length
0376         byte 2            command code 0x19
0377         ================  =============================================
0378 
0379 GUI_GET_EVENT
0380         Read Event
0381 
0382         ================  =============================================
0383         byte 0,1          length
0384         byte 2            command code 0x1a
0385         byte 3            Event Page (0:1st page/1/2/3:last page)
0386         ================  =============================================
0387 
0388 GUI_GET_HW_MONITOR
0389         Get HW monitor data
0390 
0391         ================  =============================================
0392         byte 0,1          length
0393         byte 2            command code 0x1b
0394         byte 3            # of FANs(example 2)
0395         byte 4            # of Voltage sensor(example 3)
0396         byte 5            # of temperature sensor(example 2)
0397         byte 6            # of power
0398         byte 7/8          Fan#0 (RPM)
0399         byte 9/10         Fan#1
0400         byte 11/12        Voltage#0 original value in ``*1000``
0401         byte 13/14        Voltage#0 value
0402         byte 15/16        Voltage#1 org
0403         byte 17/18        Voltage#1
0404         byte 19/20        Voltage#2 org
0405         byte 21/22        Voltage#2
0406         byte 23           Temp#0
0407         byte 24           Temp#1
0408         byte 25           Power indicator (bit0   power#0,
0409                           bit1   power#1)
0410         byte 26           UPS indicator
0411         ================  =============================================
0412 
0413 GUI_QUICK_CREATE
0414         Quick create raid/volume set
0415 
0416         ================  ==============================================
0417         byte 0,1          length
0418         byte 2            command code 0x20
0419         byte 3/4/5/6      raw capacity
0420         byte 7            raid level
0421         byte 8            stripe size
0422         byte 9            spare
0423         byte 10/11/12/13  device mask (the devices to create raid/volume)
0424         ================  ==============================================
0425 
0426     This function is removed, application like
0427     to implement quick create function
0428 
0429     need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.
0430 
0431 GUI_GET_INFO_R
0432         Get Raid Set Information
0433 
0434         ================  =============================================
0435         byte 0,1          length
0436         byte 2            command code 0x20
0437         byte 3            raidset#
0438         ================  =============================================
0439 
0440         ::
0441 
0442             typedef struct sGUI_RAIDSET
0443             {
0444                     BYTE grsRaidSetName[16];
0445                     DWORD grsCapacity;
0446                     DWORD grsCapacityX;
0447                     DWORD grsFailMask;
0448                     BYTE grsDevArray[32];
0449                     BYTE grsMemberDevices;
0450                     BYTE grsNewMemberDevices;
0451                     BYTE grsRaidState;
0452                     BYTE grsVolumes;
0453                     BYTE grsVolumeList[16];
0454                     BYTE grsRes1;
0455                     BYTE grsRes2;
0456                     BYTE grsRes3;
0457                     BYTE grsFreeSegments;
0458                     DWORD grsRawStripes[8];
0459                     DWORD grsRes4;
0460                     DWORD grsRes5; //     Total to 128 bytes
0461                     DWORD grsRes6; //     Total to 128 bytes
0462             } sGUI_RAIDSET, *pGUI_RAIDSET;
0463 
0464 GUI_GET_INFO_V
0465         Get Volume Set Information
0466 
0467         ================  =============================================
0468         byte 0,1          length
0469         byte 2            command code 0x21
0470         byte 3            volumeset#
0471         ================  =============================================
0472 
0473         ::
0474 
0475             typedef struct sGUI_VOLUMESET
0476             {
0477                     BYTE gvsVolumeName[16]; //     16
0478                     DWORD gvsCapacity;
0479                     DWORD gvsCapacityX;
0480                     DWORD gvsFailMask;
0481                     DWORD gvsStripeSize;
0482                     DWORD gvsNewFailMask;
0483                     DWORD gvsNewStripeSize;
0484                     DWORD gvsVolumeStatus;
0485                     DWORD gvsProgress; //     32
0486                     sSCSI_ATTR gvsScsi;
0487                     BYTE gvsMemberDisks;
0488                     BYTE gvsRaidLevel; //     8
0489                     BYTE gvsNewMemberDisks;
0490                     BYTE gvsNewRaidLevel;
0491                     BYTE gvsRaidSetNumber;
0492                     BYTE gvsRes0; //     4
0493                     BYTE gvsRes1[4]; //     64 bytes
0494             } sGUI_VOLUMESET, *pGUI_VOLUMESET;
0495 
0496 GUI_GET_INFO_P
0497         Get Physical Drive Information
0498 
0499         ================  =============================================
0500         byte 0,1          length
0501         byte 2            command code 0x22
0502         byte 3            drive # (from 0 to max-channels - 1)
0503         ================  =============================================
0504 
0505         ::
0506 
0507             typedef struct sGUI_PHY_DRV
0508             {
0509                     BYTE gpdModelName[40];
0510                     BYTE gpdSerialNumber[20];
0511                     BYTE gpdFirmRev[8];
0512                     DWORD gpdCapacity;
0513                     DWORD gpdCapacityX; //     Reserved for expansion
0514                     BYTE gpdDeviceState;
0515                     BYTE gpdPioMode;
0516                     BYTE gpdCurrentUdmaMode;
0517                     BYTE gpdUdmaMode;
0518                     BYTE gpdDriveSelect;
0519                     BYTE gpdRaidNumber; //     0xff if not belongs to a raid set
0520                     sSCSI_ATTR gpdScsi;
0521                     BYTE gpdReserved[40]; //     Total to 128 bytes
0522             } sGUI_PHY_DRV, *pGUI_PHY_DRV;
0523 
0524 GUI_GET_INFO_S
0525         Get System Information
0526 
0527         ================  =============================================
0528         byte 0,1          length
0529         byte 2            command code 0x23
0530         ================  =============================================
0531 
0532         ::
0533 
0534             typedef struct sCOM_ATTR
0535             {
0536                     BYTE comBaudRate;
0537                     BYTE comDataBits;
0538                     BYTE comStopBits;
0539                     BYTE comParity;
0540                     BYTE comFlowControl;
0541             } sCOM_ATTR, *pCOM_ATTR;
0542             typedef struct sSYSTEM_INFO
0543             {
0544                     BYTE gsiVendorName[40];
0545                     BYTE gsiSerialNumber[16];
0546                     BYTE gsiFirmVersion[16];
0547                     BYTE gsiBootVersion[16];
0548                     BYTE gsiMbVersion[16];
0549                     BYTE gsiModelName[8];
0550                     BYTE gsiLocalIp[4];
0551                     BYTE gsiCurrentIp[4];
0552                     DWORD gsiTimeTick;
0553                     DWORD gsiCpuSpeed;
0554                     DWORD gsiICache;
0555                     DWORD gsiDCache;
0556                     DWORD gsiScache;
0557                     DWORD gsiMemorySize;
0558                     DWORD gsiMemorySpeed;
0559                     DWORD gsiEvents;
0560                     BYTE gsiMacAddress[6];
0561                     BYTE gsiDhcp;
0562                     BYTE gsiBeeper;
0563                     BYTE gsiChannelUsage;
0564                     BYTE gsiMaxAtaMode;
0565                     BYTE gsiSdramEcc; //     1:if ECC enabled
0566                     BYTE gsiRebuildPriority;
0567                     sCOM_ATTR gsiComA; //     5 bytes
0568                     sCOM_ATTR gsiComB; //     5 bytes
0569                     BYTE gsiIdeChannels;
0570                     BYTE gsiScsiHostChannels;
0571                     BYTE gsiIdeHostChannels;
0572                     BYTE gsiMaxVolumeSet;
0573                     BYTE gsiMaxRaidSet;
0574                     BYTE gsiEtherPort; //     1:if ether net port supported
0575                     BYTE gsiRaid6Engine; //     1:Raid6 engine supported
0576                     BYTE gsiRes[75];
0577             } sSYSTEM_INFO, *pSYSTEM_INFO;
0578 
0579 GUI_CLEAR_EVENT
0580         Clear System Event
0581 
0582         ================  =============================================
0583         byte 0,1          length
0584         byte 2            command code 0x24
0585         ================  =============================================
0586 
0587 GUI_MUTE_BEEPER
0588         Mute current beeper
0589 
0590         ================  =============================================
0591         byte 0,1          length
0592         byte 2            command code 0x30
0593         ================  =============================================
0594 GUI_BEEPER_SETTING
0595         Disable beeper
0596 
0597         ================  =============================================
0598         byte 0,1          length
0599         byte 2            command code 0x31
0600         byte 3            0->disable, 1->enable
0601         ================  =============================================
0602 
0603 GUI_SET_PASSWORD
0604         Change password
0605 
0606         ================  =============================================
0607         byte 0,1          length
0608         byte 2            command code 0x32
0609         byte 3            pass word length ( must <= 15 )
0610         byte 4            password (must be alpha-numerical)
0611         ================  =============================================
0612 
0613 GUI_HOST_INTERFACE_MODE
0614         Set host interface mode
0615 
0616         ================  =============================================
0617         byte 0,1          length
0618         byte 2            command code 0x33
0619         byte 3            0->Independent, 1->cluster
0620         ================  =============================================
0621 
0622 GUI_REBUILD_PRIORITY
0623         Set rebuild priority
0624 
0625         ================  =============================================
0626         byte 0,1          length
0627         byte 2            command code 0x34
0628         byte 3            0/1/2/3 (low->high)
0629         ================  =============================================
0630 
0631 GUI_MAX_ATA_MODE
0632         Set maximum ATA mode to be used
0633 
0634         ================  =============================================
0635         byte 0,1          length
0636         byte 2            command code 0x35
0637         byte 3            0/1/2/3 (133/100/66/33)
0638         ================  =============================================
0639 
0640 GUI_RESET_CONTROLLER
0641         Reset Controller
0642 
0643         ================  =============================================
0644         byte 0,1          length
0645         byte 2            command code 0x36
0646                           * Response with VT100 screen (discard it)
0647         ================  =============================================
0648 
0649 GUI_COM_PORT_SETTING
0650         COM port setting
0651 
0652         ================  =================================================
0653         byte 0,1          length
0654         byte 2            command code 0x37
0655         byte 3            0->COMA (term port),
0656                           1->COMB (debug port)
0657         byte 4            0/1/2/3/4/5/6/7
0658                           (1200/2400/4800/9600/19200/38400/57600/115200)
0659         byte 5            data bit
0660                           (0:7 bit, 1:8 bit   must be 8 bit)
0661         byte 6            stop bit (0:1, 1:2 stop bits)
0662         byte 7            parity (0:none, 1:off, 2:even)
0663         byte 8            flow control
0664                           (0:none, 1:xon/xoff, 2:hardware => must use none)
0665         ================  =================================================
0666 
0667 GUI_NO_OPERATION
0668         No operation
0669 
0670         ================  =============================================
0671         byte 0,1          length
0672         byte 2            command code 0x38
0673         ================  =============================================
0674 
0675 GUI_DHCP_IP
0676         Set DHCP option and local IP address
0677 
0678         ================  =============================================
0679         byte 0,1          length
0680         byte 2            command code 0x39
0681         byte 3            0:dhcp disabled, 1:dhcp enabled
0682         byte 4/5/6/7      IP address
0683         ================  =============================================
0684 
0685 GUI_CREATE_PASS_THROUGH
0686         Create pass through disk
0687 
0688         ================  =============================================
0689         byte 0,1          length
0690         byte 2            command code 0x40
0691         byte 3            device #
0692         byte 4            scsi channel (0/1)
0693         byte 5            scsi id (0-->15)
0694         byte 6            scsi lun (0-->7)
0695         byte 7            tagged queue (1   enabled)
0696         byte 8            cache mode (1   enabled)
0697         byte 9            max speed (0/1/2/3/4,
0698                           async/20/40/80/160 for scsi)
0699                           (0/1/2/3/4, 33/66/100/133/150 for ide  )
0700         ================  =============================================
0701 
0702 GUI_MODIFY_PASS_THROUGH
0703         Modify pass through disk
0704 
0705         ================  =============================================
0706         byte 0,1          length
0707         byte 2            command code 0x41
0708         byte 3            device #
0709         byte 4            scsi channel (0/1)
0710         byte 5            scsi id (0-->15)
0711         byte 6            scsi lun (0-->7)
0712         byte 7            tagged queue (1   enabled)
0713         byte 8            cache mode (1   enabled)
0714         byte 9            max speed (0/1/2/3/4,
0715                           async/20/40/80/160 for scsi)
0716                           (0/1/2/3/4, 33/66/100/133/150 for ide  )
0717         ================  =============================================
0718 
0719 GUI_DELETE_PASS_THROUGH
0720         Delete pass through disk
0721 
0722         ================  =============================================
0723         byte 0,1          length
0724         byte 2            command code 0x42
0725         byte 3            device# to be deleted
0726         ================  =============================================
0727 GUI_IDENTIFY_DEVICE
0728         Identify Device
0729 
0730         ================  =============================================
0731         byte 0,1          length
0732         byte 2            command code 0x43
0733         byte 3            Flash Method
0734                           (0:flash selected, 1:flash not selected)
0735         byte 4/5/6/7      IDE device mask to be flashed
0736                           .. Note:: no response data available
0737         ================  =============================================
0738 
0739 GUI_CREATE_RAIDSET
0740         Create Raid Set
0741 
0742         ================  =============================================
0743         byte 0,1          length
0744         byte 2            command code 0x50
0745         byte 3/4/5/6      device mask
0746         byte 7-22         raidset name (if byte 7 == 0:use default)
0747         ================  =============================================
0748 
0749 GUI_DELETE_RAIDSET
0750         Delete Raid Set
0751 
0752         ================  =============================================
0753         byte 0,1          length
0754         byte 2            command code 0x51
0755         byte 3            raidset#
0756         ================  =============================================
0757 
0758 GUI_EXPAND_RAIDSET
0759         Expand Raid Set
0760 
0761         ================  =============================================
0762         byte 0,1          length
0763         byte 2            command code 0x52
0764         byte 3            raidset#
0765         byte 4/5/6/7      device mask for expansion
0766         byte 8/9/10       (8:0 no change, 1 change, 0xff:terminate,
0767                           9:new raid level,
0768                           10:new stripe size
0769                           0/1/2/3/4/5->4/8/16/32/64/128K )
0770         byte 11/12/13     repeat for each volume in the raidset
0771         ================  =============================================
0772 
0773 GUI_ACTIVATE_RAIDSET
0774         Activate incomplete raid set
0775 
0776         ================  =============================================
0777         byte 0,1          length
0778         byte 2            command code 0x53
0779         byte 3            raidset#
0780         ================  =============================================
0781 
0782 GUI_CREATE_HOT_SPARE
0783         Create hot spare disk
0784 
0785         ================  =============================================
0786         byte 0,1          length
0787         byte 2            command code 0x54
0788         byte 3/4/5/6      device mask for hot spare creation
0789         ================  =============================================
0790 
0791 GUI_DELETE_HOT_SPARE
0792         Delete hot spare disk
0793 
0794         ================  =============================================
0795         byte 0,1          length
0796         byte 2            command code 0x55
0797         byte 3/4/5/6      device mask for hot spare deletion
0798         ================  =============================================
0799 
0800 GUI_CREATE_VOLUME
0801         Create volume set
0802 
0803         ================  =============================================
0804         byte 0,1          length
0805         byte 2            command code 0x60
0806         byte 3            raidset#
0807         byte 4-19         volume set name
0808                           (if byte4 == 0, use default)
0809         byte 20-27        volume capacity (blocks)
0810         byte 28           raid level
0811         byte 29           stripe size
0812                           (0/1/2/3/4/5->4/8/16/32/64/128K)
0813         byte 30           channel
0814         byte 31           ID
0815         byte 32           LUN
0816         byte 33           1 enable tag
0817         byte 34           1 enable cache
0818         byte 35           speed
0819                           (0/1/2/3/4->async/20/40/80/160 for scsi)
0820                           (0/1/2/3/4->33/66/100/133/150 for IDE  )
0821         byte 36           1 to select quick init
0822         ================  =============================================
0823 
0824 GUI_MODIFY_VOLUME
0825         Modify volume Set
0826 
0827         ================  =============================================
0828         byte 0,1          length
0829         byte 2            command code 0x61
0830         byte 3            volumeset#
0831         byte 4-19         new volume set name
0832                           (if byte4 == 0, not change)
0833         byte 20-27        new volume capacity (reserved)
0834         byte 28           new raid level
0835         byte 29           new stripe size
0836                           (0/1/2/3/4/5->4/8/16/32/64/128K)
0837         byte 30           new channel
0838         byte 31           new ID
0839         byte 32           new LUN
0840         byte 33           1 enable tag
0841         byte 34           1 enable cache
0842         byte 35           speed
0843                           (0/1/2/3/4->async/20/40/80/160 for scsi)
0844                           (0/1/2/3/4->33/66/100/133/150 for IDE  )
0845         ================  =============================================
0846 
0847 GUI_DELETE_VOLUME
0848         Delete volume set
0849 
0850         ================  =============================================
0851         byte 0,1          length
0852         byte 2            command code 0x62
0853         byte 3            volumeset#
0854         ================  =============================================
0855 
0856 GUI_START_CHECK_VOLUME
0857         Start volume consistency check
0858 
0859         ================  =============================================
0860         byte 0,1          length
0861         byte 2            command code 0x63
0862         byte 3            volumeset#
0863         ================  =============================================
0864 
0865 GUI_STOP_CHECK_VOLUME
0866         Stop volume consistency check
0867 
0868         ================  =============================================
0869         byte 0,1          length
0870         byte 2            command code 0x64
0871         ================  =============================================
0872 
0873 4. Returned data
0874 ----------------
0875 
0876 (A) Header
0877     3 bytes sequence (0x5E, 0x01, 0x61)
0878 (B) Length
0879     2 bytes
0880     (low byte 1st, excludes length and checksum byte)
0881 (C)
0882     status or data:
0883 
0884         1) If length == 1 ==> 1 byte status code::
0885 
0886                 #define GUI_OK                    0x41
0887                 #define GUI_RAIDSET_NOT_NORMAL    0x42
0888                 #define GUI_VOLUMESET_NOT_NORMAL  0x43
0889                 #define GUI_NO_RAIDSET            0x44
0890                 #define GUI_NO_VOLUMESET          0x45
0891                 #define GUI_NO_PHYSICAL_DRIVE     0x46
0892                 #define GUI_PARAMETER_ERROR       0x47
0893                 #define GUI_UNSUPPORTED_COMMAND   0x48
0894                 #define GUI_DISK_CONFIG_CHANGED   0x49
0895                 #define GUI_INVALID_PASSWORD      0x4a
0896                 #define GUI_NO_DISK_SPACE         0x4b
0897                 #define GUI_CHECKSUM_ERROR        0x4c
0898                 #define GUI_PASSWORD_REQUIRED     0x4d
0899 
0900         2) If length > 1:
0901 
0902                 data block returned from controller
0903                 and the contents depends on the command code
0904 
0905 (E) Checksum
0906     checksum of length and status or data byte
0907