[BACK]Return to sshreg.h CVS log [TXT][DIR] Up to [local] / sys / arch / mvme68k / dev

Annotation of sys/arch/mvme68k/dev/sshreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: sshreg.h,v 1.5 2005/11/21 21:52:45 miod Exp $ */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 1995 Theo de Raadt
        !             5:  * Copyright (c) 1990 The Regents of the University of California.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * This code is derived from software contributed to Berkeley by
        !             9:  * Van Jacobson of Lawrence Berkeley Laboratory.
        !            10:  *
        !            11:  * Redistribution and use in source and binary forms, with or without
        !            12:  * modification, are permitted provided that the following conditions
        !            13:  * are met:
        !            14:  * 1. Redistributions of source code must retain the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer.
        !            16:  * 2. Redistributions in binary form must reproduce the above copyright
        !            17:  *    notice, this list of conditions and the following disclaimer in the
        !            18:  *    documentation and/or other materials provided with the distribution.
        !            19:  * 3. Neither the name of the University nor the names of its contributors
        !            20:  *    may be used to endorse or promote products derived from this software
        !            21:  *    without specific prior written permission.
        !            22:  *
        !            23:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            24:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            25:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            26:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            27:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            28:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            29:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            30:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            31:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            32:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            33:  * SUCH DAMAGE.
        !            34:  *
        !            35:  *     @(#)sshreg.h    7.3 (Berkeley) 2/5/91
        !            36:  */
        !            37:
        !            38: /*
        !            39:  * NCR 53C710 SCSI interface hardware description.
        !            40:  *
        !            41:  * From the Mach scsi driver for the 53C700
        !            42:  */
        !            43:
        !            44: typedef struct {
        !            45: /*00*/ volatile unsigned char  ssh_sien;       /* rw: SCSI Interrupt Enable */
        !            46: /*01*/ volatile unsigned char  ssh_sdid;       /* rw: SCSI Destination ID */
        !            47: /*02*/ volatile unsigned char  ssh_scntl1;     /* rw: SCSI control reg 1 */
        !            48: /*03*/ volatile unsigned char  ssh_scntl0;     /* rw: SCSI control reg 0 */
        !            49: /*04*/ volatile unsigned char  ssh_socl;       /* rw: SCSI Output Control Latch */
        !            50: /*05*/ volatile unsigned char  ssh_sodl;       /* rw: SCSI Output Data Latch */
        !            51: /*06*/ volatile unsigned char  ssh_sxfer;      /* rw: SCSI Transfer reg */
        !            52: /*07*/ volatile unsigned char  ssh_scid;       /* rw: SCSI Chip ID reg */
        !            53: /*08*/ volatile unsigned char  ssh_sbcl;       /* ro: SCSI Bus Control Lines */
        !            54: /*09*/ volatile unsigned char  ssh_sbdl;       /* ro: SCSI Bus Data Lines */
        !            55: /*0a*/ volatile unsigned char  ssh_sidl;       /* ro: SCSI Input Data Latch */
        !            56: /*0b*/ volatile unsigned char  ssh_sfbr;       /* ro: SCSI First Byte Received */
        !            57: /*0c*/ volatile unsigned char  ssh_sstat2;     /* ro: SCSI status reg 2 */
        !            58: /*0d*/ volatile unsigned char  ssh_sstat1;     /* ro: SCSI status reg 1 */
        !            59: /*0e*/ volatile unsigned char  ssh_sstat0;     /* ro: SCSI status reg 0 */
        !            60: /*0f*/ volatile unsigned char  ssh_dstat;      /* ro: DMA status */
        !            61: /*10*/ volatile unsigned long  ssh_dsa;        /* rw: Data Structure Address */
        !            62: /*14*/ volatile unsigned char  ssh_ctest3;     /* ro: Chip test register 3 */
        !            63: /*15*/ volatile unsigned char  ssh_ctest2;     /* ro: Chip test register 2 */
        !            64: /*16*/ volatile unsigned char  ssh_ctest1;     /* ro: Chip test register 1 */
        !            65: /*17*/ volatile unsigned char  ssh_ctest0;     /* ro: Chip test register 0 */
        !            66: /*18*/ volatile unsigned char  ssh_ctest7;     /* rw: Chip test register 7 */
        !            67: /*19*/ volatile unsigned char  ssh_ctest6;     /* rw: Chip test register 6 */
        !            68: /*1a*/ volatile unsigned char  ssh_ctest5;     /* rw: Chip test register 5 */
        !            69: /*1b*/ volatile unsigned char  ssh_ctest4;     /* rw: Chip test register 4 */
        !            70: /*1c*/ volatile unsigned long  ssh_temp;       /* rw: Temporary Stack reg */
        !            71: /*20*/ volatile unsigned char  ssh_lcrc;       /* rw: LCRC value */
        !            72: /*21*/ volatile unsigned char  ssh_ctest8;     /* rw: Chip test register 8 */
        !            73: /*22*/ volatile unsigned char  ssh_istat;      /* rw: Interrupt Status reg */
        !            74: /*23*/ volatile unsigned char  ssh_dfifo;      /* rw: DMA FIFO */
        !            75: /*24*/ volatile unsigned char  ssh_dcmd;       /* rw: DMA Command Register */
        !            76: /*25*/ volatile unsigned char  ssh_dbc2;       /* rw: DMA Byte Counter reg */
        !            77: /*26*/ volatile unsigned char  ssh_dbc1;
        !            78: /*27*/ volatile unsigned char  ssh_dbc0;
        !            79: /*28*/ volatile unsigned long  ssh_dnad;       /* rw: DMA Next Address */
        !            80: /*2c*/ volatile unsigned long  ssh_dsp;        /* rw: DMA SCRIPTS Pointer reg */
        !            81: /*30*/ volatile unsigned long  ssh_dsps;       /* rw: DMA SCRIPTS Pointer Save reg */
        !            82: /*34*/ volatile unsigned long  ssh_scratch;    /* rw: Scratch Register */
        !            83: /*38*/ volatile unsigned char  ssh_dcntl;      /* rw: DMA Control reg */
        !            84: /*39*/ volatile unsigned char  ssh_dwt;        /* rw: DMA Watchdog Timer */
        !            85: /*3a*/ volatile unsigned char  ssh_dien;       /* rw: DMA Interrupt Enable */
        !            86: /*3b*/ volatile unsigned char  ssh_dmode;      /* rw: DMA Mode reg */
        !            87: /*3c*/ volatile unsigned long  ssh_adder;
        !            88:
        !            89: } ssh_regmap_t;
        !            90: typedef volatile ssh_regmap_t *ssh_regmap_p;
        !            91:
        !            92: /*
        !            93:  * Register defines
        !            94:  */
        !            95:
        !            96: /* Scsi control register 0 (scntl0) */
        !            97:
        !            98: #define        SSH_SCNTL0_ARB          0xc0    /* Arbitration mode */
        !            99: #      define  SSH_ARB_SIMPLE  0x00
        !           100: #      define  SSH_ARB_FULL    0xc0
        !           101: #define        SSH_SCNTL0_START        0x20    /* Start Sequence */
        !           102: #define        SSH_SCNTL0_WATN 0x10    /* (Select) With ATN */
        !           103: #define        SSH_SCNTL0_EPC          0x08    /* Enable Parity Checking */
        !           104: #define        SSH_SCNTL0_EPG          0x04    /* Enable Parity Generation */
        !           105: #define        SSH_SCNTL0_AAP          0x02    /* Assert ATN on Parity Error */
        !           106: #define        SSH_SCNTL0_TRG          0x01    /* Target Mode */
        !           107:
        !           108: /* Scsi control register 1 (scntl1) */
        !           109:
        !           110: #define        SSH_SCNTL1_EXC          0x80    /* Extra Clock Cycle of data setup */
        !           111: #define        SSH_SCNTL1_ADB          0x40    /* Assert Data Bus */
        !           112: #define        SSH_SCNTL1_ESR          0x20    /* Enable Selection/Reselection */
        !           113: #define        SSH_SCNTL1_CON          0x10    /* Connected */
        !           114: #define        SSH_SCNTL1_RST          0x08    /* Assert RST */
        !           115: #define        SSH_SCNTL1_AESP 0x04    /* Assert even SCSI parity */
        !           116: #define        SSH_SCNTL1_RES0 0x02    /* Reserved */
        !           117: #define        SSH_SCNTL1_RES1 0x01    /* Reserved */
        !           118:
        !           119: /* Scsi interrupt enable register (sien) */
        !           120:
        !           121: #define        SSH_SIEN_M_A            0x80    /* Phase Mismatch or ATN active */
        !           122: #define        SSH_SIEN_FCMP           0x40    /* Function Complete */
        !           123: #define        SSH_SIEN_STO            0x20    /* (Re)Selection timeout */
        !           124: #define        SSH_SIEN_SEL            0x10    /* (Re)Selected */
        !           125: #define        SSH_SIEN_SGE            0x08    /* SCSI Gross Error */
        !           126: #define        SSH_SIEN_UDC            0x04    /* Unexpected Disconnect */
        !           127: #define        SSH_SIEN_RST            0x02    /* RST asserted */
        !           128: #define        SSH_SIEN_PAR            0x01    /* Parity Error */
        !           129:
        !           130: /* Scsi chip ID (scid) */
        !           131:
        !           132: #define        SSH_SCID_VALUE(i)       (1<<i)
        !           133:
        !           134: /* Scsi transfer register (sxfer) */
        !           135:
        !           136: #define        SSH_SXFER_DHP           0x80    /* Disable Halt on Parity error/ ATN asserted */
        !           137: #define        SSH_SXFER_TP            0x70    /* Synch Transfer Period */
        !           138:                                        /* see specs for formulas:
        !           139:                                                Period = TCP * (4 + XFERP )
        !           140:                                                TCP = 1 + CLK + 1..2;
        !           141:                                         */
        !           142: #define        SSH_SXFER_MO            0x0f    /* Synch Max Offset */
        !           143: #      define  SSH_MAX_OFFSET  8
        !           144:
        !           145: /* Scsi output data latch register (sodl) */
        !           146:
        !           147: /* Scsi output control latch register (socl) */
        !           148:
        !           149: #define        SSH_REQ         0x80    /* SCSI signal <x> asserted */
        !           150: #define        SSH_ACK         0x40
        !           151: #define        SSH_BSY         0x20
        !           152: #define        SSH_SEL         0x10
        !           153: #define        SSH_ATN         0x08
        !           154: #define        SSH_MSG         0x04
        !           155: #define        SSH_CD                  0x02
        !           156: #define        SSH_IO                  0x01
        !           157:
        !           158: #define        SSH_PHASE(socl) SCSI_PHASE(socl)
        !           159:
        !           160: /* Scsi first byte received register (sfbr) */
        !           161:
        !           162: /* Scsi input data latch register (sidl) */
        !           163:
        !           164: /* Scsi bus data lines register (sbdl) */
        !           165:
        !           166: /* Scsi bus control lines register (sbcl).  Same as socl */
        !           167:
        !           168: /* DMA status register (dstat) */
        !           169:
        !           170: #define        SSH_DSTAT_DFE           0x80    /* DMA FIFO empty */
        !           171: #define        SSH_DSTAT_RES           0x40
        !           172: #define        SSH_DSTAT_BF            0x20    /* Bus fault */
        !           173: #define        SSH_DSTAT_ABRT          0x10    /* Aborted */
        !           174: #define        SSH_DSTAT_SSI           0x08    /* SCRIPT Single Step */
        !           175: #define        SSH_DSTAT_SIR           0x04    /* SCRIPT Interrupt Instruction */
        !           176: #define        SSH_DSTAT_WTD           0x02    /* Watchdog Timeout Detected */
        !           177: #define        SSH_DSTAT_IID           0x01    /* Invalid Instruction Detected */
        !           178:
        !           179: /* Scsi status register 0 (sstat0) */
        !           180:
        !           181: #define        SSH_SSTAT0_M_A          0x80    /* Phase Mismatch or ATN active */
        !           182: #define        SSH_SSTAT0_FCMP 0x40    /* Function Complete */
        !           183: #define        SSH_SSTAT0_STO          0x20    /* (Re)Selection timeout */
        !           184: #define        SSH_SSTAT0_SEL          0x10    /* (Re)Selected */
        !           185: #define        SSH_SSTAT0_SGE          0x08    /* SCSI Gross Error */
        !           186: #define        SSH_SSTAT0_UDC          0x04    /* Unexpected Disconnect */
        !           187: #define        SSH_SSTAT0_RST          0x02    /* RST asserted */
        !           188: #define        SSH_SSTAT0_PAR          0x01    /* Parity Error */
        !           189:
        !           190: /* Scsi status register 1 (sstat1) */
        !           191:
        !           192: #define        SSH_SSTAT1_ILF          0x80    /* Input latch (sidl) full */
        !           193: #define        SSH_SSTAT1_ORF          0x40    /* output reg (sodr) full */
        !           194: #define        SSH_SSTAT1_OLF          0x20    /* output latch (sodl) full */
        !           195: #define        SSH_SSTAT1_AIP          0x10    /* Arbitration in progress */
        !           196: #define        SSH_SSTAT1_LOA          0x08    /* Lost arbitration */
        !           197: #define        SSH_SSTAT1_WOA          0x04    /* Won arbitration */
        !           198: #define        SSH_SSTAT1_RST          0x02    /* SCSI RST current value */
        !           199: #define        SSH_SSTAT1_SDP          0x01    /* SCSI SDP current value */
        !           200:
        !           201: /* Scsi status register 2 (sstat2) */
        !           202:
        !           203: #define        SSH_SSTAT2_FF           0xf0    /* SCSI FIFO flags (bytecount) */
        !           204: #      define SSH_SCSI_FIFO_DEEP       8
        !           205: #define        SSH_SSTAT2_SDP          0x08    /* Latched (on REQ) SCSI SDP */
        !           206: #define        SSH_SSTAT2_MSG          0x04    /* Latched SCSI phase */
        !           207: #define        SSH_SSTAT2_CD           0x02
        !           208: #define        SSH_SSTAT2_IO           0x01
        !           209:
        !           210: /* Chip test register 0 (ctest0) */
        !           211:
        !           212: #define        SSH_CTEST0_RES0 0x80
        !           213: #define        SSH_CTEST0_BTD          0x40    /* Byte-to-byte Timer Disable */
        !           214: #define        SSH_CTEST0_GRP          0x20    /* Generate Receive Parity for Passthrough */
        !           215: #define        SSH_CTEST0_EAN          0x10    /* Enable Active Negation */
        !           216: #define        SSH_CTEST0_HSC          0x08    /* Halt SCSI clock */
        !           217: #define        SSH_CTEST0_ERF          0x04    /* Extend REQ/ACK Filtering */
        !           218: #define        SSH_CTEST0_RES1 0x02
        !           219: #define        SSH_CTEST0_DDIR 0x01    /* Xfer direction (1-> from SCSI bus) */
        !           220:
        !           221: /* Chip test register 1 (ctest1) */
        !           222:
        !           223: #define        SSH_CTEST1_FMT          0xf0    /* Byte empty in DMA FIFO bottom (high->byte3) */
        !           224: #define        SSH_CTEST1_FFL          0x0f    /* Byte full in DMA FIFO top, same */
        !           225:
        !           226: /* Chip test register 2 (ctest2) */
        !           227:
        !           228: #define        SSH_CTEST2_RES          0x80
        !           229: #define        SSH_CTEST2_SIGP 0x40    /* Signal process */
        !           230: #define        SSH_CTEST2_SOFF 0x20    /* Synch Offset compare (1-> zero Init, max Tgt */
        !           231: #define        SSH_CTEST2_SFP          0x10    /* SCSI FIFO Parity */
        !           232: #define        SSH_CTEST2_DFP          0x08    /* DMA FIFO Parity */
        !           233: #define        SSH_CTEST2_TEOP 0x04    /* True EOP (a-la 5380) */
        !           234: #define        SSH_CTEST2_DREQ 0x02    /* DREQ status */
        !           235: #define        SSH_CTEST2_DACK 0x01    /* DACK status */
        !           236:
        !           237: /* Chip test register 3 (ctest3) read-only, top of SCSI FIFO */
        !           238:
        !           239: /* Chip test register 4 (ctest4) */
        !           240:
        !           241: #define        SSH_CTEST4_MUX          0x80    /* Host bus multiplex mode */
        !           242: #define        SSH_CTEST4_ZMOD 0x40    /* High-impedance outputs */
        !           243: #define        SSH_CTEST4_SZM          0x20    /* ditto, SCSI "outputs" */
        !           244: #define        SSH_CTEST4_SLBE 0x10    /* SCSI loobpack enable */
        !           245: #define        SSH_CTEST4_SFWR 0x08    /* SCSI FIFO write enable (from sodl) */
        !           246: #define        SSH_CTEST4_FBL          0x07    /* DMA FIFO Byte Lane select (from ctest6)
        !           247:                                           4->0, .. 7->3 */
        !           248:
        !           249: /* Chip test register 5 (ctest5) */
        !           250:
        !           251: #define        SSH_CTEST5_ADCK 0x80    /* Clock Address Incrementor */
        !           252: #define        SSH_CTEST5_BBCK 0x40    /* Clock Byte counter */
        !           253: #define        SSH_CTEST5_ROFF 0x20    /* Reset SCSI offset */
        !           254: #define        SSH_CTEST5_MASR 0x10    /* Master set/reset pulses (of bits 3-0) */
        !           255: #define        SSH_CTEST5_DDIR 0x08    /* (re)set internal DMA direction */
        !           256: #define        SSH_CTEST5_EOP          0x04    /* (re)set internal EOP */
        !           257: #define        SSH_CTEST5_DREQ 0x02    /* (re)set internal REQ */
        !           258: #define        SSH_CTEST5_DACK 0x01    /* (re)set internal ACK */
        !           259:
        !           260: /* Chip test register 6 (ctest6)  DMA FIFO access */
        !           261:
        !           262: /* Chip test register 7 (ctest7) */
        !           263:
        !           264: #define        SSH_CTEST7_CDIS 0x80    /* Cache burst disable */
        !           265: #define        SSH_CTEST7_SC1          0x40    /* Snoop control 1 */
        !           266: #define        SSH_CTEST7_SC0          0x20    /* Snoop control 0 */
        !           267: #define SSH_CTEST7_INHIBIT     (0 << 5)
        !           268: #define SSH_CTEST7_SNOOP       (1 << 5)
        !           269: #define SSH_CTEST7_INVAL       (2 << 5)
        !           270: #define SSH_CTEST7_RESV        (3 << 5)
        !           271: #define        SSH_CTEST7_STD          0x10    /* Selection timeout disable */
        !           272: #define        SSH_CTEST7_DFP          0x08    /* DMA FIFO parity bit */
        !           273: #define        SSH_CTEST7_EVP          0x04    /* Even parity (to host bus) */
        !           274: #define        SSH_CTEST7_TT1          0x02    /* Transfer type bit */
        !           275: #define        SSH_CTEST7_DIFF 0x01    /* Differential mode */
        !           276:
        !           277: /* DMA FIFO register (dfifo) */
        !           278:
        !           279: #define        SSH_DFIFO_RES           0x80
        !           280: #define        SSH_DFIFO_BO            0x7f    /* FIFO byte offset counter */
        !           281:
        !           282: /* Interrupt status register (istat) */
        !           283:
        !           284: #define        SSH_ISTAT_ABRT          0x80    /* Abort operation */
        !           285: #define        SSH_ISTAT_RST           0x40    /* Software reset */
        !           286: #define        SSH_ISTAT_SIGP          0x20    /* Signal process */
        !           287: #define        SSH_ISTAT_RES           0x10
        !           288: #define        SSH_ISTAT_CON           0x08    /* Connected */
        !           289: #define        SSH_ISTAT_RES1          0x04
        !           290: #define        SSH_ISTAT_SIP           0x02    /* SCSI Interrupt pending */
        !           291: #define        SSH_ISTAT_DIP           0x01    /* DMA Interrupt pending */
        !           292:
        !           293: /* Chip test register 8 (ctest8) */
        !           294:
        !           295: #define        SSH_CTEST8_V            0xf0    /* Chip revision level */
        !           296: #define        SSH_CTEST8_FLF          0x08    /* Flush DMA FIFO */
        !           297: #define        SSH_CTEST8_CLF          0x04    /* Clear DMA and SCSI FIFOs */
        !           298: #define        SSH_CTEST8_FM           0x02    /* Fetch pin mode */
        !           299: #define        SSH_CTEST8_SM           0x01    /* Snoop pins mode */
        !           300:
        !           301: /* DMA Mode register (dmode) */
        !           302:
        !           303: #define        SSH_DMODE_BL_MASK       0xc0    /* 0->1 1->2 2->4 3->8 */
        !           304: #define        SSH_DMODE_FC            0x30    /* Function code */
        !           305: #define        SSH_DMODE_PD            0x08    /* Program/data */
        !           306: #define        SSH_DMODE_FAM           0x04    /* Fixed address mode */
        !           307: #define        SSH_DMODE_U0            0x02    /* User programmable transfer type */
        !           308: #define        SSH_DMODE_MAN           0x01    /* Manual start mode */
        !           309:
        !           310: /* DMA interrupt enable register (dien) */
        !           311:
        !           312: #define        SSH_DIEN_RES            0xc0
        !           313: #define        SSH_DIEN_BF             0x20    /* On Bus Fault */
        !           314: #define        SSH_DIEN_ABRT           0x10    /* On Abort */
        !           315: #define        SSH_DIEN_SSI            0x08    /* On SCRIPTS sstep */
        !           316: #define        SSH_DIEN_SIR            0x04    /* On SCRIPTS intr instruction */
        !           317: #define        SSH_DIEN_WTD            0x02    /* On watchdog timeout */
        !           318: #define        SSH_DIEN_IID            0x01    /* On illegal instruction detected */
        !           319:
        !           320: /* DMA control register (dcntl) */
        !           321:
        !           322: #define        SSH_DCNTL_CF_MASK       0xc0    /* Clock frequency dividers:
        !           323:                                                0 --> 37.51..50.00 MHz, div=2
        !           324:                                                1 --> 25.01..37.50 MHz, div=1.5
        !           325:                                                2 --> 16.67..25.00 MHz, div=1
        !           326:                                                3 --> 50.01..66.67 MHz, div=3
        !           327:                                         */
        !           328: #define        SSH_DCNTL_EA            0x20    /* Enable ack */
        !           329: #define        SSH_DCNTL_SSM           0x10    /* Single step mode */
        !           330: #define        SSH_DCNTL_LLM           0x08    /* Enable SCSI Low-level mode */
        !           331: #define        SSH_DCNTL_STD           0x04    /* Start DMA operation */
        !           332: #define        SSH_DCNTL_FA            0x02    /* Fast arbitration */
        !           333: #define        SSH_DCNTL_COM           0x01    /* 53C700 compatibility */

CVSweb