Annotation of Gnu-Mach/linux/src/drivers/scsi/dtc.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * DTC controller, taken from T128 driver by...
        !             3:  * Copyright 1993, Drew Eckhardt
        !             4:  *     Visionary Computing
        !             5:  *     (Unix and Linux consulting and custom programming)
        !             6:  *     [email protected]
        !             7:  *      +1 (303) 440-4894
        !             8:  *
        !             9:  * DISTRIBUTION RELEASE 1. 
        !            10:  *
        !            11:  * For more information, please consult 
        !            12:  *
        !            13:  * 
        !            14:  * 
        !            15:  * and 
        !            16:  *
        !            17:  * NCR 5380 Family
        !            18:  * SCSI Protocol Controller
        !            19:  * Databook
        !            20:  *
        !            21:  * NCR Microelectronics
        !            22:  * 1635 Aeroplaza Drive
        !            23:  * Colorado Springs, CO 80916
        !            24:  * 1+ (719) 578-3400
        !            25:  * 1+ (800) 334-5454
        !            26:  */
        !            27: 
        !            28: #ifndef DTC3280_H
        !            29: #define DTC3280_H
        !            30: 
        !            31: #define DTC_PUBLIC_RELEASE 1
        !            32: 
        !            33: /*#define DTCDEBUG 0x1*/
        !            34: #define DTCDEBUG_INIT  0x1
        !            35: #define DTCDEBUG_TRANSFER 0x2
        !            36: 
        !            37: /*
        !            38:  * The DTC3180 & 3280 boards are memory mapped.
        !            39:  * 
        !            40:  */
        !            41: 
        !            42: /*
        !            43:  */ 
        !            44: /* Offset from DTC_5380_OFFSET */
        !            45: #define DTC_CONTROL_REG                0x100   /* rw */
        !            46: #define D_CR_ACCESS            0x80    /* ro set=can access 3280 registers */
        !            47: #define CSR_DIR_READ           0x40    /* rw direction, 1 = read 0 = write */
        !            48: 
        !            49: #define CSR_RESET              0x80    /* wo  Resets 53c400 */
        !            50: #define CSR_5380_REG           0x80    /* ro  5380 registers can be accessed */
        !            51: #define CSR_TRANS_DIR          0x40    /* rw  Data transfer direction */
        !            52: #define CSR_SCSI_BUFF_INTR     0x20    /* rw  Enable int on transfer ready */
        !            53: #define CSR_5380_INTR          0x10    /* rw  Enable 5380 interrupts */
        !            54: #define CSR_SHARED_INTR        0x08    /* rw  Interrupt sharing */
        !            55: #define CSR_HOST_BUF_NOT_RDY   0x04    /* ro  Host buffer not ready */
        !            56: #define CSR_SCSI_BUF_RDY       0x02    /* ro  SCSI buffer ready */
        !            57: #define CSR_GATED_5380_IRQ     0x01    /* ro  Last block xferred */
        !            58: #define CSR_INT_BASE (CSR_SCSI_BUFF_INTR | CSR_5380_INTR)
        !            59: 
        !            60: 
        !            61: #define DTC_BLK_CNT            0x101   /* rw 
        !            62:                                         * # of 128-byte blocks to transfer */
        !            63: 
        !            64: 
        !            65: #define D_CR_ACCESS             0x80    /* ro set=can access 3280 registers */
        !            66: 
        !            67: #define DTC_SWITCH_REG         0x3982  /* ro - DIP switches */
        !            68: #define DTC_RESUME_XFER                0x3982  /* wo - resume data xfer 
        !            69:                                           * after disconnect/reconnect*/
        !            70: 
        !            71: #define DTC_5380_OFFSET                0x3880  /* 8 registers here, see NCR5380.h */
        !            72: 
        !            73: /*!!!! for dtc, it's a 128 byte buffer at 3900 !!! */
        !            74: #define DTC_DATA_BUF           0x3900  /* rw 128 bytes long */
        !            75: 
        !            76: 
        !            77: #ifndef ASM
        !            78: int dtc_abort(Scsi_Cmnd *);
        !            79: int dtc_biosparam(Disk *, kdev_t, int*);
        !            80: int dtc_detect(Scsi_Host_Template *);
        !            81: int dtc_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
        !            82: int dtc_reset(Scsi_Cmnd *, unsigned int reset_flags);
        !            83: int dtc_proc_info (char *buffer, char **start, off_t offset,
        !            84:                   int length, int hostno, int inout);
        !            85: 
        !            86: #ifndef NULL
        !            87: #define NULL 0
        !            88: #endif
        !            89: 
        !            90: #ifndef CMD_PER_LUN
        !            91: #define CMD_PER_LUN 2
        !            92: #endif
        !            93: 
        !            94: #ifndef CAN_QUEUE
        !            95: #define CAN_QUEUE 32 
        !            96: #endif
        !            97: 
        !            98: /* 
        !            99:  * I hadn't thought of this with the earlier drivers - but to prevent
        !           100:  * macro definition conflicts, we shouldn't define all of the internal
        !           101:  * macros when this is being used solely for the host stub.
        !           102:  */
        !           103: 
        !           104: #if defined(HOSTS_C) || defined(MODULE)
        !           105: 
        !           106: #define DTC3x80 {NULL, NULL, NULL, NULL, \
        !           107:        "DTC 3180/3280 ", dtc_detect, NULL,  \
        !           108:        NULL,                                                   \
        !           109:        NULL, dtc_queue_command, dtc_abort, dtc_reset, NULL,    \
        !           110:        dtc_biosparam,                                          \
        !           111:        /* can queue */ CAN_QUEUE, /* id */ 7, SG_ALL,                  \
        !           112:        /* cmd per lun */ CMD_PER_LUN , 0, 0, DISABLE_CLUSTERING}
        !           113: 
        !           114: #endif
        !           115: 
        !           116: #ifndef HOSTS_C
        !           117: 
        !           118: #define NCR5380_implementation_fields \
        !           119:     volatile unsigned char *base
        !           120: 
        !           121: #define NCR5380_local_declare() \
        !           122:     volatile unsigned char *base
        !           123: 
        !           124: #define NCR5380_setup(instance) \
        !           125:     base = (volatile unsigned char *) (instance)->base
        !           126: 
        !           127: #define DTC_address(reg) (base + DTC_5380_OFFSET + reg)
        !           128: 
        !           129: #define dbNCR5380_read(reg)                                              \
        !           130:     (rval=*(DTC_address(reg)), \
        !           131:      (((unsigned char) printk("DTC : read register %d at addr %08x is: %02x\n"\
        !           132:     , (reg), (int)DTC_address(reg), rval)), rval ) )
        !           133: 
        !           134: #define dbNCR5380_write(reg, value) do {                                  \
        !           135:     printk("DTC : write %02x to register %d at address %08x\n",         \
        !           136:             (value), (reg), (int)DTC_address(reg));     \
        !           137:     *(DTC_address(reg)) = (value);} while(0)
        !           138: 
        !           139: 
        !           140: #if !(DTCDEBUG & DTCDEBUG_TRANSFER) 
        !           141: #define NCR5380_read(reg) (*(DTC_address(reg)))
        !           142: #define NCR5380_write(reg, value) (*(DTC_address(reg)) = (value))
        !           143: #else
        !           144: #define NCR5380_read(reg) (*(DTC_address(reg)))
        !           145: #define xNCR5380_read(reg)                                             \
        !           146:     (((unsigned char) printk("DTC : read register %d at address %08x\n"\
        !           147:     , (reg), DTC_address(reg))), *(DTC_address(reg)))
        !           148: 
        !           149: #define NCR5380_write(reg, value) do {                                 \
        !           150:     printk("DTC : write %02x to register %d at address %08x\n",        \
        !           151:            (value), (reg), (int)DTC_address(reg));     \
        !           152:     *(DTC_address(reg)) = (value);             } while(0)
        !           153: #endif
        !           154: 
        !           155: #define NCR5380_intr dtc_intr
        !           156: #define NCR5380_queue_command dtc_queue_command
        !           157: #define NCR5380_abort dtc_abort
        !           158: #define NCR5380_reset dtc_reset
        !           159: #define NCR5380_proc_info dtc_proc_info 
        !           160: 
        !           161: /* 15 12 11 10
        !           162:    1001 1100 0000 0000 */
        !           163: 
        !           164: #define DTC_IRQS 0x9c00
        !           165: 
        !           166: 
        !           167: #endif /* else def HOSTS_C */
        !           168: #endif /* ndef ASM */
        !           169: #endif /* DTC3280_H */

unix.superglobalmegacorp.com

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