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