[BACK]Return to wdsreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / isa

Annotation of sys/dev/isa/wdsreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: wdsreg.h,v 1.4 1997/11/07 08:07:11 niklas Exp $       */
        !             2:
        !             3: typedef u_int8_t physaddr[3];
        !             4: typedef u_int8_t physlen[3];
        !             5: #define        ltophys _lto3b
        !             6: #define        phystol _3btol
        !             7:
        !             8: /* WD7000 registers */
        !             9: #define WDS_STAT               0       /* read */
        !            10: #define WDS_IRQSTAT            1       /* read */
        !            11:
        !            12: #define WDS_CMD                        0       /* write */
        !            13: #define WDS_IRQACK             1       /* write */
        !            14: #define WDS_HCR                        2       /* write */
        !            15:
        !            16: #define        WDS_IO_PORTS            8       /* size in I/O-space */
        !            17:
        !            18: /* WDS_STAT (read) defs */
        !            19: #define WDSS_IRQ               0x80
        !            20: #define WDSS_RDY               0x40
        !            21: #define WDSS_REJ               0x20
        !            22: #define WDSS_INIT              0x10
        !            23:
        !            24: /* WDS_IRQSTAT (read) defs */
        !            25: #define WDSI_MASK              0xc0
        !            26: #define WDSI_ERR               0x00
        !            27: #define WDSI_MFREE             0x80
        !            28: #define WDSI_MSVC              0xc0
        !            29:
        !            30: /* WDS_CMD (write) defs */
        !            31: #define WDSC_NOOP              0x00
        !            32: #define WDSC_INIT              0x01
        !            33: #define WDSC_DISUNSOL          0x02
        !            34: #define WDSC_ENAUNSOL          0x03
        !            35: #define WDSC_IRQMFREE          0x04
        !            36: #define WDSC_SCSIRESETSOFT     0x05
        !            37: #define WDSC_SCSIRESETHARD     0x06
        !            38: #define WDSC_MSTART(m)         (0x80 + (m))
        !            39: #define WDSC_MMSTART(m)                (0xc0 + (m))
        !            40:
        !            41: /* WDS_HCR (write) defs */
        !            42: #define WDSH_IRQEN             0x08
        !            43: #define WDSH_DRQEN             0x04
        !            44: #define WDSH_SCSIRESET         0x02
        !            45: #define WDSH_ASCRESET          0x01
        !            46:
        !            47: #define WDS_NSEG       17
        !            48:
        !            49: struct wds_scat_gath {
        !            50:        physlen seg_len;
        !            51:        physaddr seg_addr;
        !            52: };
        !            53:
        !            54: struct wds_cmd {
        !            55:        u_int8_t opcode;
        !            56:        u_int8_t targ;
        !            57:        struct scsi_generic scb;
        !            58:        u_int8_t stat;
        !            59:        u_int8_t venderr;
        !            60:        physlen len;
        !            61:        physaddr data;
        !            62:        physaddr link;
        !            63:        u_int8_t write;
        !            64:        u_int8_t xx[6];
        !            65: };
        !            66:
        !            67: struct wds_scb {
        !            68:        struct wds_cmd cmd;
        !            69:        struct wds_cmd sense;
        !            70:
        !            71:        struct wds_scat_gath scat_gath[WDS_NSEG];
        !            72:        struct scsi_sense_data sense_data;
        !            73:        /*----------------------------------------------------------------*/
        !            74: #define SCB_PHYS_SIZE ((int)&((struct wds_scb *)0)->chain)
        !            75:
        !            76:        TAILQ_ENTRY(wds_scb) chain;
        !            77:        struct wds_scb *nexthash;
        !            78:        long hashkey;
        !            79:        struct scsi_xfer *xs;
        !            80:        int flags;
        !            81: #define        SCB_ALLOC       0x01
        !            82: #define        SCB_ABORT       0x02
        !            83: #ifdef WDSDIAG
        !            84: #define        SCB_SENDING     0x04
        !            85: #endif
        !            86: #define        SCB_POLLED      0x08
        !            87: #define        SCB_SENSE       0x10
        !            88: #define        SCB_DONE        0x20    /* for internal commands only */
        !            89: #define        SCB_BUFFER      0x40
        !            90:        int timeout;
        !            91:
        !            92: #ifdef notyet
        !            93:        struct isadma_seg scb_phys[1];  /* phys segment of this scb */
        !            94:        struct isadma_seg data_phys[WDS_NSEG];  /* phys segments of data */
        !            95:        int data_nseg;                  /* number of phys segments of data */
        !            96: #endif
        !            97:        struct wds_buf *buf;
        !            98: };
        !            99:
        !           100: #define WDSX_SCSICMD           0x00
        !           101: #define WDSX_SCSISG            0x01
        !           102: #define WDSX_OPEN_RCVBUF       0x80
        !           103: #define WDSX_RCV_CMD           0x81
        !           104: #define WDSX_RCV_DATA          0x82
        !           105: #define WDSX_RCV_DATASTAT      0x83
        !           106: #define WDSX_SND_DATA          0x84
        !           107: #define WDSX_SND_DATASTAT      0x85
        !           108: #define WDSX_SND_CMDSTAT       0x86
        !           109: #define WDSX_READINIT          0x88
        !           110: #define WDSX_READSCSIID                0x89
        !           111: #define WDSX_SETUNSOLIRQMASK   0x8a
        !           112: #define WDSX_GETUNSOLIRQMASK   0x8b
        !           113: #define WDSX_GETFIRMREV                0x8c
        !           114: #define WDSX_EXECDIAG          0x8d
        !           115: #define WDSX_SETEXECPARM       0x8e
        !           116: #define WDSX_GETEXECPARM       0x8f
        !           117:
        !           118: struct wds_mbx_out {
        !           119:        u_int8_t cmd;
        !           120:        physaddr scb_addr;
        !           121: };
        !           122:
        !           123: struct wds_mbx_in {
        !           124:        u_int8_t stat;
        !           125:        physaddr scb_addr;
        !           126: };
        !           127:
        !           128: /*
        !           129:  * mbo.cmd values
        !           130:  */
        !           131: #define        WDS_MBO_FREE            0x0     /* MBO entry is free */
        !           132: #define        WDS_MBO_START           0x1     /* MBO activate entry */
        !           133:
        !           134: /*
        !           135:  * mbi.stat values
        !           136:  */
        !           137: #define        WDS_MBI_FREE            0x00    /* MBI entry is free */
        !           138: #define WDS_MBI_OK             0x01    /* completed without error */
        !           139: #define WDS_MBI_OKERR          0x02    /* completed with error */
        !           140: #define WDS_MBI_ETIME          0x04
        !           141: #define WDS_MBI_ERESET         0x05
        !           142: #define WDS_MBI_ETARCMD                0x06
        !           143: #define WDS_MBI_ERESEL         0x80
        !           144: #define WDS_MBI_ESEL           0x81
        !           145: #define WDS_MBI_EABORT         0x82
        !           146: #define WDS_MBI_ESRESET                0x83
        !           147: #define WDS_MBI_EHRESET                0x84
        !           148:
        !           149: struct wds_setup {
        !           150:        u_int8_t opcode;
        !           151:        u_int8_t scsi_id;
        !           152:        u_int8_t buson_t;
        !           153:        u_int8_t busoff_t;
        !           154:        u_int8_t xx;
        !           155:        physaddr mbaddr;
        !           156:        u_int8_t nomb;
        !           157:        u_int8_t nimb;
        !           158: };

CVSweb