Annotation of uae/src/include/scg/scsireg.h, revision 1.1.1.1

1.1       root        1: /* @(#)scsireg.h       1.18 98/03/28 Copyright 1987 J. Schilling */
                      2: /*
                      3:  *     usefull definitions for dealing with CCS SCSI - devices
                      4:  *
                      5:  *     Copyright (c) 1987 J. Schilling
                      6:  */
                      7: /*
                      8:  * This program is free software; you can redistribute it and/or modify
                      9:  * it under the terms of the GNU General Public License as published by
                     10:  * the Free Software Foundation; either version 2, or (at your option)
                     11:  * any later version.
                     12:  *
                     13:  * This program is distributed in the hope that it will be useful,
                     14:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
                     15:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     16:  * GNU General Public License for more details.
                     17:  *
                     18:  * You should have received a copy of the GNU General Public License
                     19:  * along with this program; see the file COPYING.  If not, write to
                     20:  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
                     21:  */
                     22: 
                     23: #ifndef        _SCSIREG_H
                     24: #define        _SCSIREG_H
                     25: 
                     26: #include "scg/utypes.h"
                     27: #include "scg/btorder.h"
                     28: 
                     29: /* 
                     30:  * SCSI status bits.
                     31:  */
                     32: #define        ST_VU_00        0x01    /* Vendor unique                */
                     33: #define        ST_CHK_COND     0x02    /* Check condition              */
                     34: #define        ST_COND_MET     0x04    /* Condition met                */
                     35: #define        ST_BUSY         0x08    /* Busy                         */
                     36: #define        ST_IS_SEND      0x10    /* Intermediate status send     */
                     37: #define        ST_VU_05        0x20    /* Vendor unique                */
                     38: #define        ST_VU_06        0x40    /* Vendor unique                */
                     39: #define        ST_RSVD_07      0x80    /* Reserved                     */
                     40: 
                     41: /* 
                     42:  * Sense key values for extended sense.
                     43:  */
                     44: #define SC_NO_SENSE            0x00
                     45: #define SC_RECOVERABLE_ERROR   0x01
                     46: #define SC_NOT_READY           0x02
                     47: #define SC_MEDIUM_ERROR                0x03
                     48: #define SC_HARDWARE_ERROR      0x04
                     49: #define SC_ILLEGAL_REQUEST     0x05
                     50: #define SC_UNIT_ATTENTION      0x06
                     51: #define SC_WRITE_PROTECT       0x07
                     52: #define SC_BLANK_CHECK         0x08
                     53: #define SC_VENDOR_UNIQUE       0x09
                     54: #define SC_COPY_ABORTED                0x0A
                     55: #define SC_ABORTED_COMMAND     0x0B
                     56: #define SC_EQUAL               0x0C
                     57: #define SC_VOLUME_OVERFLOW     0x0D
                     58: #define SC_MISCOMPARE          0x0E
                     59: #define SC_RESERVED            0x0F
                     60: 
                     61: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                     62: 
                     63: struct scsi_inquiry {
                     64:        Ucbit   type            : 5;    /*  0 */
                     65:        Ucbit   qualifier       : 3;    /*  0 */
                     66: 
                     67:        Ucbit   type_modifier   : 7;    /*  1 */
                     68:        Ucbit   removable       : 1;    /*  1 */
                     69: 
                     70:        Ucbit   ansi_version    : 3;    /*  2 */
                     71:        Ucbit   ecma_version    : 3;    /*  2 */
                     72:        Ucbit   iso_version     : 2;    /*  2 */
                     73: 
                     74:        Ucbit   data_format     : 4;    /*  3 */
                     75:        Ucbit   res3_54         : 2;    /*  3 */
                     76:        Ucbit   termiop         : 1;    /*  3 */
                     77:        Ucbit   aenc            : 1;    /*  3 */
                     78: 
                     79:        Ucbit   add_len         : 8;    /*  4 */
                     80:        Ucbit   sense_len       : 8;    /*  5 */ /* only Emulex ??? */
                     81:        Ucbit   res2            : 8;    /*  6 */
                     82: 
                     83:        Ucbit   softreset       : 1;    /*  7 */
                     84:        Ucbit   cmdque          : 1;
                     85:        Ucbit   res7_2          : 1;
                     86:        Ucbit   linked          : 1;
                     87:        Ucbit   sync            : 1;
                     88:        Ucbit   wbus16          : 1;
                     89:        Ucbit   wbus32          : 1;
                     90:        Ucbit   reladr          : 1;    /*  7 */
                     91: 
                     92:        char    vendor_info[8];         /*  8 */
                     93:        char    prod_ident[16];         /* 16 */
                     94:        char    prod_revision[4];       /* 32 */
                     95: #ifdef comment
                     96:        char    vendor_uniq[20];        /* 36 */
                     97:        char    reserved[40];           /* 56 */
                     98: #endif
                     99: };                                     /* 96 */
                    100: 
                    101: #else                                  /* Motorola byteorder */
                    102: 
                    103: struct scsi_inquiry {
                    104:        Ucbit   qualifier       : 3;    /*  0 */
                    105:        Ucbit   type            : 5;    /*  0 */
                    106: 
                    107:        Ucbit   removable       : 1;    /*  1 */
                    108:        Ucbit   type_modifier   : 7;    /*  1 */
                    109: 
                    110:        Ucbit   iso_version     : 2;    /*  2 */
                    111:        Ucbit   ecma_version    : 3;
                    112:        Ucbit   ansi_version    : 3;    /*  2 */
                    113: 
                    114:        Ucbit   aenc            : 1;    /*  3 */
                    115:        Ucbit   termiop         : 1;
                    116:        Ucbit   res3_54         : 2;
                    117:        Ucbit   data_format     : 4;    /*  3 */
                    118: 
                    119:        Ucbit   add_len         : 8;    /*  4 */
                    120:        Ucbit   sense_len       : 8;    /*  5 */ /* only Emulex ??? */
                    121:        Ucbit   res2            : 8;    /*  6 */
                    122:        Ucbit   reladr          : 1;    /*  7 */
                    123:        Ucbit   wbus32          : 1;
                    124:        Ucbit   wbus16          : 1;
                    125:        Ucbit   sync            : 1;
                    126:        Ucbit   linked          : 1;
                    127:        Ucbit   res7_2          : 1;
                    128:        Ucbit   cmdque          : 1;
                    129:        Ucbit   softreset       : 1;
                    130:        char    vendor_info[8];         /*  8 */
                    131:        char    prod_ident[16];         /* 16 */
                    132:        char    prod_revision[4];       /* 32 */
                    133: #ifdef comment
                    134:        char    vendor_uniq[20];        /* 36 */
                    135:        char    reserved[40];           /* 56 */
                    136: #endif
                    137: };                                     /* 96 */
                    138: #endif
                    139: 
                    140: #define        info            vendor_info
                    141: #define        ident           prod_ident
                    142: #define        revision        prod_revision
                    143: 
                    144: /* Peripheral Device Qualifier */
                    145: 
                    146: #define        INQ_DEV_PRESENT 0x00            /* Physical device present */
                    147: #define        INQ_DEV_NOTPR   0x01            /* Physical device not present */
                    148: #define        INQ_DEV_RES     0x02            /* Reserved */
                    149: #define        INQ_DEV_NOTSUP  0x03            /* Logical unit not supported */
                    150: 
                    151: /* Peripheral Device Type */
                    152: 
                    153: #define        INQ_DASD        0x00            /* Direct-access device (disk) */
                    154: #define        INQ_SEQD        0x01            /* Sequential-access device (tape) */
                    155: #define        INQ_PRTD        0x02            /* Printer device */
                    156: #define        INQ_PROCD       0x03            /* Processor device */
                    157: #define        INQ_OPTD        0x04            /* Write once device (optical disk) */
                    158: #define        INQ_WORM        0x04            /* Write once device (optical disk) */
                    159: #define        INQ_ROMD        0x05            /* CD-ROM device */
                    160: #define        INQ_SCAN        0x06            /* Scanner device */
                    161: #define        INQ_OMEM        0x07            /* Optical Memory device */
                    162: #define        INQ_JUKE        0x08            /* Medium Changer device (jukebox) */
                    163: #define        INQ_COMM        0x09            /* Communications device */
                    164: #define        INQ_IT8_1       0x0A            /* IT8 */
                    165: #define        INQ_IT8_2       0x0B            /* IT8 */
                    166: #define        INQ_STARR       0x0C            /* Storage array device */
                    167: #define        INQ_ENCL        0x0D            /* Enclosure services device */
                    168: #define        INQ_NODEV       0x1F            /* Unknown or no device */
                    169: #define        INQ_NOTPR       0x1F            /* Logical unit not present (SCSI-1) */
                    170: 
                    171: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    172: 
                    173: struct scsi_mode_header {
                    174:        Ucbit   sense_data_len  : 8;
                    175:        u_char  medium_type;
                    176:        Ucbit   res2            : 4;
                    177:        Ucbit   cache           : 1;
                    178:        Ucbit   res             : 2;
                    179:        Ucbit   write_prot      : 1;
                    180:        u_char  blockdesc_len;
                    181: };
                    182: 
                    183: #else                                  /* Motorola byteorder */
                    184: 
                    185: struct scsi_mode_header {
                    186:        Ucbit   sense_data_len  : 8;
                    187:        u_char  medium_type;
                    188:        Ucbit   write_prot      : 1;
                    189:        Ucbit   res             : 2;
                    190:        Ucbit   cache           : 1;
                    191:        Ucbit   res2            : 4;
                    192:        u_char  blockdesc_len;
                    193: };
                    194: #endif
                    195: 
                    196: struct scsi_modesel_header {
                    197:        Ucbit   sense_data_len  : 8;
                    198:        u_char  medium_type;
                    199:        Ucbit   res2            : 8;
                    200:        u_char  blockdesc_len;
                    201: };
                    202: 
                    203: struct scsi_mode_blockdesc {
                    204:        u_char  density;
                    205:        u_char  nlblock[3];
                    206:        Ucbit   res             : 8;
                    207:        u_char  lblen[3];
                    208: };
                    209: 
                    210: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    211: 
                    212: struct acb_mode_data {
                    213:        u_char  listformat;
                    214:        u_char  ncyl[2];
                    215:        u_char  nhead;
                    216:        u_char  start_red_wcurrent[2];
                    217:        u_char  start_precomp[2];
                    218:        u_char  landing_zone;
                    219:        u_char  step_rate;
                    220:        Ucbit                   : 2;
                    221:        Ucbit   hard_sec        : 1;
                    222:        Ucbit   fixed_media     : 1;
                    223:        Ucbit                   : 4;
                    224:        u_char  sect_per_trk;
                    225: };
                    226: 
                    227: #else                                  /* Motorola byteorder */
                    228: 
                    229: struct acb_mode_data {
                    230:        u_char  listformat;
                    231:        u_char  ncyl[2];
                    232:        u_char  nhead;
                    233:        u_char  start_red_wcurrent[2];
                    234:        u_char  start_precomp[2];
                    235:        u_char  landing_zone;
                    236:        u_char  step_rate;
                    237:        Ucbit                   : 4;
                    238:        Ucbit   fixed_media     : 1;
                    239:        Ucbit   hard_sec        : 1;
                    240:        Ucbit                   : 2;
                    241:        u_char  sect_per_trk;
                    242: };
                    243: #endif
                    244: 
                    245: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    246: 
                    247: struct scsi_mode_page_header {
                    248:        Ucbit   p_code          : 6;
                    249:        Ucbit   res             : 1;
                    250:        Ucbit   parsave         : 1;
                    251:        u_char  p_len;
                    252: };
                    253: 
                    254: /*
                    255:  * This is a hack that allows mode pages without
                    256:  * any further bitfileds to be defined bitorder independent.
                    257:  */
                    258: #define        MP_P_CODE                       \
                    259:        Ucbit   p_code          : 6;    \
                    260:        Ucbit   p_res           : 1;    \
                    261:        Ucbit   parsave         : 1
                    262: 
                    263: #else                                  /* Motorola byteorder */
                    264: 
                    265: struct scsi_mode_page_header {
                    266:        Ucbit   parsave         : 1;
                    267:        Ucbit   res             : 1;
                    268:        Ucbit   p_code          : 6;
                    269:        u_char  p_len;
                    270: };
                    271: 
                    272: /*
                    273:  * This is a hack that allows mode pages without
                    274:  * any further bitfileds to be defined bitorder independent.
                    275:  */
                    276: #define        MP_P_CODE                       \
                    277:        Ucbit   parsave         : 1;    \
                    278:        Ucbit   p_res           : 1;    \
                    279:        Ucbit   p_code          : 6
                    280: 
                    281: #endif
                    282: 
                    283: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    284: 
                    285: struct scsi_mode_page_01 {             /* Error recovery Parameters */
                    286:                MP_P_CODE;              /* parsave & pagecode */
                    287:        u_char  p_len;                  /* 0x0A = 12 Bytes */
                    288:        Ucbit   disa_correction : 1;    /* Byte 2 */
                    289:        Ucbit   term_on_rec_err : 1;
                    290:        Ucbit   report_rec_err  : 1;
                    291:        Ucbit   en_early_corr   : 1;
                    292:        Ucbit   read_continuous : 1;
                    293:        Ucbit   tranfer_block   : 1;
                    294:        Ucbit   en_auto_reall_r : 1;
                    295:        Ucbit   en_auto_reall_w : 1;    /* Byte 2 */
                    296:        u_char  rd_retry_count;         /* Byte 3 */
                    297:        u_char  correction_span;
                    298:        char    head_offset_count;
                    299:        char    data_strobe_offset;
                    300:        u_char  res;
                    301:        u_char  wr_retry_count;
                    302:        u_char  res_tape[2];
                    303:        u_char  recov_timelim[2];
                    304: };
                    305: 
                    306: #else                                  /* Motorola byteorder */
                    307: 
                    308: struct scsi_mode_page_01 {             /* Error recovery Parameters */
                    309:                MP_P_CODE;              /* parsave & pagecode */
                    310:        u_char  p_len;                  /* 0x0A = 12 Bytes */
                    311:        Ucbit   en_auto_reall_w : 1;    /* Byte 2 */
                    312:        Ucbit   en_auto_reall_r : 1;
                    313:        Ucbit   tranfer_block   : 1;
                    314:        Ucbit   read_continuous : 1;
                    315:        Ucbit   en_early_corr   : 1;
                    316:        Ucbit   report_rec_err  : 1;
                    317:        Ucbit   term_on_rec_err : 1;
                    318:        Ucbit   disa_correction : 1;    /* Byte 2 */
                    319:        u_char  rd_retry_count;         /* Byte 3 */
                    320:        u_char  correction_span;
                    321:        char    head_offset_count;
                    322:        char    data_strobe_offset;
                    323:        u_char  res;
                    324:        u_char  wr_retry_count;
                    325:        u_char  res_tape[2];
                    326:        u_char  recov_timelim[2];
                    327: };
                    328: #endif
                    329: 
                    330: 
                    331: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    332: 
                    333: struct scsi_mode_page_02 {             /* Device dis/re connect Parameters */
                    334:                MP_P_CODE;              /* parsave & pagecode */
                    335:        u_char  p_len;                  /* 0x0E = 16 Bytes */
                    336:        u_char  buf_full_ratio;
                    337:        u_char  buf_empt_ratio;
                    338:        u_char  bus_inact_limit[2];
                    339:        u_char  disc_time_limit[2];
                    340:        u_char  conn_time_limit[2];
                    341:        u_char  max_burst_size[2];      /* Start SCSI-2 */
                    342:        Ucbit   data_tr_dis_ctl : 2;
                    343:        Ucbit                   : 6;
                    344:        u_char  res[3];
                    345: };
                    346: 
                    347: #else                                  /* Motorola byteorder */
                    348: 
                    349: struct scsi_mode_page_02 {             /* Device dis/re connect Parameters */
                    350:                MP_P_CODE;              /* parsave & pagecode */
                    351:        u_char  p_len;                  /* 0x0E = 16 Bytes */
                    352:        u_char  buf_full_ratio;
                    353:        u_char  buf_empt_ratio;
                    354:        u_char  bus_inact_limit[2];
                    355:        u_char  disc_time_limit[2];
                    356:        u_char  conn_time_limit[2];
                    357:        u_char  max_burst_size[2];      /* Start SCSI-2 */
                    358:        Ucbit                   : 6;
                    359:        Ucbit   data_tr_dis_ctl : 2;
                    360:        u_char  res[3];
                    361: };
                    362: #endif
                    363: 
                    364: #define        DTDC_DATADONE   0x01            /*
                    365:                                         * Target may not disconnect once
                    366:                                         * data transfer is started until
                    367:                                         * all data successfully transferred.
                    368:                                         */
                    369: 
                    370: #define        DTDC_CMDDONE    0x03            /*
                    371:                                         * Target may not disconnect once
                    372:                                         * data transfer is started until
                    373:                                         * command completed.
                    374:                                         */
                    375: 
                    376: 
                    377: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    378: 
                    379: struct scsi_mode_page_03 {             /* Direct access format Paramters */
                    380:                MP_P_CODE;              /* parsave & pagecode */
                    381:        u_char  p_len;                  /* 0x16 = 24 Bytes */
                    382:        u_char  trk_per_zone[2];
                    383:        u_char  alt_sec_per_zone[2];
                    384:        u_char  alt_trk_per_zone[2];
                    385:        u_char  alt_trk_per_vol[2];
                    386:        u_char  sect_per_trk[2];
                    387:        u_char  bytes_per_phys_sect[2];
                    388:        u_char  interleave[2];
                    389:        u_char  trk_skew[2];
                    390:        u_char  cyl_skew[2];
                    391:        Ucbit                   : 3;
                    392:        Ucbit   inhibit_save    : 1;
                    393:        Ucbit   fmt_by_surface  : 1;
                    394:        Ucbit   removable       : 1;
                    395:        Ucbit   hard_sec        : 1;
                    396:        Ucbit   soft_sec        : 1;
                    397:        u_char  res[3];
                    398: };
                    399: 
                    400: #else                                  /* Motorola byteorder */
                    401: 
                    402: struct scsi_mode_page_03 {             /* Direct access format Paramters */
                    403:                MP_P_CODE;              /* parsave & pagecode */
                    404:        u_char  p_len;                  /* 0x16 = 24 Bytes */
                    405:        u_char  trk_per_zone[2];
                    406:        u_char  alt_sec_per_zone[2];
                    407:        u_char  alt_trk_per_zone[2];
                    408:        u_char  alt_trk_per_vol[2];
                    409:        u_char  sect_per_trk[2];
                    410:        u_char  bytes_per_phys_sect[2];
                    411:        u_char  interleave[2];
                    412:        u_char  trk_skew[2];
                    413:        u_char  cyl_skew[2];
                    414:        Ucbit   soft_sec        : 1;
                    415:        Ucbit   hard_sec        : 1;
                    416:        Ucbit   removable       : 1;
                    417:        Ucbit   fmt_by_surface  : 1;
                    418:        Ucbit   inhibit_save    : 1;
                    419:        Ucbit                   : 3;
                    420:        u_char  res[3];
                    421: };
                    422: #endif
                    423: 
                    424: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    425: 
                    426: struct scsi_mode_page_04 {             /* Rigid disk Geometry Parameters */
                    427:                MP_P_CODE;              /* parsave & pagecode */
                    428:        u_char  p_len;                  /* 0x16 = 24 Bytes */
                    429:        u_char  ncyl[3];
                    430:        u_char  nhead;
                    431:        u_char  start_precomp[3];
                    432:        u_char  start_red_wcurrent[3];
                    433:        u_char  step_rate[2];
                    434:        u_char  landing_zone[3];
                    435:        Ucbit   rot_pos_locking : 2;    /* Start SCSI-2 */
                    436:        Ucbit                   : 6;    /* Start SCSI-2 */
                    437:        u_char  rotational_off;
                    438:        u_char  res1;
                    439:        u_char  rotation_rate[2];
                    440:        u_char  res2[2];
                    441: };
                    442: 
                    443: #else                                  /* Motorola byteorder */
                    444: 
                    445: struct scsi_mode_page_04 {             /* Rigid disk Geometry Parameters */
                    446:                MP_P_CODE;              /* parsave & pagecode */
                    447:        u_char  p_len;                  /* 0x16 = 24 Bytes */
                    448:        u_char  ncyl[3];
                    449:        u_char  nhead;
                    450:        u_char  start_precomp[3];
                    451:        u_char  start_red_wcurrent[3];
                    452:        u_char  step_rate[2];
                    453:        u_char  landing_zone[3];
                    454:        Ucbit                   : 6;    /* Start SCSI-2 */
                    455:        Ucbit   rot_pos_locking : 2;    /* Start SCSI-2 */
                    456:        u_char  rotational_off;
                    457:        u_char  res1;
                    458:        u_char  rotation_rate[2];
                    459:        u_char  res2[2];
                    460: };
                    461: #endif
                    462: 
                    463: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    464: 
                    465: struct scsi_mode_page_05 {             /* Flexible disk Parameters */
                    466:                MP_P_CODE;              /* parsave & pagecode */
                    467:        u_char  p_len;                  /* 0x1E = 32 Bytes */
                    468:        u_char  transfer_rate[2];
                    469:        u_char  nhead;
                    470:        u_char  sect_per_trk;
                    471:        u_char  bytes_per_phys_sect[2];
                    472:        u_char  ncyl[2];
                    473:        u_char  start_precomp[2];
                    474:        u_char  start_red_wcurrent[2];
                    475:        u_char  step_rate[2];
                    476:        u_char  step_pulse_width;
                    477:        u_char  head_settle_delay[2];
                    478:        u_char  motor_on_delay;
                    479:        u_char  motor_off_delay;
                    480:        Ucbit   spc             : 4;
                    481:        Ucbit                   : 4;
                    482:        Ucbit                   : 5;
                    483:        Ucbit   mo              : 1;
                    484:        Ucbit   ssn             : 1;
                    485:        Ucbit   trdy            : 1;
                    486:        u_char  write_compensation;
                    487:        u_char  head_load_delay;
                    488:        u_char  head_unload_delay;
                    489:        Ucbit   pin_2_use       : 4;
                    490:        Ucbit   pin_34_use      : 4;
                    491:        Ucbit   pin_1_use       : 4;
                    492:        Ucbit   pin_4_use       : 4;
                    493:        u_char  rotation_rate[2];
                    494:        u_char  res[2];
                    495: };
                    496: 
                    497: #else                                  /* Motorola byteorder */
                    498: 
                    499: struct scsi_mode_page_05 {             /* Flexible disk Parameters */
                    500:                MP_P_CODE;              /* parsave & pagecode */
                    501:        u_char  p_len;                  /* 0x1E = 32 Bytes */
                    502:        u_char  transfer_rate[2];
                    503:        u_char  nhead;
                    504:        u_char  sect_per_trk;
                    505:        u_char  bytes_per_phys_sect[2];
                    506:        u_char  ncyl[2];
                    507:        u_char  start_precomp[2];
                    508:        u_char  start_red_wcurrent[2];
                    509:        u_char  step_rate[2];
                    510:        u_char  step_pulse_width;
                    511:        u_char  head_settle_delay[2];
                    512:        u_char  motor_on_delay;
                    513:        u_char  motor_off_delay;
                    514:        Ucbit   trdy            : 1;
                    515:        Ucbit   ssn             : 1;
                    516:        Ucbit   mo              : 1;
                    517:        Ucbit                   : 5;
                    518:        Ucbit                   : 4;
                    519:        Ucbit   spc             : 4;
                    520:        u_char  write_compensation;
                    521:        u_char  head_load_delay;
                    522:        u_char  head_unload_delay;
                    523:        Ucbit   pin_34_use      : 4;
                    524:        Ucbit   pin_2_use       : 4;
                    525:        Ucbit   pin_4_use       : 4;
                    526:        Ucbit   pin_1_use       : 4;
                    527:        u_char  rotation_rate[2];
                    528:        u_char  res[2];
                    529: };
                    530: #endif
                    531: 
                    532: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    533: 
                    534: struct scsi_mode_page_07 {             /* Verify Error recovery */
                    535:                MP_P_CODE;              /* parsave & pagecode */
                    536:        u_char  p_len;                  /* 0x0A = 12 Bytes */
                    537:        Ucbit   disa_correction : 1;    /* Byte 2 */
                    538:        Ucbit   term_on_rec_err : 1;
                    539:        Ucbit   report_rec_err  : 1;
                    540:        Ucbit   en_early_corr   : 1;
                    541:        Ucbit   res             : 4;    /* Byte 2 */
                    542:        u_char  ve_retry_count;         /* Byte 3 */
                    543:        u_char  ve_correction_span;
                    544:        char    res2[5];                /* Byte 5 */
                    545:        u_char  ve_recov_timelim[2];    /* Byte 10 */
                    546: };
                    547: 
                    548: #else                                  /* Motorola byteorder */
                    549: 
                    550: struct scsi_mode_page_07 {             /* Verify Error recovery */
                    551:                MP_P_CODE;              /* parsave & pagecode */
                    552:        u_char  p_len;                  /* 0x0A = 12 Bytes */
                    553:        Ucbit   res             : 4;    /* Byte 2 */
                    554:        Ucbit   en_early_corr   : 1;
                    555:        Ucbit   report_rec_err  : 1;
                    556:        Ucbit   term_on_rec_err : 1;
                    557:        Ucbit   disa_correction : 1;    /* Byte 2 */
                    558:        u_char  ve_retry_count;         /* Byte 3 */
                    559:        u_char  ve_correction_span;
                    560:        char    res2[5];                /* Byte 5 */
                    561:        u_char  ve_recov_timelim[2];    /* Byte 10 */
                    562: };
                    563: #endif
                    564: 
                    565: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    566: 
                    567: struct scsi_mode_page_08 {             /* Caching Parameters */
                    568:                MP_P_CODE;              /* parsave & pagecode */
                    569:        u_char  p_len;                  /* 0x0A = 12 Bytes */
                    570:        Ucbit   disa_rd_cache   : 1;    /* Byte 2 */
                    571:        Ucbit   muliple_fact    : 1;
                    572:        Ucbit   en_wt_cache     : 1;
                    573:        Ucbit   res             : 5;    /* Byte 2 */
                    574:        Ucbit   wt_ret_pri      : 4;    /* Byte 3 */
                    575:        Ucbit   demand_rd_ret_pri: 4;   /* Byte 3 */
                    576:        u_char  disa_pref_tr_len[2];    /* Byte 4 */
                    577:        u_char  min_pref[2];            /* Byte 6 */
                    578:        u_char  max_pref[2];            /* Byte 8 */
                    579:        u_char  max_pref_ceiling[2];    /* Byte 10 */
                    580: };
                    581: 
                    582: #else                                  /* Motorola byteorder */
                    583: 
                    584: struct scsi_mode_page_08 {             /* Caching Parameters */
                    585:                MP_P_CODE;              /* parsave & pagecode */
                    586:        u_char  p_len;                  /* 0x0A = 12 Bytes */
                    587:        Ucbit   res             : 5;    /* Byte 2 */
                    588:        Ucbit   en_wt_cache     : 1;
                    589:        Ucbit   muliple_fact    : 1;
                    590:        Ucbit   disa_rd_cache   : 1;    /* Byte 2 */
                    591:        Ucbit   demand_rd_ret_pri: 4;   /* Byte 3 */
                    592:        Ucbit   wt_ret_pri      : 4;
                    593:        u_char  disa_pref_tr_len[2];    /* Byte 4 */
                    594:        u_char  min_pref[2];            /* Byte 6 */
                    595:        u_char  max_pref[2];            /* Byte 8 */
                    596:        u_char  max_pref_ceiling[2];    /* Byte 10 */
                    597: };
                    598: #endif
                    599: 
                    600: struct scsi_mode_page_09 {             /* Peripheral device Parameters */
                    601:                MP_P_CODE;              /* parsave & pagecode */
                    602:        u_char  p_len;                  /* >= 0x06 = 8 Bytes */
                    603:        u_char  interface_id[2];        /* Byte 2 */
                    604:        u_char  res[4];                 /* Byte 4 */
                    605:        u_char  vendor_specific[1];     /* Byte 8 */
                    606: };
                    607: 
                    608: #define        PDEV_SCSI       0x0000          /* scsi interface */
                    609: #define        PDEV_SMD        0x0001          /* SMD interface */
                    610: #define        PDEV_ESDI       0x0002          /* ESDI interface */
                    611: #define        PDEV_IPI2       0x0003          /* IPI-2 interface */
                    612: #define        PDEV_IPI3       0x0004          /* IPI-3 interface */
                    613: 
                    614: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    615: 
                    616: struct scsi_mode_page_0A {             /* Common device Control Parameters */
                    617:                MP_P_CODE;              /* parsave & pagecode */
                    618:        u_char  p_len;                  /* 0x06 = 8 Bytes */
                    619:        Ucbit   rep_log_exeption: 1;    /* Byte 2 */
                    620:        Ucbit   res             : 7;    /* Byte 2 */
                    621:        Ucbit   dis_queuing     : 1;    /* Byte 3 */
                    622:        Ucbit   queuing_err_man : 1;
                    623:        Ucbit   res2            : 2;
                    624:        Ucbit   queue_alg_mod   : 4;    /* Byte 3 */
                    625:        Ucbit   EAENP           : 1;    /* Byte 4 */
                    626:        Ucbit   UAENP           : 1;
                    627:        Ucbit   RAENP           : 1;
                    628:        Ucbit   res3            : 4;
                    629:        Ucbit   en_ext_cont_all : 1;    /* Byte 4 */
                    630:        Ucbit   res4            : 8;
                    631:        u_char  ready_aen_hold_per[2];  /* Byte 6 */
                    632: };
                    633: 
                    634: #else                                  /* Motorola byteorder */
                    635: 
                    636: struct scsi_mode_page_0A {             /* Common device Control Parameters */
                    637:                MP_P_CODE;              /* parsave & pagecode */
                    638:        u_char  p_len;                  /* 0x06 = 8 Bytes */
                    639:        Ucbit   res             : 7;    /* Byte 2 */
                    640:        Ucbit   rep_log_exeption: 1;    /* Byte 2 */
                    641:        Ucbit   queue_alg_mod   : 4;    /* Byte 3 */
                    642:        Ucbit   res2            : 2;
                    643:        Ucbit   queuing_err_man : 1;
                    644:        Ucbit   dis_queuing     : 1;    /* Byte 3 */
                    645:        Ucbit   en_ext_cont_all : 1;    /* Byte 4 */
                    646:        Ucbit   res3            : 4;
                    647:        Ucbit   RAENP           : 1;
                    648:        Ucbit   UAENP           : 1;
                    649:        Ucbit   EAENP           : 1;    /* Byte 4 */
                    650:        Ucbit   res4            : 8;
                    651:        u_char  ready_aen_hold_per[2];  /* Byte 6 */
                    652: };
                    653: #endif
                    654: 
                    655: #define        CTRL_QMOD_RESTRICT      0x0
                    656: #define        CTRL_QMOD_UNRESTRICT    0x1
                    657: 
                    658: 
                    659: struct scsi_mode_page_0B {             /* Medium Types Supported Parameters */
                    660:                MP_P_CODE;              /* parsave & pagecode */
                    661:        u_char  p_len;                  /* 0x06 = 8 Bytes */
                    662:        u_char  res[2];                 /* Byte 2 */
                    663:        u_char  medium_one_supp;        /* Byte 4 */
                    664:        u_char  medium_two_supp;        /* Byte 5 */
                    665:        u_char  medium_three_supp;      /* Byte 6 */
                    666:        u_char  medium_four_supp;       /* Byte 7 */
                    667: };
                    668: 
                    669: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    670: 
                    671: struct scsi_mode_page_0C {             /* Notch & Partition Parameters */
                    672:                MP_P_CODE;              /* parsave & pagecode */
                    673:        u_char  p_len;                  /* 0x16 = 24 Bytes */
                    674:        Ucbit   res             : 6;    /* Byte 2 */
                    675:        Ucbit   logical_notch   : 1;
                    676:        Ucbit   notched_drive   : 1;    /* Byte 2 */
                    677:        u_char  res2;                   /* Byte 3 */
                    678:        u_char  max_notches[2];         /* Byte 4  */
                    679:        u_char  active_notch[2];        /* Byte 6  */
                    680:        u_char  starting_boundary[4];   /* Byte 8  */
                    681:        u_char  ending_boundary[4];     /* Byte 12 */
                    682:        u_char  pages_notched[8];       /* Byte 16 */
                    683: };
                    684: 
                    685: #else                                  /* Motorola byteorder */
                    686: 
                    687: struct scsi_mode_page_0C {             /* Notch & Partition Parameters */
                    688:                MP_P_CODE;              /* parsave & pagecode */
                    689:        u_char  p_len;                  /* 0x16 = 24 Bytes */
                    690:        Ucbit   notched_drive   : 1;    /* Byte 2 */
                    691:        Ucbit   logical_notch   : 1;
                    692:        Ucbit   res             : 6;    /* Byte 2 */
                    693:        u_char  res2;                   /* Byte 3 */
                    694:        u_char  max_notches[2];         /* Byte 4  */
                    695:        u_char  active_notch[2];        /* Byte 6  */
                    696:        u_char  starting_boundary[4];   /* Byte 8  */
                    697:        u_char  ending_boundary[4];     /* Byte 12 */
                    698:        u_char  pages_notched[8];       /* Byte 16 */
                    699: };
                    700: #endif
                    701: 
                    702: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    703: 
                    704: struct scsi_mode_page_0D {             /* CD-ROM Parameters */
                    705:                MP_P_CODE;              /* parsave & pagecode */
                    706:        u_char  p_len;                  /* 0x06 = 8 Bytes */
                    707:        u_char  res;                    /* Byte 2 */
                    708:        Ucbit   inact_timer_mult: 4;    /* Byte 3 */
                    709:        Ucbit   res2            : 4;    /* Byte 3 */
                    710:        u_char  s_un_per_m_un[2];       /* Byte 4  */
                    711:        u_char  f_un_per_s_un[2];       /* Byte 6  */
                    712: };
                    713: 
                    714: #else                                  /* Motorola byteorder */
                    715: 
                    716: struct scsi_mode_page_0D {             /* CD-ROM Parameters */
                    717:                MP_P_CODE;              /* parsave & pagecode */
                    718:        u_char  p_len;                  /* 0x06 = 8 Bytes */
                    719:        u_char  res;                    /* Byte 2 */
                    720:        Ucbit   res2            : 4;    /* Byte 3 */
                    721:        Ucbit   inact_timer_mult: 4;    /* Byte 3 */
                    722:        u_char  s_un_per_m_un[2];       /* Byte 4  */
                    723:        u_char  f_un_per_s_un[2];       /* Byte 6  */
                    724: };
                    725: #endif
                    726: 
                    727: struct sony_mode_page_20 {             /* Sony Format Mode Parameters */
                    728:                MP_P_CODE;              /* parsave & pagecode */
                    729:        u_char  p_len;                  /* 0x0A = 12 Bytes */
                    730:        u_char  format_mode;
                    731:        u_char  format_type;
                    732: #define        num_bands       user_band_size  /* Gilt bei Type 1 */
                    733:        u_char  user_band_size[4];      /* Gilt bei Type 0 */
                    734:        u_char  spare_band_size[2];
                    735:        u_char  res[2];
                    736: };
                    737: 
                    738: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    739: 
                    740: struct toshiba_mode_page_20 {          /* Toshiba Speed Control Parameters */
                    741:                MP_P_CODE;              /* parsave & pagecode */
                    742:        u_char  p_len;                  /* 0x01 = 3 Bytes */
                    743:        Ucbit   speed           : 1;
                    744:        Ucbit   res             : 7;
                    745: };
                    746: 
                    747: #else                                  /* Motorola byteorder */
                    748: 
                    749: struct toshiba_mode_page_20 {          /* Toshiba Speed Control Parameters */
                    750:                MP_P_CODE;              /* parsave & pagecode */
                    751:        u_char  p_len;                  /* 0x01 = 3 Bytes */
                    752:        Ucbit   res             : 7;
                    753:        Ucbit   speed           : 1;
                    754: };
                    755: #endif
                    756: 
                    757: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                    758: 
                    759: struct ccs_mode_page_38 {              /* CCS Caching Parameters */
                    760:                MP_P_CODE;              /* parsave & pagecode */
                    761:        u_char  p_len;                  /* 0x0E = 14 Bytes */
                    762: 
                    763:        Ucbit   cache_table_size: 4;    /* Byte 3 */
                    764:        Ucbit   cache_en        : 1;
                    765:        Ucbit   res2            : 1;
                    766:        Ucbit   wr_index_en     : 1;
                    767:        Ucbit   res             : 1;    /* Byte 3 */
                    768:        u_char  threshold;              /* Byte 4 Prefetch threshold */
                    769:        u_char  max_prefetch;           /* Byte 5 Max. prefetch */
                    770:        u_char  max_multiplier;         /* Byte 6 Max. prefetch multiplier */
                    771:        u_char  min_prefetch;           /* Byte 7 Min. prefetch */
                    772:        u_char  min_multiplier;         /* Byte 8 Min. prefetch multiplier */
                    773:        u_char  res3[8];                /* Byte 9 */
                    774: };
                    775: 
                    776: #else                                  /* Motorola byteorder */
                    777: 
                    778: struct ccs_mode_page_38 {              /* CCS Caching Parameters */
                    779:                MP_P_CODE;              /* parsave & pagecode */
                    780:        u_char  p_len;                  /* 0x0E = 14 Bytes */
                    781: 
                    782:        Ucbit   res             : 1;    /* Byte 3 */
                    783:        Ucbit   wr_index_en     : 1;
                    784:        Ucbit   res2            : 1;
                    785:        Ucbit   cache_en        : 1;
                    786:        Ucbit   cache_table_size: 4;    /* Byte 3 */
                    787:        u_char  threshold;              /* Byte 4 Prefetch threshold */
                    788:        u_char  max_prefetch;           /* Byte 5 Max. prefetch */
                    789:        u_char  max_multiplier;         /* Byte 6 Max. prefetch multiplier */
                    790:        u_char  min_prefetch;           /* Byte 7 Min. prefetch */
                    791:        u_char  min_multiplier;         /* Byte 8 Min. prefetch multiplier */
                    792:        u_char  res3[8];                /* Byte 9 */
                    793: };
                    794: #endif
                    795: 
                    796: #if defined(_BIT_FIELDS_LTOH)  /* Intel byteorder */
                    797: 
                    798: struct cd_mode_page_05 {               /* write parameters */
                    799:                MP_P_CODE;              /* parsave & pagecode */
                    800:        u_char  p_len;                  /* 0x32 = 50 Bytes */
                    801:        Ucbit   write_type      : 4;    /* Session write type (PACKET/TAO...)*/
                    802:        Ucbit   test_write      : 1;    /* Do not actually write data        */
                    803:        Ucbit   res_2           : 3;
                    804:        Ucbit   track_mode      : 4;    /* Track mode (Q-sub control nibble) */
                    805:        Ucbit   copy            : 1;    /* 1st higher gen of copy prot track ~*/
                    806:        Ucbit   fp              : 1;    /* Fixed packed (if in packet mode)  */
                    807:        Ucbit   multi_session   : 2;    /* Multi session write type          */
                    808:        Ucbit   dbtype          : 4;    /* Data block type                   */
                    809:        Ucbit   res_4           : 4;    /* Reserved                          */
                    810:        u_char  res_56[2];              /* Reserved                          */
                    811:        Ucbit   host_appl_code  : 6;    /* Host application code of disk     */
                    812:        Ucbit   res_7           : 2;    /* Reserved                          */
                    813:        u_char  session_format;         /* Session format (DA/CDI/XA)        */
                    814:        u_char  res_9;                  /* Reserved                          */
                    815:        u_char  packet_size[4];         /* # of user datablocks/fixed packet */
                    816:        u_char  audio_pause_len[2];     /* # of blocks where index is zero   */
                    817:        u_char  media_cat_number[16];   /* Media catalog Number (MCN)        */
                    818:        u_char  ISRC[14];               /* ISRC for this track               */
                    819:        u_char  sub_header[4];
                    820:        u_char  vendor_uniq[4];
                    821: };
                    822: 
                    823: #else                          /* Motorola byteorder */
                    824: 
                    825: struct cd_mode_page_05 {               /* write parameters */
                    826:                MP_P_CODE;              /* parsave & pagecode */
                    827:        u_char  p_len;                  /* 0x32 = 50 Bytes */
                    828:        Ucbit   res_2           : 3;
                    829:        Ucbit   test_write      : 1;    /* Do not actually write data        */
                    830:        Ucbit   write_type      : 4;    /* Session write type (PACKET/TAO...)*/
                    831:        Ucbit   multi_session   : 2;    /* Multi session write type          */
                    832:        Ucbit   fp              : 1;    /* Fixed packed (if in packet mode)  */
                    833:        Ucbit   copy            : 1;    /* 1st higher gen of copy prot track */
                    834:        Ucbit   track_mode      : 4;    /* Track mode (Q-sub control nibble) */
                    835:        Ucbit   res_4           : 4;    /* Reserved                          */
                    836:        Ucbit   dbtype          : 4;    /* Data block type                   */
                    837:        u_char  res_56[2];              /* Reserved                          */
                    838:        Ucbit   res_7           : 2;    /* Reserved                          */
                    839:        Ucbit   host_appl_code  : 6;    /* Host application code of disk     */
                    840:        u_char  session_format;         /* Session format (DA/CDI/XA)        */
                    841:        u_char  res_9;                  /* Reserved                          */
                    842:        u_char  packet_size[4];         /* # of user datablocks/fixed packet */
                    843:        u_char  audio_pause_len[2];     /* # of blocks where index is zero   */
                    844:        u_char  media_cat_number[16];   /* Media catalog Number (MCN)        */
                    845:        u_char  ISRC[14];               /* ISRC for this track               */
                    846:        u_char  sub_header[4];
                    847:        u_char  vendor_uniq[4];
                    848: };
                    849: 
                    850: #endif
                    851: 
                    852: #if defined(_BIT_FIELDS_LTOH)  /* Intel byteorder */
                    853: 
                    854: struct cd_mode_page_2A {               /* CD Cap / mech status */
                    855:                MP_P_CODE;              /* parsave & pagecode */
                    856:        u_char  p_len;                  /* 0x14 = 20 Bytes */
                    857:        Ucbit   cd_r_read       : 1;    /* Reads CD-R  media                 */
                    858:        Ucbit   cd_rw_read      : 1;    /* Reads CD-RW media                 */
                    859:        Ucbit   method2         : 1;    /* Reads fixed packet method2 media  */
                    860:        Ucbit   dvd_rom_read    : 1;    /* Reads DVD ROM media               */
                    861:        Ucbit   dvd_r_read      : 1;    /* Reads DVD-R media                 */
                    862:        Ucbit   dvd_ram_read    : 1;    /* Reads DVD-RAM media               */
                    863:        Ucbit   res_2_67        : 2;    /* Reserved                          */
                    864:        Ucbit   cd_r_write      : 1;    /* Supports writing CD-R  media      */
                    865:        Ucbit   cd_rw_write     : 1;    /* Supports writing CD-RW media      */
                    866:        Ucbit   test_write      : 1;    /* Supports emulation write          */
                    867:        Ucbit   res_3_3         : 1;    /* Reserved                          */
                    868:        Ucbit   dvd_r_write     : 1;    /* Supports writing DVD-R media      */
                    869:        Ucbit   dvd_ram_write   : 1;    /* Supports writing DVD-RAM media    */
                    870:        Ucbit   res_3_67        : 2;    /* Reserved                          */
                    871:        Ucbit   audio_play      : 1;    /* Supports Audio play operation     */
                    872:        Ucbit   composite       : 1;    /* Deliveres composite A/V stream    */
                    873:        Ucbit   digital_port_2  : 1;    /* Supports digital output on port 2 */
                    874:        Ucbit   digital_port_1  : 1;    /* Supports digital output on port 1 */
                    875:        Ucbit   mode_2_form_1   : 1;    /* Reads Mode-2 form 1 media (XA)    */
                    876:        Ucbit   mode_2_form_2   : 1;    /* Reads Mode-2 form 2 media         */
                    877:        Ucbit   multi_session   : 1;    /* Reads multi-session media         */
                    878:        Ucbit   res_4           : 1;    /* Reserved                          */
                    879:        Ucbit   cd_da_supported : 1;    /* Reads audio data with READ CD cmd */
                    880:        Ucbit   cd_da_accurate  : 1;    /* READ CD data stream is accurate   */
                    881:        Ucbit   rw_supported    : 1;    /* Reads R-W sub channel information */
                    882:        Ucbit   rw_deint_corr   : 1;    /* Reads de-interleved R-W sub chan  */
                    883:        Ucbit   c2_pointers     : 1;    /* Supports C2 error pointers        */
                    884:        Ucbit   ISRC            : 1;    /* Reads ISRC information            */
                    885:        Ucbit   UPC             : 1;    /* Reads media catalog number (UPC)  */
                    886:        Ucbit   read_bar_code   : 1;    /* Supports reading bar codes        */
                    887:        Ucbit   lock            : 1;    /* PREVENT/ALLOW may lock media      */
                    888:        Ucbit   lock_state      : 1;    /* Lock state 0=unlocked 1=locked    */
                    889:        Ucbit   prevent_jumper  : 1;    /* State of prev/allow jumper 0=pres */
                    890:        Ucbit   eject           : 1;    /* Ejects disc/cartr with STOP LoEj  */
                    891:        Ucbit   res_6_4         : 1;    /* Reserved                          */
                    892:        Ucbit   loading_type    : 3;    /* Loading mechanism type            */
                    893:        Ucbit   sep_chan_vol    : 1;    /* Vol controls each channel separat */
                    894:        Ucbit   sep_chan_mute   : 1;    /* Mute controls each channel separat*/
                    895:        Ucbit   disk_present_rep: 1;    /* Changer supports disk present rep */
                    896:        Ucbit   sw_slot_sel     : 1;    /* Load empty slot in changer        */
                    897:        Ucbit   res_7           : 4;    /* Reserved                          */
                    898:        u_char  max_read_speed[2];      /* Max. read speed in KB/s           */
                    899:        u_char  num_vol_levels[2];      /* # of supported volume levels      */
                    900:        u_char  buffer_size[2];         /* Buffer size for the data in KB    */
                    901:        u_char  cur_read_speed[2];      /* Current read speed in KB/s        */
                    902:        u_char  res_16;                 /* Reserved                          */
                    903:        Ucbit   res_17_0        : 1;    /* Reserved                          */
                    904:        Ucbit   BCK             : 1;    /* Data valid on falling edge of BCK */
                    905:        Ucbit   RCK             : 1;    /* Set: HIGH high LRCK=left channel  */
                    906:        Ucbit   LSBF            : 1;    /* Set: LSB first Clear: MSB first   */
                    907:        Ucbit   length          : 2;    /* 0=32BCKs 1=16BCKs 2=24BCKs 3=24I2c*/
                    908:        Ucbit   res_17          : 2;    /* Reserved                          */
                    909:        u_char  max_write_speed[2];     /* Max. write speed supported in KB/s*/
                    910:        u_char  cur_write_speed[2];     /* Current write speed in KB/s       */
                    911: };
                    912: 
                    913: #else                          /* Motorola byteorder */
                    914: 
                    915: struct cd_mode_page_2A {               /* CD Cap / mech status */
                    916:                MP_P_CODE;              /* parsave & pagecode */
                    917:        u_char  p_len;                  /* 0x14 = 20 Bytes */
                    918:        Ucbit   res_2_67        : 2;    /* Reserved                          */
                    919:        Ucbit   dvd_ram_read    : 1;    /* Reads DVD-RAM media               */
                    920:        Ucbit   dvd_r_read      : 1;    /* Reads DVD-R media                 */
                    921:        Ucbit   dvd_rom_read    : 1;    /* Reads DVD ROM media               */
                    922:        Ucbit   method2         : 1;    /* Reads fixed packet method2 media  */
                    923:        Ucbit   cd_rw_read      : 1;    /* Reads CD-RW media                 */
                    924:        Ucbit   cd_r_read       : 1;    /* Reads CD-R  media                 */
                    925:        Ucbit   res_3_67        : 2;    /* Reserved                          */
                    926:        Ucbit   dvd_ram_write   : 1;    /* Supports writing DVD-RAM media    */
                    927:        Ucbit   dvd_r_write     : 1;    /* Supports writing DVD-R media      */
                    928:        Ucbit   res_3_3         : 1;    /* Reserved                          */
                    929:        Ucbit   test_write      : 1;    /* Supports emulation write          */
                    930:        Ucbit   cd_rw_write     : 1;    /* Supports writing CD-RW media      */
                    931:        Ucbit   cd_r_write      : 1;    /* Supports writing CD-R  media      */
                    932:        Ucbit   res_4           : 1;    /* Reserved                          */
                    933:        Ucbit   multi_session   : 1;    /* Reads multi-session media         */
                    934:        Ucbit   mode_2_form_2   : 1;    /* Reads Mode-2 form 2 media         */
                    935:        Ucbit   mode_2_form_1   : 1;    /* Reads Mode-2 form 1 media (XA)    */
                    936:        Ucbit   digital_port_1  : 1;    /* Supports digital output on port 1 */
                    937:        Ucbit   digital_port_2  : 1;    /* Supports digital output on port 2 */
                    938:        Ucbit   composite       : 1;    /* Deliveres composite A/V stream    */
                    939:        Ucbit   audio_play      : 1;    /* Supports Audio play operation     */
                    940:        Ucbit   read_bar_code   : 1;    /* Supports reading bar codes        */
                    941:        Ucbit   UPC             : 1;    /* Reads media catalog number (UPC)  */
                    942:        Ucbit   ISRC            : 1;    /* Reads ISRC information            */
                    943:        Ucbit   c2_pointers     : 1;    /* Supports C2 error pointers        */
                    944:        Ucbit   rw_deint_corr   : 1;    /* Reads de-interleved R-W sub chan  */
                    945:        Ucbit   rw_supported    : 1;    /* Reads R-W sub channel information */
                    946:        Ucbit   cd_da_accurate  : 1;    /* READ CD data stream is accurate   */
                    947:        Ucbit   cd_da_supported : 1;    /* Reads audio data with READ CD cmd */
                    948:        Ucbit   loading_type    : 3;    /* Loading mechanism type            */
                    949:        Ucbit   res_6_4         : 1;    /* Reserved                          */
                    950:        Ucbit   eject           : 1;    /* Ejects disc/cartr with STOP LoEj  */
                    951:        Ucbit   prevent_jumper  : 1;    /* State of prev/allow jumper 0=pres */
                    952:        Ucbit   lock_state      : 1;    /* Lock state 0=unlocked 1=locked    */
                    953:        Ucbit   lock            : 1;    /* PREVENT/ALLOW may lock media      */
                    954:        Ucbit   res_7           : 4;    /* Reserved                          */
                    955:        Ucbit   sw_slot_sel     : 1;    /* Load empty slot in changer        */
                    956:        Ucbit   disk_present_rep: 1;    /* Changer supports disk present rep */
                    957:        Ucbit   sep_chan_mute   : 1;    /* Mute controls each channel separat*/
                    958:        Ucbit   sep_chan_vol    : 1;    /* Vol controls each channel separat */
                    959:        u_char  max_read_speed[2];      /* Max. read speed in KB/s           */
                    960:        u_char  num_vol_levels[2];      /* # of supported volume levels      */
                    961:        u_char  buffer_size[2];         /* Buffer size for the data in KB    */
                    962:        u_char  cur_read_speed[2];      /* Current read speed in KB/s        */
                    963:        u_char  res_16;                 /* Reserved                          */
                    964:        Ucbit   res_17          : 2;    /* Reserved                          */
                    965:        Ucbit   length          : 2;    /* 0=32BCKs 1=16BCKs 2=24BCKs 3=24I2c*/
                    966:        Ucbit   LSBF            : 1;    /* Set: LSB first Clear: MSB first   */
                    967:        Ucbit   RCK             : 1;    /* Set: HIGH high LRCK=left channel  */
                    968:        Ucbit   BCK             : 1;    /* Data valid on falling edge of BCK */
                    969:        Ucbit   res_17_0        : 1;    /* Reserved                          */
                    970:        u_char  max_write_speed[2];     /* Max. write speed supported in KB/s*/
                    971:        u_char  cur_write_speed[2];     /* Current write speed in KB/s       */
                    972: };
                    973: 
                    974: #endif
                    975: 
                    976: #define        LT_CADDY        0
                    977: #define        LT_TRAY         1
                    978: #define        LT_POP_UP       2
                    979: #define        LT_RES3         3
                    980: #define        LT_CHANGER_IND  4
                    981: #define        LT_CHANGER_CART 5
                    982: #define        LT_RES6         6
                    983: #define        LT_RES7         7
                    984: 
                    985: 
                    986: struct scsi_mode_data {
                    987:        struct scsi_mode_header         header;
                    988:        struct scsi_mode_blockdesc      blockdesc;
                    989:        union   pagex   {
                    990:                struct acb_mode_data            acb;
                    991:                struct scsi_mode_page_01        page1;
                    992:                struct scsi_mode_page_02        page2;
                    993:                struct scsi_mode_page_03        page3;
                    994:                struct scsi_mode_page_04        page4;
                    995:                struct scsi_mode_page_05        page5;
                    996:                struct scsi_mode_page_07        page7;
                    997:                struct scsi_mode_page_08        page8;
                    998:                struct scsi_mode_page_09        page9;
                    999:                struct scsi_mode_page_0A        pageA;
                   1000:                struct scsi_mode_page_0B        pageB;
                   1001:                struct scsi_mode_page_0C        pageC;
                   1002:                struct scsi_mode_page_0D        pageD;
                   1003:                struct sony_mode_page_20        sony20;
                   1004:                struct toshiba_mode_page_20     toshiba20;
                   1005:                struct ccs_mode_page_38         ccs38;
                   1006:        } pagex;
                   1007: };
                   1008: 
                   1009: struct scsi_capacity {
                   1010:        long    c_baddr;                /* must convert byteorder!! */
                   1011:        long    c_bsize;                /* must convert byteorder!! */
                   1012: };
                   1013: 
                   1014: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                   1015: 
                   1016: struct scsi_def_header {
                   1017:        Ucbit           : 8;
                   1018:        Ucbit   format  : 3;
                   1019:        Ucbit   gdl     : 1;
                   1020:        Ucbit   mdl     : 1;
                   1021:        Ucbit           : 3;
                   1022:        u_char  length[2];
                   1023: };
                   1024: 
                   1025: #else                                  /* Motorola byteorder */
                   1026: 
                   1027: struct scsi_def_header {
                   1028:        Ucbit           : 8;
                   1029:        Ucbit           : 3;
                   1030:        Ucbit   mdl     : 1;
                   1031:        Ucbit   gdl     : 1;
                   1032:        Ucbit   format  : 3;
                   1033:        u_char  length[2];
                   1034: };
                   1035: #endif
                   1036: 
                   1037: 
                   1038: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                   1039: 
                   1040: struct scsi_format_header {
                   1041:        Ucbit   res             : 8;    /* Adaptec 5500: 1 --> format track */
                   1042:        Ucbit   vu              : 1;
                   1043:        Ucbit                   : 3;
                   1044:        Ucbit   serr            : 1;    /* Stop on error                    */
                   1045:        Ucbit   dcert           : 1;    /* Disable certification            */
                   1046:        Ucbit   dmdl            : 1;    /* Disable manufacturer defect list */
                   1047:        Ucbit   enable          : 1;    /* Enable to use the next 3 bits    */
                   1048:        u_char  length[2];              /* Length of following list in bytes*/
                   1049: };
                   1050: 
                   1051: #else                                  /* Motorola byteorder */
                   1052: 
                   1053: struct scsi_format_header {
                   1054:        Ucbit   res             : 8;    /* Adaptec 5500: 1 --> format track */
                   1055:        Ucbit   enable          : 1;    /* Enable to use the next 3 bits    */
                   1056:        Ucbit   dmdl            : 1;    /* Disable manufacturer defect list */
                   1057:        Ucbit   dcert           : 1;    /* Disable certification            */
                   1058:        Ucbit   serr            : 1;    /* Stop on error                    */
                   1059:        Ucbit                   : 3;
                   1060:        Ucbit   vu              : 1;
                   1061:        u_char  length[2];              /* Length of following list in bytes*/
                   1062: };
                   1063: #endif
                   1064: 
                   1065: struct scsi_def_bfi {
                   1066:        u_char  cyl[3];
                   1067:        u_char  head;
                   1068:        u_char  bfi[4];
                   1069: };
                   1070: 
                   1071: struct scsi_def_phys {
                   1072:        u_char  cyl[3];
                   1073:        u_char  head;
                   1074:        u_char  sec[4];
                   1075: };
                   1076: 
                   1077: struct scsi_def_list {
                   1078:        struct  scsi_def_header hd;
                   1079:        union {
                   1080:                        u_char          list_block[1][4];
                   1081:                struct  scsi_def_bfi    list_bfi[1];
                   1082:                struct  scsi_def_phys   list_phys[1];
                   1083:        } def_list;
                   1084: };
                   1085: 
                   1086: struct scsi_format_data {
                   1087:        struct scsi_format_header hd;
                   1088:        union {
                   1089:                        u_char          list_block[1][4];
                   1090:                struct  scsi_def_bfi    list_bfi[1];
                   1091:                struct  scsi_def_phys   list_phys[1];
                   1092:        } def_list;
                   1093: };
                   1094: 
                   1095: #define        def_block       def_list.list_block
                   1096: #define        def_bfi         def_list.list_bfi
                   1097: #define        def_phys        def_list.list_phys
                   1098: 
                   1099: #define        SC_DEF_BLOCK    0
                   1100: #define        SC_DEF_BFI      4
                   1101: #define        SC_DEF_PHYS     5
                   1102: #define        SC_DEF_VU       6
                   1103: #define        SC_DEF_RES      7
                   1104: 
                   1105: struct scsi_send_diag_cmd {
                   1106:        u_char  cmd;
                   1107:        u_char  addr[4];
                   1108:        Ucbit           : 8;
                   1109: };
                   1110: 
                   1111: #if    defined(_BIT_FIELDS_LTOH)       /* Intel byteorder */
                   1112: 
                   1113: struct scsi_sector_header {
                   1114:        u_char  cyl[2];
                   1115:        u_char  head;
                   1116:        u_char  sec;
                   1117:        Ucbit           : 5;
                   1118:        Ucbit   rp      : 1;
                   1119:        Ucbit   sp      : 1;
                   1120:        Ucbit   dt      : 1;
                   1121: };
                   1122: 
                   1123: #else                                  /* Motorola byteorder */
                   1124: 
                   1125: struct scsi_sector_header {
                   1126:        u_char  cyl[2];
                   1127:        u_char  head;
                   1128:        u_char  sec;
                   1129:        Ucbit   dt      : 1;
                   1130:        Ucbit   sp      : 1;
                   1131:        Ucbit   rp      : 1;
                   1132:        Ucbit           : 5;
                   1133: };
                   1134: #endif
                   1135: 
                   1136: #endif /* _SCSIREG_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.