Annotation of coherent/f/usr/include.78/sys/aha154x.h, revision 1.1.1.1

1.1       root        1: /* (-lgl
                      2:  *     COHERENT 386 Device Driver Kit release 2.0
                      3:  *     Copyright (c) 1982, 1992 by Mark Williams Company.
                      4:  *     All rights reserved. May not be copied without permission.
                      5:  -lgl) */
                      6: #ifndef        __SYS_AHA154X_H__
                      7: #define        __SYS_AHA154X_H__
                      8: 
                      9: /*
                     10:  *     describe the data structures neccessary to
                     11:  *     access the Hard/Firmware of the AHA-154x family.
                     12:  *
                     13:  *     First the hardware which consists of three I/O ports.
                     14:  */
                     15: 
                     16: #define        AHA_CONTROL     (0*0+0)
                     17: #define        AHA_HARDRESET   0x80    /* Hard */
                     18: #define        AHA_SOFTRESET   0x40    /* Soft */
                     19: #define        AHA_INTRRESET   0x20    /* Interrupt */
                     20: #define        AHA_SCSIRESET   0x10    /* SCSI */
                     21: /* ... Reserved ... */
                     22: 
                     23: #define        AHA_STATUS      (0*0+0)
                     24: #define        AHA_SELFTEST    0x80            /* SELF TEST in progress */
                     25: #define        AHA_DIAGFAIL    0x40            /* DIAGnostics FAILed */
                     26: #define        AHA_INITMAIL    0x20            /* INIT of MAILbox required */
                     27: #define        AHA_SCSIIDLE    0x10            /* SCSI host adaptor IDLE */
                     28: #define        AHA_CDOPFULL    0x08            /* Command/Data Out Port FULL */
                     29: #define        AHA_DIPFULL     0x04            /* Data In Port FULL */
                     30: /* ... Reserved ... */
                     31: #define        AHA_INVDCMD     0x01            /* INValiD CoMmanD */
                     32: 
                     33: #define        AHA_READ        (0*0+1)
                     34: #define        AHA_WRITE       (0*0+1)
                     35: 
                     36: #define        AHA_INTERRUPT   (0*0+2)
                     37: #define        AHA_ANY_INTER   0x80
                     38: /* ... Reserved ... */
                     39: #define        AHA_RESETED     0x08
                     40: #define        AHA_CMD_DONE    0x04
                     41: #define        AHA_MBO_EMPTY   0x02
                     42: #define        AHA_MBI_STORED  0x01
                     43: #define        AHA_ALL_INTERRUPTS      \
                     44:        (AHA_RESETED|AHA_CMD_DONE|AHA_MBO_EMPTY|AHA_MBI_STORED)
                     45: 
                     46: /*
                     47:  *     Command Control Block Opcodes.
                     48:  */
                     49: #define AHA_OP_SIC     0x00    /* SCSI Initiator Command Control Block */
                     50: #define AHA_OP_TCC     0x01    /* SCSI Target Command Control Block */
                     51: #define AHA_OP_SIC_SG  0x02    /* SCSI Initiator Command Control Block
                     52:                                * with Scatter/Gather */
                     53: #define AHA_OP_SIC_res 0x03    /* SCSI Initiator Command,
                     54:                                 * residual data length returned.  */
                     55: #define AHA_OP_SIC_SG_res 0x04 /* SCSI Initiator Command
                     56:                                 * with Scatter/Gather,
                     57:                                 * residual data length returned.  */
                     58: #define AHA_OP_SPQR    0x81    /* SCSI Bus Device Reset
                     59:                                 * (a work of the people :-)  */
                     60: #define AHA_OP_INVALID 0x22    /* This randomly chosen command is used to
                     61:                                 * mark a ccb as invalidated. */
                     62: 
                     63: /*
                     64:  *     Adapter Firmware Components
                     65:  */
                     66: #define        AHA_DO_NOP              0x00
                     67: #define        AHA_DO_MAILBOX_INIT     0x01
                     68:        /* DATA send = MB count, MB adr[3] */
                     69: #define        AHA_DO_SCSI_START       0x02
                     70: #define        AHA_DO_BIOS_START       0x03
                     71: #define        AHA_DO_INQUIRY          0x04
                     72:        /* DATA recv =  board id (ASCII)
                     73:                        special options id (standard = 'A')
                     74:                        HW rev level (ASCII)
                     75:                        FirmWare rev level (ASCII)*/
                     76: #define        AHA_DO_MBO_INTR_ON      0x05
                     77:        /* DATA send = 0/1 = Dis/Enable INTR */
                     78: #define        AHA_DO_SET_TIMEOUT      0x06
                     79:        /* DATA send =  0/1 = Dis/Enable Timeout
                     80:                        ...reserved...
                     81:                        value[MSB] default = 250 millisec
                     82:                        value[LSB] */
                     83: #define        AHA_DO_BUS_ON_TIME      0x07
                     84:        /* DATA send =  2 to 15 microsec. */
                     85: #define        AHA_DO_BUS_OFF_TIME     0x08
                     86:        /* DATA send =  1 to 64 microsec. */
                     87: #define        AHA_DO_XFER_SPEED       0x09
                     88: #define        AHA_SPEED_5_0_MB        0x00
                     89: #define        AHA_SPEED_6_7_MB        0x01
                     90: #define        AHA_SPEED_8_0_MB        0x02
                     91: #define        AHA_SPEED_10_MB         0x03
                     92: #define        AHA_SPEED_5_7_MB        0x04
                     93: #define        AHA_SPEED_CUSTOM        0x80
                     94:        /* see Chap. 5.1.1.10 */
                     95: #define        AHA_DO_GET_DEVICES      0x0A
                     96:        /* DATA recv =  eight bytes, one per target
                     97:                whereby each bit indicates if a LUN is installed */
                     98: #define        AHA_DO_GET_CONFIG       0x0B
                     99:        /* DATA recv =  DMA Arb. Priority,
                    100:                        Inter. Channel,
                    101:                        SCSI Id. */
                    102: #define        AHA_DO_TARGET_ON        0x0C
                    103:        /* DATA send =  0/1 = Dis/Enable Target Mode
                    104:                        LUN mask, 1 -> LUN will respond in Target Mode */
                    105: #define        AHA_DO_GET_SETUP        0x0D
                    106:        /* DATA send =  n, count requested, 0 -> 256 bytes
                    107:           DATA recv =  00 SDT + Parity,
                    108:                        01 Transfer Speed,
                    109:                        02 Bus On Time,
                    110:                        03 Bus Off Time,
                    111:                        04 # MB's,
                    112:                        05-07 MailBox Adr,
                    113:                        08-0F Sync Transfer Agreements,
                    114:                        10-FF Reserved (default 00) */
                    115:                        
                    116: /* ... reserved ... */
                    117: #define        AHA_DO_PUT_CH2_BUF      0x1A
                    118:        /* DATA send =  00-02 Buffer Area (64 bytes) Address */
                    119: #define        AHA_DO_GET_CH2_BUF      0x1B
                    120:        /* DATA send =  00-02 Buffer Area (64 bytes) Address */
                    121: #define        AHA_DO_PUT_FIFO_BUF     0x1C
                    122:        /* DATA send =  00-02 FIFO Area (54 bytes) Address */
                    123: #define        AHA_DO_GET_FIFO_BUF     0x1D
                    124:        /* DATA send =  00-02 FIFO Area (54 bytes) Address */
                    125: /* ... reserved ... */
                    126: #define        AHA_DO_ECHO_CMD_DATA    0x1F
                    127:        /* DATA send =  1 byte
                    128:           DATA recv =  1 byte, hopefully the same one ! */
                    129: 
                    130: /* A P3 is a 3 byte physical address.  */
                    131: typedef unsigned char P3[3];
                    132: 
                    133: typedef        struct  {
                    134: #      define  MBO_IS_FREE     0x00
                    135: #      define  MBO_TO_START    0x01
                    136: #      define  MBO_IS_ABORT    0x02
                    137:        char    state;
                    138:        P3      ccb_adr;
                    139: }      MBO;
                    140: 
                    141: /*
                    142:  * MBI for CCB completed
                    143:  */
                    144: typedef        struct  {
                    145: #      define  MBI_IS_FREE     0x00
                    146: #      define  MBI_NO_ERROR    0x01
                    147: #      define  MBI_IS_ABORT    0x02
                    148: #      define  MBI_NOT_FOUND   0x03
                    149: #      define  MBI_HAS_ERROR   0x04
                    150:        char    state;
                    151:        /* MBI for CCB required */
                    152:        /* byte 0 */
                    153: #      define  MBI_CCB_REQUEST 0x10
                    154:                /* byte 1 */
                    155: #              define  MBI_MSK_INITOR  0xE0
                    156: #              define  MBI_WAS_READ    0x10
                    157: #              define  MBI_WAS_WRITE   0x08
                    158: #              define  MBI_MSK_LUN     0x03
                    159:                /* byte 2,3 are data len */
                    160:        P3      ccb_adr;
                    161: }      MBI;
                    162: 
                    163: #ifndef        MAX_SCSICMD
                    164: #define        MAX_SCSICMD     14
                    165: #endif /* MAX_SCSICMD */
                    166: 
                    167: #ifndef        MAX_SENSEDATA
                    168: #define        MAX_SENSEDATA   27
                    169: #endif /* MAX_SENSEDATA */
                    170: 
                    171: typedef        struct  {
                    172:        unsigned char   cmd;
                    173:        P3      adr;
                    174: }      mailentry;
                    175: 
                    176: #define        SENSE_UNIT_ATTENTION    6
                    177: #define        CHECK_TARGET_STATUS     2
                    178: typedef        struct  {
                    179:        char    opcode;
                    180:        char    target;
                    181: #define        AHA_CCB_DATA_OUT        0x10
                    182: #define        AHA_CCB_DATA_IN         0x08
                    183:        char    cmdlen;
                    184:        char    senselen;
                    185:        P3      datalen;
                    186:        P3      dataptr;
                    187:        P3      linkptr;
                    188:        char    linkid;
                    189:        char    hoststatus;
                    190:        char    targetstatus;
                    191:        char    reserve[2];
                    192:        unsigned char   cmd_status[MAX_SCSICMD+MAX_SENSEDATA];
                    193:        scsi_work_t     *ccb_sw;
                    194:        unsigned char   buffer[1];
                    195: }      ccb_t;
                    196:  
                    197: #ifdef _I386
                    198: /* These macros are for stashing away P3 addresses for ccbs.  */
                    199: #define ccb_forget( a_ccb )    mem_forget( a_ccb )
                    200: #define ccb_remember( a_ccb, a_p3 ) \
                    201:        mem_remember( (a_ccb), aha_p3_to_l( a_p3 ) )
                    202: #define ccb_recall( a_p3 )     mem_recall( aha_p3_to_l( a_p3 ) )
                    203: 
                    204: typedef struct {
                    205:        P3 size;
                    206:        P3 addr;
                    207: } DSL_ENTRY;   
                    208: #endif /* _I386 */
                    209: 
                    210: #endif /* of AHA154X_H */

unix.superglobalmegacorp.com

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