Annotation of linux/kernel/blk_drv/scsi/7000fasst.h, revision 1.1.1.1

1.1       root        1: #ifndef _WD7000FASST_H
                      2: 
                      3: /* $Id: 7000fasst.h,v 1.1 1992/07/24 06:27:38 root Exp root $
                      4:  *
                      5:  * Header file for the WD 7000-FASST driver for Linux
                      6:  *
                      7:  * $Log: 7000fasst.h,v $
                      8:  * Revision 1.1  1992/07/24  06:27:38  root
                      9:  * Initial revision
                     10:  *
                     11:  * Revision 1.1  1992/07/05  08:32:32  root
                     12:  * Initial revision
                     13:  *
                     14:  * Revision 1.1  1992/05/15  18:38:05  root
                     15:  * Initial revision
                     16:  *
                     17:  * Revision 1.1  1992/04/02  03:23:13  drew
                     18:  * Initial revision
                     19:  *
                     20:  * Revision 1.3  1992/01/27  14:46:29  tthorn
                     21:  * *** empty log message ***
                     22:  *
                     23:  */
                     24: 
                     25: #include <linux/types.h>
                     26: 
                     27: #undef STATMASK
                     28: #undef CONTROL
                     29: 
                     30: #define io_base                0x350
                     31: #define intr_chan      15
                     32: #define dma_chan       6
                     33: #define OGMB_CNT       8
                     34: #define ICMB_CNT       8
                     35: 
                     36: /* I/O Port interface 4.2 */
                     37: /* READ */
                     38: #define ASC_STAT io_base
                     39: #define INT_IM 0x80            /* Interrupt Image Flag */
                     40: #define CMD_RDY        0x40            /* Command Port Ready */
                     41: #define CMD_REJ        0x20            /* Command Port Byte Rejected */
                     42: #define ASC_INI        0x10            /* ASC Initialized Flag */
                     43: #define STATMASK 0xf0          /* The lower 4 Bytes are reserved */
                     44: 
                     45: /* This register saves two purposes
                     46:  * Diagnostics error
                     47:  * Interrupt Status
                     48:  */
                     49: #define INTR_STAT ASC_STAT+1
                     50: #define ANYINTR        0x80            /* Mailbox Service possible/required */
                     51: #define IMB    0x40            /* 1 Incoming / 0 Outgoing */
                     52: #define MBMASK 0x3f
                     53: /* if MSB is zero, the content of the lower ones keeps Diagnostic State *
                     54:  * 00  Power-on, no diagnostics executed
                     55:  * 01  No diagnostic Error Occured
                     56:  * 02  RAM Failed
                     57:  * 03  FIFO R/W Failed
                     58:  * ...
                     59: */
                     60: 
                     61: /* WRITE */
                     62: #define COMMAND ASC_STAT
                     63: 
                     64: #define INTR_ACK ASC_STAT+1
                     65: 
                     66: 
                     67: #define CONTROL ASC_STAT+2
                     68: #define INT_EN 0x08            /* Interrupt Enable     */
                     69: #define DMA_EN 0x04            /* DMA Enable           */
                     70: #define SCSI_RES       0x02    /* SCSI Reset           */
                     71: #define ASC_RES        0x01            /* ASC Reset            */
                     72: 
                     73: /* The DMA-Controller */
                     74: #define DMA_MODE_REG   0xd6
                     75: #define DMA_MASK_REG   0xd4
                     76: #define S_DMA_MSK      0x04
                     77: #define DMA_CH         0x02
                     78: #define        CASCADE         0xc0
                     79: 
                     80: /* Mailbox Definition 5.3 */
                     81: 
                     82: /* These belong in scsi.h also */
                     83: #undef any2scsi
                     84: #define any2scsi(up, p)                        \
                     85: (up)[0] = (((long)(p)) >> 16); \
                     86: (up)[1] = ((long)(p)) >> 8;            \
                     87: (up)[2] = ((long)(p));
                     88: 
                     89: #define scsi2int(up) ( (((long)*(up)) << 16) + (((long)(up)[1]) << 8) + ((long)(up)[2]) )
                     90: 
                     91: #define xany2scsi(up, p)       \
                     92: (up)[0] = ((long)(p)) >> 24;   \
                     93: (up)[1] = ((long)(p)) >> 16;   \
                     94: (up)[2] = ((long)(p)) >> 8;    \
                     95: (up)[3] = ((long)(p));
                     96: 
                     97: #define xscsi2int(up) ( (((long)(up)[0]) << 24) + (((long)(up)[1]) << 16) \
                     98:                      + (((long)(up)[2]) <<  8) +  ((long)(up)[3]) )
                     99: 
                    100: #define MAX_CDB 12
                    101: #define MAX_SENSE 14
                    102: 
                    103: struct scb {                   /* Command Control Block 5.4.1 */
                    104:   unchar op;                   /* Command Control Block Operation Code */
                    105:   unchar idlun;                        /* op=0,2:Target Id, op=1:Initiator Id */
                    106:                                /* Outbound data transfer, length is checked*/
                    107:                                /* Inbound data transfer, length is checked */
                    108:                                /* Logical Unit Number */
                    109:   unchar scbdata[12];          /* SCSI Command Block */
                    110:   unchar sretstat;             /* SCSI Return Status */
                    111:   unchar vue;                  /* Vendor Unique Error Code */
                    112:   unchar maxdata[3];           /* Maximum Data Transfer Length */
                    113:   unchar dataptr[3];           /* SCSI Data Block Pointer */
                    114:   unchar linkptr[3];           /* Next Command Link Pointer */
                    115:   unchar direc;                        /* Transfer Direction */
                    116:   unchar reserved2[6];         /* SCSI Command Descriptor Block */
                    117:                                /* REQUEST SENSE */
                    118: };
                    119: 
                    120: int wd7000fasst_detect(int);
                    121: int wd7000fasst_command(unsigned char target, const void *cmnd, void *buff, int bufflen);
                    122: int wd7000fasst_queuecommand(unchar target, const void *cmnd, void *buff, int bufflen, void (*done)(int,int));
                    123: int wd7000fasst_abort(int);
                    124: char *wd7000fasst_info(void);
                    125: int wd7000fasst_reset(void);
                    126: 
                    127: #ifndef NULL
                    128:        #define NULL 0
                    129: #endif
                    130: 
                    131: #define WD7000FASST {"Western Digital 7000FASST", wd7000fasst_detect,  \
                    132:                wd7000fasst_info, wd7000fasst_command,          \
                    133:                wd7000fasst_queuecommand,               \
                    134:                wd7000fasst_abort,                              \
                    135:                wd7000fasst_reset,                              \
                    136:                1, 7, 0}
                    137: #endif

unix.superglobalmegacorp.com

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