Home | History | Annotate | Line # | Download | only in pci
btvmeireg.h revision 1.2
      1 /* $NetBSD: btvmeireg.h,v 1.2 2001/06/12 15:17:25 wiz Exp $ */
      2 
      3 #ifndef _bit3reg_h_
      4 #define _bit3reg_h_
      5 
      6 #ifdef _KERNEL
      7 
      8 #define BIT3_LSR_BITS "\20\1CABLE\2LRCERR\3ITO\6INTPR\7RBERR\10PARERR"
      9 
     10 /* following is from:
     11  **      Filename:   btpciio.h
     12  **
     13  **      Purpose:    Bit 3 400-809 PCI Applications Toolkit
     14  **                  Adaptor Node Register Include File.
     15  */
     16 
     17 /******************************************************************************
     18 **
     19 **      Mapping Register Defines
     20 **
     21 ******************************************************************************/
     22 
     23 #define MR_PCI_VME           0x0        /* PCI to VME Map RAM base offset       */
     24 #define MR_PCI_VME_SIZE      0x8000     /* PCI to VME Map RAM size (bytes)      */
     25 
     26 #define MR_VME_PCI           0x8000     /* VME to PCI Map RAM base offset       */
     27 #define MR_VME_PCI_SIZE      0x4000     /* VME to PCI Map RAM size (bytes)      */
     28 
     29 #define MR_DMA_PCI           0xC000     /* DMA to PCI Map RAM base offset       */
     30 #define MR_DMA_PCI_SIZE      0x4000     /* DMA to PCI Map RAM size (bytes)      */
     31 
     32 #define MR_BYTE_SWAP         (1<<3)     /* r/w, Byte swap bytes                 */
     33 #define MR_WORD_SWAP         (1<<2)     /* r/w, Swap words                      */
     34 #define MR_WBYTE_SWAP        (1<<1)     /* r/w, Byte Swap non-bytes             */
     35 #define MR_RAM_INVALID       (1<<0)     /* r/w, Map register is invalid         */
     36 
     37 #define MR_ADDR_MASK       0xFFFFF000UL /* Mask for map address bits A31-A12    */
     38 #define MR_REM_BUS_MASK    0x00000FFFUL /* Mask for remote address bits A11-A0  */
     39 
     40 #define MR_AMOD_MASK       0x00000FC0UL /* Mask for address modifier bits       */
     41                                         /* AM5-AM0 for register bits A11-A6     */
     42 #define MR_AMOD_SHIFT        6          /* Shift value for AMOD bits AM5-AM0    */
     43 
     44 #define MR_FC_MASK           0x30       /* Mask for Mapping RAM Function Codes  */
     45 #define MR_FC_RBIO           0x10       /* Remote Bus I/O Mapping function code */
     46 #define MR_FC_RRAM           0x20       /* Remote RAM Mapping function code     */
     47 #define MR_FC_DPRAM          0x30       /* Dual Port RAM Mapping function code  */
     48 
     49 
     50 
     51 /******************************************************************************
     52 **
     53 **      Local Adaptor Node Registers
     54 **
     55 *******************************************************************************
     56 **
     57 **      Local Command Register (Read/Write, 8 Bits)
     58 **
     59 *******************************************************************************
     60 **    7    |   6    |    5   |   4    |    3   |    2   |    1    |    0
     61 ** +C_STAT |+CLR_PR |+SND_PT |        |        |        |         |
     62 ******************************************************************************/
     63 
     64 #define LOC_CMD1             (0x00)                /* Local Command Register */
     65 
     66 #define LC1_CLR_ERROR        (1<<7)     /* w,   Clear status error bits (1 Shot) */
     67 #define LC1_CLR_PR_INT       (1<<6)     /* w,   Clear PR (PS) Interupt (1 Shot)  */
     68 #define LC1_SND_PT_INT       (1<<5)     /* r/w, Set PT Interupt                  */
     69 
     70 /******************************************************************************
     71 **
     72 **       Local Interrupt Control Register (Read/Write, 8 Bits)
     73 **
     74 *******************************************************************************
     75 **     7    |    6    |    5    |   4   |   3   |    2   |    1   |    0
     76 ** +INT_ACT | +INT_EN |+ERR_INT |   0   |   0   | +CINT2 | +CINT1 | +CINT0
     77 ******************************************************************************/
     78 
     79 #define LOC_INT_CTRL         (0x01)      /* Local Interrupt Control Register */
     80 
     81 #define LIC_INT_PENDING      (1<<7)     /* r  , Adaptor asserting INT on PCI bus */
     82 #define LIC_INT_ENABLE       (1<<6)     /* r/w, Normal (PR & CINT) INT Enable */
     83 #define LIC_ERR_INT_ENABLE   (1<<5)     /* r/w, Error Interupt Enable         */
     84 
     85 #define LIC_PT_CINT_SEL2     (1<<2)     /* r/w, PT CINT Line Selection Bit 2  */
     86 #define LIC_PT_CINT_SEL1     (1<<1)     /* r/w, PT CINT Line Selection Bit 1  */
     87 #define LIC_PT_CINT_SEL0     (1<<0)     /* r/w, PT CINT Line Selection Bit 0  */
     88 
     89 
     90 /******************************************************************************
     91 **
     92 **       Local Status Register (Read Only, 8 Bits)
     93 **
     94 *******************************************************************************
     95 **    7    |   6    |    5   |    4    |   3   |    2   |    1   |    0
     96 ** +PARITY |+REMBUS |+PR_INT |+CARD_RDY|   0   |+TIMEOUT|+LRC_ERR|+NOCONNECT
     97 ******************************************************************************/
     98 
     99 #define LOC_STATUS           (0x02)                 /* Local Status Register  */
    100 
    101 #define LSR_PARITY_ERR       (1<<7)     /* Interface Parity Error PCI->REM.   */
    102 #define LSR_REMBUS_ERR       (1<<6)     /* BERR from VME on PCI->REM. xfer    */
    103 #define LSR_PR_STATUS        (1<<5)     /* PR interrupt received from REMOTE  */
    104 #define LSR_TIMEOUT_ERR      (1<<2)     /* Interface Timeout error PCI->REM   */
    105 #define LSR_LRC_ERR          (1<<1)     /* LRC error (DMA master only)        */
    106 #define LSR_NO_CONNECT       (1<<0)     /* REM. bus power or I/O cable is off */
    107 
    108 #define LSR_ERROR_MASK  (LSR_PARITY_ERR|LSR_REMBUS_ERR|LSR_TIMEOUT_ERR|LSR_LRC_ERR)
    109 #define LSR_CERROR_MASK (LSR_NO_CONNECT|LSR_ERROR_MASK)
    110 
    111 
    112 /******************************************************************************
    113 **
    114 **       Local Interrupt Status Register (Read Only)
    115 **
    116 *******************************************************************************
    117 **    7   |   6    |    5   |    4   |    3   |    2   |    1   |    0
    118 ** +CINT7 | +CINT6 | +CINT5 | +CINT4 | +CINT3 | +CINT2 | +CINT1 | +CINT0
    119 ******************************************************************************/
    120 
    121 #define LOC_INT_STATUS       (0x03)       /* Local Interrupt Status Register */
    122 
    123 #define LIS_CINT7            (1<<7)     /* Cable Interrupt 7 - CINT7         */
    124 #define LIS_CINT6            (1<<6)     /* Cable Interrupt 6 - CINT6         */
    125 #define LIS_CINT5            (1<<5)     /* Cable Interrupt 5 - CINT5         */
    126 #define LIS_CINT4            (1<<4)     /* Cable Interrupt 4 - CINT4         */
    127 #define LIS_CINT3            (1<<3)     /* Cable Interrupt 3 - CINT3         */
    128 #define LIS_CINT2            (1<<2)     /* Cable Interrupt 2 - CINT2         */
    129 #define LIS_CINT1            (1<<1)     /* Cable Interrupt 1 - CINT1         */
    130 
    131 #define LIS_CINT_MASK (LIS_CINT1 | LIS_CINT2 | LIS_CINT3 | LIS_CINT4 | LIS_CINT5 | LIS_CINT6 | LIS_CINT7 )
    132 
    133 
    134 
    135 /******************************************************************************
    136 **
    137 **      Remote Adaptor Registers
    138 **
    139 *******************************************************************************
    140 **
    141 **      Remote Command Register 1 (Write Only, 8 Bits)
    142 **
    143 *******************************************************************************
    144 **    7    |   6    |    5    |   4    |    3   |    2   |    1   |    0  |
    145 ** +RESET  |+CLR_PT | +SND_PR |+LOCKBUS| +PGMODE| +IACK2 | +IACK1 | +IACK0|VME
    146 **    "    |   "    |    "    |   "    |    "   |+IOPGSEL|+PRMOD1 |+PRMOD0|Q-bus
    147 **    "    |   "    |    "    |   "    |    "   |+IOPGSEL|    0   |    0  |MBus1
    148 ******************************************************************************/
    149 
    150 #define REM_CMD1             (0x08)             /* Remote Command Register 1 */
    151 
    152 #define RC1_RESET_REM        (1<<7)     /* Reset remote bus - ONE SHOT       */
    153 #define RC1_CLR_PT_INT       (1<<6)     /* PT (PM) interrupt - FROM REMOTE   */
    154 #define RC1_SND_PR_INT       (1<<5)     /* PR (PS) interrupt - TO REMOTE     */
    155 #define RC1_LOCK_REM_BUS     (1<<4)     /* Lock remote bus - FOR RMW ONLY    */
    156 #define RC1_PG_SEL           (1<<3)     /* Enable page mode access           */
    157 
    158 #define RC1_INT_ACK_A3       (1<<2)     /* IACK Read Mode Address Bit 2      */
    159 #define RC1_INT_ACK_A2       (1<<1)     /* IACK Read Mode Address Bit 1      */
    160 #define RC1_INT_ACK_A1       (1<<0)     /* IACK Read Mode Address Bit 0      */
    161 
    162 #define RC1_IACK_MASK        (0x07)     /* IACK read level select mask       */
    163 
    164 
    165 /*****************************************************************************
    166 **
    167 **      Remote Status Register  (Read Only, 8 Bits)
    168 **
    169 ******************************************************************************
    170 **    7    |    6   |    5   |    4   |    3   |   2  |   1  |   0  |
    171 ** +RRESET | IACK_1 | +PRSET | +LKNSET| +PGREG |IACK_2|+PTSET|IACK_0|VME
    172 **    0    |    0   | +PRSET | +LKNSET| +PGMOD |   0  |+PTSET|   0  |A24,Q,MB1
    173 *****************************************************************************/
    174 
    175 #define REM_STATUS           (0x08)                /* Remote Status Register */
    176 
    177 #define RSR_PR_STATUS        (1<<5)     /* PR Interrupt is set               */
    178 #define RSR_NOT_LOCK_STATUS  (1<<4)     /* Remote bus is *NOT* locked        */
    179 #define RSR_PG_STATUS        (1<<3)     /* Page mode access is Enabled       */
    180 #define RSR_PT_STATUS        (1<<1)     /* PT interrupt is set               */
    181 
    182 /* The following bits apply to A32 VMEbus products ONLY */
    183 #define RSR_WAS_RESET        (1<<7)     /* Remote bus was reset              */
    184 #define RSR_IACK2            (1<<2)     /* IACK Read Mode Address Bit 2      */
    185 #define RSR_IACK1            (1<<6)     /* IACK Read Mode Address Bit 1      */
    186 #define RSR_IACK0            (1<<0)     /* IACK Read Mode Address Bit 0      */
    187 
    188 
    189 /******************************************************************************
    190 **
    191 **      Remote Command Register 2 (Read/Write, 8 Bits)
    192 **            THIS REGISTER DOES NOT APPLY TO A24 VMEbus
    193 **
    194 *******************************************************************************
    195 **      7    |     6     |     5    |     4    |   3   |   2   |   1   |   0
    196 ** +DMA_PAUS | +AMOD_SEL | +DMA_BLK | +INT_DIS | PGSZ3 | PGSZ2 | PGSZ1 | PGSZ0
    197 ******************************************************************************/
    198 
    199 #define REM_CMD2             (0x09)             /* Remote Command Register 2 */
    200 
    201 /* The following bits apply to A32 DMA VMEbus products only */
    202 #define RC2_DMA_PAUSE        (1<<7)     /* DMA remote pause after 16 xfers   */
    203 #define RC2_REM_AMOD_SEL     (1<<6)     /* Use remote address modifier  reg. */
    204 #define RC2_DMA_BLK_SEL      (1<<5)     /* Use remote block-mode DMA operatn */
    205 #define RC2_CINT_DISABLE     (1<<4)     /* Disable passing of rem cable intr */
    206 
    207 /* The following bits apply to all products */
    208 #define RC2_PG_SIZE_64K      (0x00)     /* 64K Page Size                     */
    209 #define RC2_PG_SIZE_128K     (0x01)     /* 128K Page Size                    */
    210 #define RC2_PG_SIZE_256K     (0x03)     /* 256K Page Size                    */
    211 #define RC2_PG_SIZE_512K     (0x07)     /* 512K Page Size                    */
    212 #define RC2_PG_SIZE_1MB      (0x0F)     /* 1M Page Size                      */
    213 
    214 #define RC2_PG_SIZE_MASK     (0x0F)     /* Page Size select mask             */
    215 
    216 
    217 /******************************************************************************
    218 **
    219 **      Remote Node Address Page Register (Read/Write, 16 Bits)
    220 **
    221 ******************************************************************************/
    222 
    223 #define REM_PAGE             (0x0A)          /* Remote Address Page Register */
    224 
    225 #define REM_PAGE_LO          (0x0A)     /* Address page byte - A16-A23       */
    226 
    227 /* The following define applies to A32 VMEbus products only */
    228 #define REM_PAGE_HI          (0x0B)     /* Address page byte - A24-A31       */
    229 
    230 #define MIN_PAGE_SHIFT       16         /* 64k is minimum size (shift value)   */
    231 #define MAX_PAGE_SHIFT       20         /* 1MB maximum page size (shift value) */
    232 
    233 #define QBUS_PG_MAX          (0x3F)     /* Needed for "bt_remid" to identify QBUS */
    234 
    235 
    236 /******************************************************************************
    237 **
    238 **      Remote Card ID Register (Read/Write, 8 Bits)
    239 **                              A32 Products Only
    240 **
    241 ******************************************************************************/
    242 
    243 #define REM_CARD_ID          (0x0C)               /* Remote Card ID Register */
    244 
    245 
    246 /******************************************************************************
    247 **
    248 **      Remote Address Modifier Register (Read/Write, 8 Bits)
    249 **                              VMEbus Products Only
    250 **
    251 ******************************************************************************/
    252 
    253 #define REM_AMOD             (0x0D)      /* Remote Address Modifier Register */
    254 
    255 
    256 /******************************************************************************
    257 **
    258 **      IACK Read Register (Read Only)
    259 **                             VMEbus & Q-bus Only
    260 **
    261 ******************************************************************************/
    262 
    263 #define REM_IACK             (0x0E)    /* IACK Read Register */
    264 
    265 #define REM_IACK_WORD        (0x0E)    /* IACK vector-D0-D7(word)             */
    266 #define REM_IACK_BYTE        (0x0F)    /* IACK vector-D0-D7(byte)D8-D15(word) */
    267 
    268 
    269 
    270 /******************************************************************************
    271 **
    272 **      DMA Registers
    273 **
    274 *******************************************************************************
    275 **
    276 **      Local DMA Command Register (Read/Write, 8 Bits)
    277 **
    278 *******************************************************************************
    279 **      7     |    6    |     5    |     4    |  3  |    2    |    1    |  0
    280 ** +LDC_START | +DP_SEL | +WRT_SEL | +D32_SEL |  0  | +INT_EN | +DMA_DN |  0
    281 ******************************************************************************/
    282 
    283 #define LDMA_CMD             (0x10)            /* Local DMA Command Register */
    284 
    285 #define LDC_START            (1<<7)    /* Start DMA                          */
    286 #define LDC_DP_SEL           (1<<6)    /* DMA to Dual-Port select            */
    287 #define LDC_WRITE_SEL        (1<<5)    /* DMA transfer direction             */
    288 #define LDC_DMA_D32_SEL      (1<<4)    /* DMA transfer size 16 / 32 bit data */
    289 #define LDC_DMA_INT_ENABLE   (1<<2)    /* DMA done interrupt enable          */
    290 #define LDC_DMA_DONE         (1<<1)    /* DMA done indicator flag            */
    291 #define LDC_DMA_ACTIVE       (1<<0)    /* DMA in progress indicator flag     */
    292 
    293 
    294 /******************************************************************************
    295 **
    296 **      Local DMA Remainder Count Register (Read/Write, 8 Bits)
    297 **
    298 ******************************************************************************/
    299 
    300 #define LDMA_RMD_CNT         (0x11)    /* Local DMA Remainder Count Register */
    301 
    302 
    303 /*******************************************************************************
    304 **
    305 **      Local DMA Packet Count Register (Read/Write, 16 Bits)
    306 **
    307 *******************************************************************************/
    308 
    309 #define LDMA_PKT_CNT         (0x12)       /* Local DMA Packet Count Register  */
    310 
    311 #define LDMA_PKT_CNT_LO      (0x12)       /* Packet Count Byte - D0-D7          */
    312 #define LDMA_PKT_CNT_HI      (0x13)       /* Packet Count Byte - D8-D15         */
    313 
    314 #define LDMA_MIN_DMA_PKT_SIZE 4UL         /* Minimum DMA Packet Size In Bytes   */
    315 #define LDMA_DMA_PKT_SIZE     8UL         /* Standard DMA Packet Size Shift Val */
    316 #define LDMA_MAX_XFER_LEN     0xFFFFFFL   /* Maximum DMA transfer Size In Bytes */
    317 
    318 
    319 /******************************************************************************
    320 **
    321 **      Local DMA Address Registers (Read/Write)
    322 **
    323 *******************************************************************************/
    324 #define LDMA_ADDR            (0x14)     /* Local DMA Address [indexes DMA map space] */
    325 
    326 #define LDMA_ADDR_LO         (0x14)     /* Local DMA Address Byte - D0-D7     */
    327 #define LDMA_ADDR_MID        (0x15)     /* Local DMA Address Byte - D8-D15    */
    328 #define LDMA_ADDR_HI         (0x16)     /* Local DMA Address Byte - D8-D15    */
    329 
    330 
    331 
    332 /******************************************************************************
    333 **
    334 **      Remote DMA Packet Length Count Register (Read/Write)
    335 **
    336 ******************************************************************************/
    337 #define RDMA_LEN_CNT         (0x18)            /* Remote DMA 1st packet size */
    338 
    339 
    340 /******************************************************************************
    341 **
    342 **      Remote DMA Address Register (Read/Write)
    343 **
    344 ******************************************************************************/
    345 #define RDMA_ADDR             (0x1A)                   /* Remote DMA Address */
    346 
    347 #define RDMA_ADDR_HI          (0x1A)   /* Remote DMA Address (A31-A16)       */
    348 #define RDMA_ADDR_LO          (0x1C)   /* Remote DMA Address (A15-A0)        */
    349 
    350 
    351 /******************************************************************************
    352 **
    353 **      Remote Slave Status Register (Read Only, 8 Bits)
    354 **
    355 *******************************************************************************
    356 **    7    |   6    |    5   |    4    |   3   |    2   |    1   |    0
    357 ** +PARITY |+REMBUS |+PR_INT |+CARD_RDY|   0   |+TIMEOUT|+LRC_ERR|+NOCONNECT
    358 ******************************************************************************/
    359 
    360 #define REM_SLAVE_STATUS     (0x1F)     /* Local Status of remote card */
    361 
    362 #define RSS_PARITY_ERR       (1<<7)     /* Interface Parity Error Remote->PCI */
    363 #define RSS_REMBUS_ERR       (1<<6)     /* Invalid mapping RAM access or a    */
    364                                         /*     data parity error occured      */
    365 #define RSS_PR_STATUS        (1<<5)     /* PR interrupt set on the VME card   */
    366 #define RSS_TIMEOUT_ERR      (1<<2)     /* Interface Timeout error on DMA xfer */
    367 #define RSS_PT_STATUS        (1<<1)     /* PT interrupt set on the VME card   */
    368 #define RSS_NO_CONNECT       (1<<0)     /* Rem. bus power / I/O cable is off  */
    369 
    370 #define RSS_ERROR_MASK       (RSS_PARITY_ERR|RSS_REMBUS_ERR|RSS_TIMEOUT_ERR)
    371 #define RSS_CERROR_MASK      (RSS_NO_CONNECT|RSS_ERROR_MASK)
    372 
    373 #endif /* KERNEL */
    374 
    375 #endif
    376