Annotation of coherent/d/PS2_KERNEL/include/sys/scsiwork.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Common SCSI portions of Adaptec AHA154x driver
        !             3:  *
        !             4:  * $Log:       scsiwork.h,v $
        !             5:  * Revision 1.1  92/07/31  16:07:24  root
        !             6:  * Initial revision
        !             7:  * 
        !             8:  * Revision 1.9  91/05/29  11:47:29  hal
        !             9:  * Add MSG_NOP.
        !            10:  * 
        !            11:  * Revision 1.8        91/05/15  14:52:23      root
        !            12:  * Add READCAPLEN.
        !            13:  * 
        !            14:  * Revision 1.7        91/04/20  01:36:46      root
        !            15:  * Add ScmdREZERO
        !            16:  * 
        !            17:  * Revision 1.6        91/04/19  10:04:15      root
        !            18:  * Add MSG_IDENTIFY.
        !            19:  * 
        !            20:  * Revision 1.5        91/04/17  02:21:18      root
        !            21:  * Add mode sense constants.
        !            22:  * 
        !            23:  * Revision 1.4        91/04/10  14:11:41      root
        !            24:  * Add Information Transfer Phase masks.
        !            25:  * 
        !            26:  * Revision 1.3        91/04/10  13:57:38      root
        !            27:  * Add constants such as message types - needed by ss.c
        !            28:  * 
        !            29:  * Revision 1.2        91/03/14  16:51:29      root
        !            30:  * add Test Ready and Request Sense commands
        !            31:  * 
        !            32:  * Revision 1.1        91/03/05  13:02:21      root
        !            33:  * As used to build initial aha154x driver
        !            34:  * 
        !            35:  */
        !            36: #define        MAX_SCSI_ID     8
        !            37: #define        MAX_LUN         4               /* limited by minor device number */ 
        !            38: 
        !            39: /*
        !            40:  * drive_info contains the "per drive" flags
        !            41:  */
        !            42: extern char    drive_info[MAX_SCSI_ID * MAX_LUN];
        !            43: #define        D_DISK          0x01            /* disk-type device (random) */
        !            44: #define        D_TAPE          0x02            /* tape-type device (sequential) */
        !            45: #define        D_PRINTER       0x04            /* printer-type device */
        !            46: #define        D_PROCESSOR     0x08            /* processor-type device */
        !            47: #define        D_REMOVEABLE    0x10            /* media can be changed */
        !            48: #define        D_WORM          0x20            /* WORM-type characteristics */
        !            49: 
        !            50: /*
        !            51:  * Per disk controller data.
        !            52:  * Only one host adapter; no more, no less.
        !            53:  */
        !            54: 
        !            55: struct scsi_work       {
        !            56:        struct scsi_work *sw_actf;      /* Link to first */
        !            57:        struct scsi_work *sw_actl;      /* Link to last */
        !            58:        BUF             *sw_bp;         /* block request */
        !            59:        long            sw_bno;
        !            60:        char            sw_drv;         /* 000sssll s=SCSI_ID l=LUN */
        !            61:        char            sw_type;
        !            62:        char            sw_retry;
        !            63: };
        !            64: 
        !            65: typedef        struct  scsi_work       scsi_work_t;
        !            66: 
        !            67: #define        ScmdTESTREADY           0x00
        !            68: #define        ScmdREZERO              0x01
        !            69: #define        ScmdREQUESTSENSE        0x03
        !            70: #define        ScmdINQUIRY             0x12
        !            71: #define        ScmdMODESENSE           0x1A
        !            72: #define        ScmdREADCAPACITY        0x25
        !            73: #define        ScmdREADEXTENDED        0x28
        !            74: #define        ScmdWRITEXTENDED        0x2A
        !            75: 
        !            76: struct scsi_cmd        {
        !            77:        long    block, buffer;
        !            78:        short   blklen, buflen;
        !            79:        char    unit;                   /* 000sssll s=SCSI_ID l=LUN */
        !            80:        char    cmd;
        !            81: };
        !            82: 
        !            83: typedef        struct  scsi_cmd        scsi_cmd_t;
        !            84: 
        !            85: #define G0CMDLEN       6       /* Group 0 commands are 6 bytes long  */
        !            86: #define G1CMDLEN       10      /* Group 1 commands are 10 bytes long */
        !            87: #define SENSELEN       22      /* number of bytes returned w/ req sense */
        !            88: #define INQUIRYLEN     54      /* number of bytes returned w/ inquiry */
        !            89: #define MODESENSELEN   92      /* number of bytes returned w/ mode sense */
        !            90: #define READCAPLEN     8       /* number of bytes returned w/read capacity */
        !            91: 
        !            92:                                /* Message types */
        !            93: #define MSG_CMD_CMPLT  0x00    /* Command Complete */
        !            94: #define MSG_SAVE_DPTR  0x02    /* Save SCSI data pointer */
        !            95: #define MSG_RSTOR_DPTR 0x03    /* Restore SCSI pointers */
        !            96: #define MSG_DISCONNECT 0x04    /* Target is about to disconnect */
        !            97: #define MSG_ABORT      0x06    /* End the current SCSI bus cycle */
        !            98: #define MSG_NOP                0x08    /* no-op */
        !            99: #define MSG_DEV_RESET  0x0C    /* Bus Device Reset */
        !           100: #define MSG_IDENTIFY   0x80    /* Identify, with no Disconnect */
        !           101: #define MSG_IDENT_DC   0xC0    /* Identify, with Disconnect allowed */
        !           102: 
        !           103: #define CS_GOOD                0x00    /* Command Status from the drive */
        !           104: #define CS_CHECK       0x02
        !           105: #define CS_BUSY                0x08
        !           106: #define CS_RESERVED    0x18
        !           107: 
        !           108: /*
        !           109:  * Information Transfer Phase masks -
        !           110:  * setting of RS_MESSAGE, RS_I_O, and RS_CTRL_DATA determines which of six
        !           111:  * possible info transfer phases is occurring.
        !           112:  */
        !           113: #define XP_MSG_IN      (RS_MESSAGE | RS_I_O | RS_CTRL_DATA)
        !           114: #define XP_MSG_OUT     (RS_MESSAGE          | RS_CTRL_DATA)
        !           115: #define XP_STAT_IN     (             RS_I_O | RS_CTRL_DATA)
        !           116: #define XP_CMD_OUT     (                      RS_CTRL_DATA)
        !           117: #define XP_DATA_IN     (             RS_I_O               )
        !           118: #define XP_DATA_OUT    (                                 0)
        !           119: 
        !           120: #define VTOP2(a1, a2)  vtop(a1,a2)

unix.superglobalmegacorp.com

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