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

Annotation of sys/dev/tc/tcdsreg.h, Revision 1.1.1.1

1.1       nbrk        1: /* $OpenBSD: tcdsreg.h,v 1.3 2007/05/26 00:36:03 krw Exp $ */
                      2: /* $NetBSD: tcdsreg.h,v 1.1 2000/07/04 02:22:20 nisimura Exp $ */
                      3:
                      4: /*
                      5:  * Copyright (c) 1994, 1995 Carnegie-Mellon University.
                      6:  * All rights reserved.
                      7:  *
                      8:  * Authors: Keith Bostic, Chris G. Demetriou
                      9:  *
                     10:  * Permission to use, copy, modify and distribute this software and
                     11:  * its documentation is hereby granted, provided that both the copyright
                     12:  * notice and this permission notice appear in all copies of the
                     13:  * software, derivative works or modified versions, and any portions
                     14:  * thereof, and that both notices appear in supporting documentation.
                     15:  *
                     16:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
                     17:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
                     18:  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     19:  *
                     20:  * Carnegie Mellon requests users of this software to return to
                     21:  *
                     22:  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
                     23:  *  School of Computer Science
                     24:  *  Carnegie Mellon University
                     25:  *  Pittsburgh PA 15213-3890
                     26:  *
                     27:  * any improvements or extensions that they make and grant Carnegie the
                     28:  * rights to redistribute these changes.
                     29:  */
                     30:
                     31: /*
                     32:  * Offsets to the SCSI chips
                     33:  */
                     34: #define        TCDS_SCSI0_OFFSET       0x080000
                     35: #define        TCDS_SCSI1_OFFSET       0x080100
                     36:
                     37: /*
                     38:  * TCDS register offsets, bit masks.
                     39:  */
                     40: #define        TCDS_EEPROM               0x000000      /* EEPROM offset */
                     41: #define        TCDS_EEPROM_IDS           0x000008      /* SCSI IDs offset in EEPROM */
                     42:
                     43: #define        TCDS_CIR                  0x040000      /* CIR offset */
                     44:
                     45: /*
                     46:  * TCDS CIR control bits.
                     47:  */
                     48: #define        TCDS_CIR_GPO_0          0x00000001      /* Not used */
                     49: #define        TCDS_CIR_GPO_1          0x00000002      /* Not used */
                     50: #define        TCDS_CIR_GPO_2          0x00000004      /* Not used */
                     51: #define        TCDS_CIR_STD            0x00000008      /* Serial transmit disable */
                     52: #define        TCDS_CIR_GPI_0          0x00000010      /* Not used */
                     53: #define        TCDS_CIR_GPI_1          0x00000020      /* Not used */
                     54: #define        TCDS_CIR_GPI_2          0x00000040      /* 1 = 25MHz, 0 = 40MHz */
                     55: #define        TCDS_CIR_GPI_3          0x00000080      /* Not used */
                     56: #define TCDS_CIR_SCSI0_DMAENA  0x00000100      /* SCSI 0 DMA enable */
                     57: #define TCDS_CIR_SCSI1_DMAENA  0x00000200      /* SCSI 1 DMA enable */
                     58: #define        TCDS_CIR_SCSI0_RESET    0x00000400      /* SCSI 0 reset */
                     59: #define        TCDS_CIR_SCSI1_RESET    0x00000800      /* SCSI 1 reset */
                     60: #define        TCDS_CIR_SCSI0_DMA_TEST 0x00001000      /* SCSI 0 DMA buf parity test */
                     61: #define        TCDS_CIR_SCSI1_DMA_TEST 0x00002000      /* SCSI 1 DMA buf parity test */
                     62: #define        TCDS_CIR_DB_PAR         0x00004000      /* DB parity test mode */
                     63: #define        TCDS_CIR_TC_PAR         0x00008000      /* TC parity test mode */
                     64: #define        TCDS_CIR_ALLCONTROL     0x0000ffff      /* all control bits */
                     65:
                     66: /* TCDS CIR interrupt bits. */
                     67: #define        TCDS_CIR_SCSI0_DREQ     0x00010000      /* SCSI 0 DREQ */
                     68: #define        TCDS_CIR_SCSI1_DREQ     0x00020000      /* SCSI 1 DREQ */
                     69: #define        TCDS_CIR_SCSI0_INT      0x00040000      /* SCSI 0 interrupt */
                     70: #define        TCDS_CIR_SCSI1_INT      0x00080000      /* SCSI 1 interrupt */
                     71: #define        TCDS_CIR_SCSI0_PREFETCH 0x00100000      /* SCSI 0 prefetch */
                     72: #define        TCDS_CIR_SCSI1_PREFETCH 0x00200000      /* SCSI 1 prefetch */
                     73: #define        TCDS_CIR_SCSI0_DMA      0x00400000      /* SCSI 0 DMA error */
                     74: #define        TCDS_CIR_SCSI1_DMA      0x00800000      /* SCSI 1 DMA error */
                     75: #define        TCDS_CIR_SCSI0_DB       0x01000000      /* SCSI 0 DB parity */
                     76: #define        TCDS_CIR_SCSI1_DB       0x02000000      /* SCSI 1 DB parity */
                     77: #define        TCDS_CIR_SCSI0_DMAB_PAR 0x04000000      /* SCSI 0 DMA buffer parity */
                     78: #define        TCDS_CIR_SCSI1_DMAB_PAR 0x08000000      /* SCSI 1 DMA buffer parity */
                     79: #define        TCDS_CIR_SCSI0_DMAR_PAR 0x10000000      /* SCSI 0 DMA read parity */
                     80: #define        TCDS_CIR_SCSI1_DMAR_PAR 0x20000000      /* SCSI 1 DMA read parity */
                     81: #define        TCDS_CIR_TCIOW_PAR      0x40000000      /* TC I/O write parity */
                     82: #define        TCDS_CIR_TCIOA_PAR      0x80000000      /* TC I/O address parity */
                     83: #define        TCDS_CIR_ALLINTR        0xffff0000      /* all interrupt bits */
                     84:
                     85: #define TCDS_CIR_CLR(c, b)     c = ((c | TCDS_CIR_ALLINTR) & ~b)
                     86: #define TCDS_CIR_SET(c, b)     c = ((c | TCDS_CIR_ALLINTR) | b)
                     87:
                     88: /* TCDS IMER masks and enables, for interrupts in the CIR. */
                     89: #define        TCDS_IMER_SCSI0_MASK          0x04      /* SCSI 0 intr/enable mask */
                     90: #define        TCDS_IMER_SCSI1_MASK          0x08      /* SCSI 1 intr/enable mask */
                     91: #define        TCDS_IMER_SCSI0_ENB     (TCDS_IMER_SCSI0_MASK << 16)
                     92: #define        TCDS_IMER_SCSI1_ENB     (TCDS_IMER_SCSI1_MASK << 16)
                     93: #define        TCDS_IMER                 0x040004      /* IMER offset */
                     94:
                     95: #define        TCDS_SCSI0_DMA_ADDR       0x041000      /* DMA address */
                     96: #define        TCDS_SCSI0_DMA_INTR       0x041004      /* DMA interrupt control */
                     97: #define        TCDS_SCSI0_DMA_DUD0       0x041008      /* DMA unaligned data[0] */
                     98: #define        TCDS_SCSI0_DMA_DUD1       0x04100c      /* DMA unaligned data[1] */
                     99:
                    100: #define        TCDS_SCSI1_DMA_ADDR       0x041100      /* DMA address */
                    101: #define        TCDS_SCSI1_DMA_INTR       0x041104      /* DMA interrupt control */
                    102: #define        TCDS_SCSI1_DMA_DUD0       0x041108      /* DMA unaligned data[0] */
                    103: #define        TCDS_SCSI1_DMA_DUD1       0x04110c      /* DMA unaligned data[1] */
                    104:
                    105: #define        TCDS_DIC_ADDRMASK             0x03      /* DMA address bits <1:0> */
                    106: #define        TCDS_DIC_READ_PREFETCH        0x40      /* DMA read prefetch enable */
                    107: #define        TCDS_DIC_WRITE                0x80      /* DMA write */
                    108:
                    109: #define        TCDS_DUD0_VALID00       0x00000001      /* byte 00 valid mask (zero) */
                    110: #define        TCDS_DUD0_VALID01       0x00000002      /* byte 01 valid mask */
                    111: #define        TCDS_DUD0_VALID10       0x00000004      /* byte 10 valid mask */
                    112: #define        TCDS_DUD0_VALID11       0x00000008      /* byte 11 valid mask */
                    113: #define        TCDS_DUD0_VALIDBITS     0x0000000f      /* bits that show valid bytes */
                    114:
                    115: #define        TCDS_DUD1_VALID00       0x01000000      /* byte 00 valid mask */
                    116: #define        TCDS_DUD1_VALID01       0x02000000      /* byte 01 valid mask */
                    117: #define        TCDS_DUD1_VALID10       0x04000000      /* byte 10 valid mask */
                    118: #define        TCDS_DUD1_VALID11       0x08000000      /* byte 11 valid mask (zero) */
                    119: #define        TCDS_DUD1_VALIDBITS     0x0f000000      /* bits that show valid bytes */
                    120:
                    121: #define        TCDS_DUD_BYTE00         0x000000ff      /* byte 00 mask */
                    122: #define        TCDS_DUD_BYTE01         0x0000ff00      /* byte 01 mask */
                    123: #define        TCDS_DUD_BYTE10         0x00ff0000      /* byte 10 mask */
                    124: #define        TCDS_DUD_BYTE11         0xff000000      /* byte 11 mask */
                    125:
                    126: #if 0
                    127: int  tcds_scsi_iserr(struct dma_softc *);
                    128: int  tcds_scsi_isintr(int, int);
                    129: void tcds_dma_disable(int);
                    130: void tcds_dma_enable(int);
                    131: void tcds_dma_init(struct dma_softc *, int);
                    132: void tcds_scsi_disable(int);
                    133: void tcds_scsi_enable(int);
                    134: void tcds_scsi_reset(int);
                    135:
                    136: /*
                    137:  * XXX
                    138:  * Start of MACH #defines, minimal changes to port to NetBSD.
                    139:  *
                    140:  * The following register is the SCSI control interrupt register.  It
                    141:  * starts, stops and resets scsi DMA.  It takes over the SCSI functions
                    142:  * that were handled by the ASIC on the 3min.
                    143:  */
                    144: #define KN15AA_SYS_SCSI                0x1d0000000
                    145: #define KN15AA_REG_SCSI_CIR    (KN15AA_SYS_SCSI + 0x80000)
                    146: #define SCSI_CIR_AIOPAR                0x80000000 /* TC IO Address parity error */
                    147: #define SCSI_CIR_WDIOPAR       0x40000000 /* TC IO  write data parity error */
                    148: #define SCSI_CIR_DMARPAR1      0x20000000 /* SCSI[1] TC DMA read data parity */
                    149: #define SCSI_CIR_DMARPAR0      0x10000000 /* SCSI[0] TC DMA read data parity */
                    150: #define SCSI_CIR_DMABUFPAR1    0x08000000 /* SCSI[1] DMA buffer parity error */
                    151: #define SCSI_CIR_DMABUFPAR0    0x04000000 /* SCSI[0] DMA buffer parity error */
                    152: #define SCSI_CIR_DBPAR1                0x02000000 /* SCSI[1] DB parity error */
                    153: #define SCSI_CIR_DBPAR0                0x01000000 /* SCSI[0] DB parity error */
                    154: #define SCSI_CIR_DMAERR1       0x00800000 /* SCSI[1] DMA error */
                    155: #define SCSI_CIR_DMAERR0       0x00400000 /* SCSI[0] DMA error */
                    156: #if fmm50
                    157: #define SCSI_CIR_xxx0          0x00200000 /* RESERVED */
                    158: #define SCSI_CIR_xxx1          0x00100000 /* RESERVED */
                    159: #else
                    160: #define SCSI_CIR_PREF1         0x00200000 /* 53C94 prefetch interrupt */
                    161: #define SCSI_CIR_PREF0         0x00100000 /* 53C94 prefetch interrupt */
                    162: #endif
                    163: #define SCSI_CIR_53C94_INT1    0x00080000 /* SCSI[1] 53C94 Interrupt */
                    164: #define SCSI_CIR_53C94_INT0    0x00040000 /* SCSI[0] 53C94 Interrupt */
                    165: #define SCSI_CIR_53C94_DREQ1   0x00020000 /* SCSI[1] 53C94 DREQ */
                    166: #define SCSI_CIR_53C94_DREQ0   0x00010000 /* SCSI[0] 53C94 DREQ */
                    167: #define SCSI_CIR_TC_PAR_TEST   0x00008000 /* TC parity test mode */
                    168: #define SCSI_CIR_DB_PAR_TEST   0x00004000 /* DB parity test mode */
                    169: #define SCSI_CIR_DBUF_PAR_TEST1        0x00002000 /* SCSI[1] DMA buffer parity test */
                    170: #define SCSI_CIR_DBUF_PAR_TEST0        0x00001000 /* SCSI[0] DMA buffer parity test */
                    171: #define SCSI_CIR_RESET1                0x00000800 /* SCSI[1] ~Reset,enable(0)/disable(1) */
                    172: #define SCSI_CIR_RESET0                0x00000400 /* SCSI[0] ~Reset,enable(0)/disable(1) */
                    173: #define SCSI_CIR_DMAENA1       0x00000200 /* SCSI[1] DMA enable */
                    174: #define SCSI_CIR_DMAENA0       0x00000100 /* SCSI[1] DMA enable */
                    175: #define SCSI_CIR_GPI3          0x00000080 /* General purpose input <3> */
                    176: #define SCSI_CIR_GPI2          0x00000040 /* General purpose input <2> */
                    177: #define SCSI_CIR_GPI1          0x00000020 /* General purpose input <1> */
                    178: #define SCSI_CIR_GPI0          0x00000010 /* General purpose input <0> */
                    179: #define SCSI_CIR_TXDIS         0x00000008 /* TXDIS- serial transmit disable */
                    180: #define SCSI_CIR_GPO2          0x00000004 /* General purpose output <2> */
                    181: #define SCSI_CIR_GPO1          0x00000002 /* General purpose output <1> */
                    182: #define SCSI_CIR_GPO0          0x00000001 /* General purpose output <0> */
                    183: #define SCSI_CIR_ERROR (SCSI_CIR_AIOPAR | SCSI_CIR_WDIOPAR | SCSI_CIR_DMARPAR1 | SCSI_CIR_DMARPAR0 | SCSI_CIR_DMABUFPAR1 | SCSI_CIR_DMABUFPAR0 | SCSI_CIR_DBPAR1 |SCSI_CIR_DBPAR0 | SCSI_CIR_DMAERR1 | SCSI_CIR_DMAERR0 )
                    184:
                    185: #define KN15AA_REG_SCSI_DMAPTR0 (KN15AA_SYS_SCSI + 0x82000)
                    186: #define KN15AA_REG_SCSI_DMAPTR1 (KN15AA_SYS_SCSI + 0x82200)
                    187:
                    188: #define KN15AA_REG_SCSI_DIC0 (KN15AA_SYS_SCSI + 0x82008)
                    189: #define KN15AA_REG_SCSI_DIC1 (KN15AA_SYS_SCSI + 0x82208)
                    190: #define SCSI_DIC_DMADIR                0x00000080 /* DMA direction read(0)/write(1) */
                    191: #define SCSI_DIC_PREFENA       0x00000040 /* DMA read prefetch dis(0)/ena(1) */
                    192: #define SCSI_DIC_DMAADDR1      0x00000002 /* DMA address <1> */
                    193: #define SCSI_DIC_DMAADDR0      0x00000001 /* DMA address <0> */
                    194: #define SCSI_DIC_ADDR_MASK     (SCSI_DIC_DMAADDR0 |SCSI_DIC_DMAADDR1)
                    195:
                    196: #define KN15AA_REG_SCSI_94REG0 (KN15AA_SYS_SCSI + 0x100000)
                    197: #define KN15AA_REG_SCSI_94REG1 (KN15AA_SYS_SCSI + 0x100200)
                    198:
                    199: #define KN15AA_REG_SCSI_IMER   (KN15AA_SYS_SCSI + 0x80008)
                    200:
                    201: /* these are the bits that were unaligned at the beginning of the dma */
                    202: #define KN15AA_REG_SCSI_DUDB0  (KN15AA_SYS_SCSI + 0x82010)
                    203: #define KN15AA_REG_SCSI_DUDB1  (KN15AA_SYS_SCSI + 0x82210)
                    204: #      define SCSI_DUDB_MASK01 0x00000001 /* Mask bit for byte[01] */
                    205: #      define SCSI_DUDB_MASK10 0x00000002 /* Mask bit for byte[10] */
                    206: #      define SCSI_DUDB_MASK11 0x00000004 /* Mask bit for byte[11] */
                    207:
                    208: /* these are the bits that were unaligned at the end of the dma */
                    209: #define KN15AA_REG_SCSI_DUDE0  (KN15AA_SYS_SCSI + 0x82018)
                    210: #define KN15AA_REG_SCSI_DUDE1  (KN15AA_SYS_SCSI + 0x82218)
                    211: #      define SCSI_DUDE_MASK00 0x1000000 /* Mask bit for byte[00] */
                    212: #      define SCSI_DUDE_MASK01 0x2000000 /* Mask bit for byte[01] */
                    213: #      define SCSI_DUDE_MASK10 0x4000000 /* Mask bit for byte[10] */
                    214:
                    215: #define        SCSI_CIR        ALPHA_PHYS_TO_K0SEG(KN15AA_REG_SCSI_CIR)
                    216: #define        SCSI_IMER       ALPHA_PHYS_TO_K0SEG(KN15AA_REG_SCSI_IMER)
                    217:
                    218: #endif

CVSweb