1 /* $NetBSD: beccreg.h,v 1.2 2003/04/05 04:18:26 briggs Exp $ */ 2 3 /* 4 * Copyright (c) 2002 Wasabi Systems, Inc. 5 * All rights reserved. 6 * 7 * Written by Jason R. Thorpe for Wasabi Systems, Inc. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software developed for the NetBSD Project by 20 * Wasabi Systems, Inc. 21 * 4. The name of Wasabi Systems, Inc. may not be used to endorse 22 * or promote products derived from this software without specific prior 23 * written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND 26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 27 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC 29 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 * POSSIBILITY OF SUCH DAMAGE. 36 */ 37 38 #ifndef _BECCREG_H_ 39 #define _BECCREG_H_ 40 41 /* 42 * Register definitions for the ADI Engineering Big Endian Companion 43 * Chip for the Intel i80200. 44 */ 45 46 /* Revision codes */ 47 48 #define BECC_REV_V7 0x00 /* rev <= 7 */ 49 #define BECC_REV_V8 0x01 /* rev 8 */ 50 #define BECC_REV_V9 0x02 /* rev >= 9 */ 51 52 /* Memory Map */ 53 54 #define BECC_REG_BASE 0x04000000 55 #define BECC_REG_SIZE 0x01000000 /* 16M */ 56 57 #define BECC_PCI_CONF_BASE 0x08000000 58 #define BECC_PCI_CONF_SIZE 0x02000000 /* 32M */ 59 60 #define BECC_PCI_IO_BASE 0x0a000000 61 #define BECC_PCI_IO_SIZE 0x02000000 /* 32M */ 62 63 #define BECC_PCI_MEM1_BASE 0x0c000000 64 #define BECC_PCI_MEM1_SIZE 0x02000000 /* 32M */ 65 66 #define BECC_PCI_MEM2_BASE 0x0e000000 67 #define BECC_PCI_MEM2_SIZE 0x02000000 /* 32M */ 68 69 #define BECC_SDRAM_BASE 0xc0000000 70 71 /* Peripheral clock is 33.3MHz */ 72 #define BECC_PERIPH_CLOCK 33300000 73 74 /* BECC registers; offsets from BECC_REG_BASE */ 75 76 #define BECC_PSISR 0x0000 /* PCI slave interrupt status */ 77 #define PSISR_SERR (1U << 4) /* system error */ 78 #define PSISR_PERR (1U << 9) /* parity error */ 79 #define PSISR_IFU (1U << 16) /* inbound FIFO uflow */ 80 #define PSISR_IFO (1U << 17) /* inbound FIFO oflow */ 81 #define PSISR_OFU (1U << 18) /* outbound FIFO uflow */ 82 #define PSISR_OFO (1U << 19) /* outbound FIFO oflow */ 83 84 #define BECC_PSTR0 0x0010 /* PCI slave translation window #0 */ 85 #define BECC_PSTR1 0x0018 /* PCI slave translation window #1 */ 86 #define PSTRx_ADDRMASK (3U << 25) /* address mask */ 87 #define PSTRx_BEE (1U << 0) /* big-endian enable */ 88 #define BECC_PSTR2 0x0020 /* PCI slave translation window #2 */ 89 #define PSTR2_ADDRMASK (0U) /* address mask (all SDRAM) */ 90 91 #define BECC_PMISR 0x0100 /* PCI master interrupt status */ 92 #define PMISR_PE (1U << 0) /* parity error */ 93 #define PMISR_TA (1U << 2) /* target abort */ 94 #define PMISR_MA (1U << 3) /* master abort */ 95 #define PMISR_IFU (1U << 16) /* inbound FIFO uflow */ 96 #define PMISR_IFO (1U << 17) /* inbound FIFO oflow */ 97 #define PMISR_OFU (1U << 18) /* outbound FIFO uflow */ 98 #define PMISR_OFO (1U << 19) /* outbound FIFO oflow */ 99 100 #define BECC_IDSEL_BIT 11 /* first device on PCI bus */ 101 102 #define BECC_POMR1 0x0110 /* PCI outbound memory window #1 */ 103 #define BECC_POMR2 0x0114 /* PCI outbound memory window #2 */ 104 #define POMRx_ADDRMASK 0xfe000000 /* address mask */ 105 #define POMRx_BEE (1U << 2) /* big-endian enable */ 106 #define POMRx_F32 (1U << 3) /* force 32-bit transfer */ 107 #define POMRx_BO(x) (x) /* busrt order (MBZ) */ 108 #define BECC_POMR3 0x0130 /* PCI outbound memory window #3 */ 109 #define POMR3_ADDRMASK 0xc0000000 /* address mask */ 110 111 #define BECC_POIR 0x0118 /* PCI outbound I/O window */ 112 #define POIR_ADDRMASK 0xfe000000 /* address mask */ 113 #define POIR_BEE (1U << 2) /* big-endian enable */ 114 115 #define BECC_POCR 0x0120 /* PCI outbound config window */ 116 #define POCR_BEE (1U << 2) /* big-endian enable */ 117 #define POCR_TYPE (1U << 0) /* for type 1 cycles */ 118 119 #define BECC_DMACR 0x0200 /* DMA control register */ 120 #define DMACR_CE (1U << 0) /* channel enable */ 121 122 #define BECC_DMASR 0x0204 /* DMA status register */ 123 #define DMASR_PEF (1U << 0) /* PCI parity error */ 124 #define DMASR_PTA (1U << 2) /* PCI target abort */ 125 #define DMASR_PMA (1U << 3) /* PCI master abort */ 126 #define DMASR_EOTI (1U << 8) /* end of transfer interrupt */ 127 #define DMASR_CA (1U << 10) /* channel active */ 128 #define DMASR_IFU (1U << 16) /* inbound FIFO uflow */ 129 #define DMASR_IFO (1U << 17) /* inbound FIFO oflow */ 130 #define DMASR_OFU (1U << 18) /* outbound FIFO uflow */ 131 #define DMASR_OFO (1U << 19) /* outbound FIFO oflow */ 132 133 #define BECC_DMAPCIAR 0x0210 /* DMA PCI address */ 134 135 #define BECC_DMALAR 0x021c /* DMA local address */ 136 137 #define BECC_DMABCR 0x0220 /* DMA byte count */ 138 139 #define BECC_DMADCR 0x0224 /* DMA descriptor control */ 140 #define DMADCR_F32 (1U << 6) /* force 32-bit */ 141 #define DMADCR_BEE (1U << 5) /* big-endian enable */ 142 #define DMADCR_PCICMD(x) (x) /* PCI command */ 143 144 #define PCICMD_MR 0x6 /* memory read */ 145 #define PCICMD_MRL 0xe /* memory read line */ 146 #define PCICMD_MRM 0xc /* memory read multiple */ 147 #define PCICMD_MW 0x7 /* memory write */ 148 149 #define BECC_TSCRA 0x0300 /* Timer status/control A */ 150 #define BECC_TSCRB 0x0320 /* Timer status/control B */ 151 #define TSCRx_TE (1U << 0) /* timer enable */ 152 #define TSCRx_CM (1U << 1) /* continuous mode */ 153 #define TSCRx_TIF (1U << 9) /* timer interrupt flag */ 154 155 #define BECC_TPRA 0x0304 /* Timer preload A */ 156 #define BECC_TPRB 0x0324 /* Timer preload B */ 157 158 #define BECC_TCVRA 0x0308 /* Timer current value A */ 159 #define BECC_TCVRB 0x0328 /* Timer current value B */ 160 161 #define BECC_ICSR 0x0400 /* Interrupt control/status */ 162 #define BECC_ICMR 0x0404 /* Interrupt mask */ 163 #define BECC_ICSTR 0x0408 /* Interrupt steer */ 164 165 #define ICU_SOFT 0 /* software interrupt */ 166 #define ICU_TIMERA 1 /* timer A */ 167 #define ICU_TIMERB 2 /* timer B */ 168 #define ICU_DIAGERR 7 /* diagnostic error */ 169 #define ICU_DMA_EOT 8 /* DMA end-of-transfer */ 170 #define ICU_DMA_PEF 9 /* DMA parity error */ 171 #define ICU_DMA_TA 10 /* DMA target abort */ 172 #define ICU_DMA_MA 11 /* DMA master abort */ 173 #define ICU_PCI_PERR 16 /* PCI parity error */ 174 #define ICU_PCI_SERR 19 /* PCI system error */ 175 #define ICU_PCI_POAPEI 20 /* PCI outbound ATU parity error */ 176 #define ICU_PCI_POATAI 21 /* PCI outbound ATU target abort */ 177 #define ICU_PCI_POAMAI 22 /* PCI outbound ATU master abort */ 178 #define ICU_UARTA 24 /* UART A */ 179 #define ICU_UARTB 25 /* UART B */ 180 #define ICU_PCI_INTA 26 /* PCI INTA# */ 181 #define ICU_PCI_INTB 27 /* PCI INTB# */ 182 #define ICU_PCI_INTC 28 /* PCI INTC# */ 183 #define ICU_PCI_INTD 29 /* PCI INTD# */ 184 #define ICU_PUSHBUTTON 30 /* push button pulse */ 185 186 #define ICU_RESERVED_MASK ((1U << 3) | (1U << 4) | (1U << 5) | \ 187 (1U << 6) | (1U << 12) | (1U << 13) | \ 188 (1U << 14) | (1U << 15) | (1U << 17) | \ 189 (1U << 18) | (1U << 23) | (1U << 31)) 190 #define ICU_VALID_MASK (~ICU_RESERVED_MASK) 191 192 #define BECC_RSSR 0x0500 /* rotary switch status */ 193 #define RSSR_POS 0x0000000f /* switch position */ 194 #define RSSR_BE (1U << 6) /* big-endian jumper */ 195 196 #endif /* _BECCREG_H_ */ 197