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