1 1.2 martin /* $NetBSD: vme_tworeg.h,v 1.2 2008/04/28 20:23:54 martin Exp $ */ 2 1.1 scw 3 1.1 scw /*- 4 1.1 scw * Copyright (c) 1999, 2002 The NetBSD Foundation, Inc. 5 1.1 scw * All rights reserved. 6 1.1 scw * 7 1.1 scw * This code is derived from software contributed to The NetBSD Foundation 8 1.1 scw * by Steve C. Woodford. 9 1.1 scw * 10 1.1 scw * Redistribution and use in source and binary forms, with or without 11 1.1 scw * modification, are permitted provided that the following conditions 12 1.1 scw * are met: 13 1.1 scw * 1. Redistributions of source code must retain the above copyright 14 1.1 scw * notice, this list of conditions and the following disclaimer. 15 1.1 scw * 2. Redistributions in binary form must reproduce the above copyright 16 1.1 scw * notice, this list of conditions and the following disclaimer in the 17 1.1 scw * documentation and/or other materials provided with the distribution. 18 1.1 scw * 19 1.1 scw * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 1.1 scw * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 1.1 scw * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 1.1 scw * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 1.1 scw * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 1.1 scw * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.1 scw * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.1 scw * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 1.1 scw * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.1 scw * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 1.1 scw * POSSIBILITY OF SUCH DAMAGE. 30 1.1 scw */ 31 1.1 scw 32 1.1 scw #ifndef _MVME_VME_TWOREG_H 33 1.1 scw #define _MVME_VME_TWOREG_H 34 1.1 scw 35 1.1 scw /* 36 1.1 scw * Where the VMEchip2's registers live relative to the start 37 1.1 scw * of the VMEChip2's register space. 38 1.1 scw */ 39 1.1 scw #define VME2REG_LCSR_OFFSET 0x0000 40 1.1 scw #define VME2REG_GCSR_OFFSET 0x0100 41 1.1 scw 42 1.1 scw 43 1.1 scw /* 44 1.1 scw * Register map of the Type 2 VMEchip found on many MVME boards. 45 1.1 scw * Note: Only responds to D32 accesses. 46 1.1 scw */ 47 1.1 scw 48 1.1 scw /* 49 1.1 scw * Slave window configuration registers 50 1.1 scw */ 51 1.1 scw #define VME2_SLAVE_WINDOWS 2 52 1.1 scw #define VME2LCSR_SLAVE_ADDRESS(x) (0x00 + ((x) * 4)) 53 1.1 scw #define VME2_SLAVE_ADDRESS_START_SHIFT 16 54 1.1 scw #define VME2_SLAVE_ADDRESS_START_MASK (0x0000ffffu) 55 1.1 scw #define VME2_SLAVE_ADDRESS_END_SHIFT 0 56 1.1 scw #define VME2_SLAVE_ADDRESS_END_MASK (0xffff0000u) 57 1.1 scw 58 1.1 scw #define VME2LCSR_SLAVE_TRANS(x) (0x08 + ((x) * 4)) 59 1.1 scw #define VME2_SLAVE_TRANS_SELECT_SHIFT 16 60 1.1 scw #define VME2_SLAVE_TRANS_SELECT_MASK (0x0000ffffu) 61 1.1 scw #define VME2_SLAVE_TRANS_ADDRESS_SHIFT 0 62 1.1 scw #define VME2_SLAVE_TRANS_ADDRESS_MASK (0xffff0000u) 63 1.1 scw 64 1.1 scw #define VME2LCSR_SLAVE_CTRL 0x10 65 1.1 scw #define VME2_SLAVE_AMSEL_DAT(x) (1u << (0 + ((x) * 16))) 66 1.1 scw #define VME2_SLAVE_AMSEL_PGM(x) (1u << (1 + ((x) * 16))) 67 1.1 scw #define VME2_SLAVE_AMSEL_BLK(x) (1u << (2 + ((x) * 16))) 68 1.1 scw #define VME2_SLAVE_AMSEL_BLKD64(x) (1u << (3 + ((x) * 16))) 69 1.1 scw #define VME2_SLAVE_AMSEL_A24(x) (1u << (4 + ((x) * 16))) 70 1.1 scw #define VME2_SLAVE_AMSEL_A32(x) (1u << (5 + ((x) * 16))) 71 1.1 scw #define VME2_SLAVE_AMSEL_USR(x) (1u << (6 + ((x) * 16))) 72 1.1 scw #define VME2_SLAVE_AMSEL_SUP(x) (1u << (7 + ((x) * 16))) 73 1.1 scw #define VME2_SLAVE_CTRL_WP(x) (1u << (8 + ((x) * 16))) 74 1.1 scw #define VME2_SLAVE_CTRL_SNOOP_INHIBIT(x) (0u << (9 + ((x) * 16))) 75 1.1 scw #define VME2_SLAVE_CTRL_SNOOP_WRSINK(x) (1u << (9 + ((x) * 16))) 76 1.1 scw #define VME2_SLAVE_CTRL_SNOOP_WRINVAL(x) (2u << (9 + ((x) * 16))) 77 1.1 scw #define VME2_SLAVE_CTRL_ADDER(x) (1u << (11 + ((x) * 16))) 78 1.1 scw 79 1.1 scw /* 80 1.1 scw * Master window address control registers 81 1.1 scw */ 82 1.1 scw #define VME2_MASTER_WINDOWS 4 83 1.1 scw #define VME2LCSR_MASTER_ADDRESS(x) (0x14 + ((x) * 4)) 84 1.1 scw #define VME2_MAST_ADDRESS_START_SHIFT 16 85 1.1 scw #define VME2_MAST_ADDRESS_START_MASK (0x0000ffffu) 86 1.1 scw #define VME2_MAST_ADDRESS_END_SHIFT 0 87 1.1 scw #define VME2_MAST_ADDRESS_END_MASK (0xffff0000u) 88 1.1 scw 89 1.1 scw #define VME2LCSR_MAST4_TRANS 0x24 90 1.1 scw #define VME2_MAST4_TRANS_SELECT_SHIFT 16 91 1.1 scw #define VME2_MAST4_TRANS_SELECT_MASK (0x0000ffffu) 92 1.1 scw #define VME2_MAST4_TRANS_ADDRESS_SHIFT 0 93 1.1 scw #define VME2_MAST4_TRANS_ADDRESS_MASK (0xffff0000u) 94 1.1 scw 95 1.1 scw /* 96 1.1 scw * VMEbus master attribute control register 97 1.1 scw */ 98 1.1 scw #define VME2LCSR_MASTER_ATTR 0x28 99 1.1 scw #define VME2_MASTER_ATTR_AM_SHIFT(x) ((x) * 8) 100 1.1 scw #define VME2_MASTER_ATTR_AM_MASK (0x0000003fu) 101 1.1 scw #define VME2_MASTER_ATTR_WP (1u << 6) 102 1.1 scw #define VME2_MASTER_ATTR_D16 (1u << 7) 103 1.1 scw 104 1.1 scw /* 105 1.1 scw * GCSR Group/Board addresses, and 106 1.1 scw * VMEbus Master Enable Control register, and 107 1.1 scw * Local to VMEbus I/O Control register, and 108 1.1 scw * ROM Control register (unused). 109 1.1 scw */ 110 1.1 scw #define VME2LCSR_GCSR_ADDRESS 0x2c 111 1.1 scw #define VME2_GCSR_ADDRESS_SHIFT 16 112 1.1 scw #define VME2_GCSR_ADDRESS_MASK (0xfff00000u) 113 1.1 scw 114 1.1 scw #define VME2LCSR_MASTER_ENABLE 0x2c 115 1.1 scw #define VME2_MASTER_ENABLE_MASK (0x000f0000u) 116 1.1 scw #define VME2_MASTER_ENABLE(x) (1u << ((x) + 16)) 117 1.1 scw 118 1.1 scw #define VME2LCSR_IO_CONTROL 0x2c 119 1.1 scw #define VME2_IO_CONTROL_SHIFT 8 120 1.1 scw #define VME2_IO_CONTROL_MASK (0x0000ff00u) 121 1.1 scw #define VME2_IO_CONTROL_I1SU (1u << 8) 122 1.1 scw #define VME2_IO_CONTROL_I1WP (1u << 9) 123 1.1 scw #define VME2_IO_CONTROL_I1D16 (1u << 10) 124 1.1 scw #define VME2_IO_CONTROL_I1EN (1u << 11) 125 1.1 scw #define VME2_IO_CONTROL_I2PD (1u << 12) 126 1.1 scw #define VME2_IO_CONTROL_I2SU (1u << 13) 127 1.1 scw #define VME2_IO_CONTROL_I2WP (1u << 14) 128 1.1 scw #define VME2_IO_CONTROL_I2EN (1u << 15) 129 1.1 scw 130 1.1 scw /* 131 1.1 scw * VMEChip2 PROM Decoder, SRAM and DMA Control register 132 1.1 scw */ 133 1.1 scw #define VME2LCSR_PROM_SRAM_DMA_CTRL 0x30 134 1.1 scw #define VME2_PSD_SRAMS_MASK (0x00ff0000u) 135 1.1 scw #define VME2_PSD_SRAMS_CLKS6 (0u << 16) 136 1.1 scw #define VME2_PSD_SRAMS_CLKS5 (1u << 16) 137 1.1 scw #define VME2_PSD_SRAMS_CLKS4 (2u << 16) 138 1.1 scw #define VME2_PSD_SRAMS_CLKS3 (3u << 16) 139 1.1 scw #define VME2_PSD_TBLSC_INHIB (0u << 18) 140 1.1 scw #define VME2_PSD_TBLSC_WRSINK (1u << 18) 141 1.1 scw #define VME2_PSD_TBLSC_WRINV (2u << 18) 142 1.1 scw #define VME2_PSD_ROM0 (1u << 20) 143 1.1 scw #define VME2_PSD_WAITRMW (1u << 21) 144 1.1 scw 145 1.1 scw /* 146 1.1 scw * VMEbus requester control register 147 1.1 scw */ 148 1.1 scw #define VME2LCSR_VME_REQUESTER_CONTROL 0x30 149 1.1 scw #define VME2_VMEREQ_CTRL_MASK (0x0000ff00u) 150 1.1 scw #define VME2_VMEREQ_CTRL_LVREQL_MASK (0x00000300u) 151 1.1 scw #define VME2_VMEREQ_CTRL_LVREQL(x) ((u_int)(x) << 8) 152 1.1 scw #define VME2_VMEREQ_CTRL_LVRWD (1u << 10) 153 1.1 scw #define VME2_VMEREQ_CTRL_LVFAIR (1u << 11) 154 1.1 scw #define VME2_VMEREQ_CTRL_DWB (1u << 13) 155 1.1 scw #define VME2_VMEREQ_CTRL_DHB (1u << 14) 156 1.1 scw #define VME2_VMEREQ_CTRL_ROBN (1u << 15) 157 1.1 scw 158 1.1 scw /* 159 1.1 scw * DMAC control register 160 1.1 scw */ 161 1.1 scw #define VME2LCSR_DMAC_CONTROL1 0x30 162 1.1 scw #define VME2_DMAC_CTRL1_MASK (0x000000ffu) 163 1.1 scw #define VME2_DMAC_CTRL1_DREQL_MASK (0x00000003u) 164 1.1 scw #define VME2_DMAC_CTRL1_DREQL(x) ((u_int)(x) << 0) 165 1.1 scw #define VME2_DMAC_CTRL1_DRELM_MASK (0x0000000cu) 166 1.1 scw #define VME2_DMAC_CTRL1_DRELM(x) ((u_int)(x) << 2) 167 1.1 scw #define VME2_DMAC_CTRL1_DFAIR (1u << 4) 168 1.1 scw #define VME2_DMAC_CTRL1_DTBL (1u << 5) 169 1.1 scw #define VME2_DMAC_CTRL1_DEN (1u << 6) 170 1.1 scw #define VME2_DMAC_CTRL1_DHALT (1u << 7) 171 1.1 scw 172 1.1 scw /* 173 1.1 scw * DMA Control register #2 174 1.1 scw */ 175 1.1 scw #define VME2LCSR_DMAC_CONTROL2 0x34 176 1.1 scw #define VME2_DMAC_CTRL2_MASK (0x0000ffffu) 177 1.1 scw #define VME2_DMAC_CTRL2_SHIFT 0 178 1.1 scw #define VME2_DMAC_CTRL2_AM_MASK (0x0000003fu) 179 1.1 scw #define VME2_DMAC_CTRL2_BLK_D32 (1u << 6) 180 1.1 scw #define VME2_DMAC_CTRL2_BLK_D64 (3u << 6) 181 1.1 scw #define VME2_DMAC_CTRL2_D16 (1u << 8) 182 1.1 scw #define VME2_DMAC_CTRL2_TVME (1u << 9) 183 1.1 scw #define VME2_DMAC_CTRL2_LINC (1u << 10) 184 1.1 scw #define VME2_DMAC_CTRL2_VINC (1u << 11) 185 1.1 scw #define VME2_DMAC_CTRL2_SNOOP_INHIB (0u << 13) 186 1.1 scw #define VME2_DMAC_CTRL2_SNOOP_WRSNK (1u << 13) 187 1.1 scw #define VME2_DMAC_CTRL2_SNOOP_WRINV (2u << 13) 188 1.1 scw #define VME2_DMAC_CTRL2_INTE (1u << 15) 189 1.1 scw 190 1.1 scw /* 191 1.1 scw * DMA Controller Local Bus and VMEbus Addresses, Byte 192 1.1 scw * Counter and Table Address Counter registers 193 1.1 scw */ 194 1.1 scw #define VME2LCSR_DMAC_LOCAL_ADDRESS 0x38 195 1.1 scw #define VME2LCSR_DMAC_VME_ADDRESS 0x3c 196 1.1 scw #define VME2LCSR_DMAC_BYTE_COUNTER 0x40 197 1.1 scw #define VME2LCSR_DMAC_TABLE_ADDRESS 0x44 198 1.1 scw 199 1.1 scw /* 200 1.1 scw * VMEbus Interrupter Control register 201 1.1 scw */ 202 1.1 scw #define VME2LCSR_INTERRUPT_CONTROL 0x48 203 1.1 scw #define VME2_INT_CTRL_MASK (0xff000000u) 204 1.1 scw #define VME2_INT_CTRL_SHIFT 24 205 1.1 scw #define VME2_INT_CTRL_IRQL_MASK (0x07000000u) 206 1.1 scw #define VME2_INT_CTRL_IRQS (1u << 27) 207 1.1 scw #define VME2_INT_CTRL_IRQC (1u << 28) 208 1.1 scw #define VME2_INT_CTRL_IRQ1S_INT (0u << 29) 209 1.1 scw #define VME2_INT_CTRL_IRQ1S_TICK1 (1u << 29) 210 1.1 scw #define VME2_INT_CTRL_IRQ1S_TICK2 (3u << 29) 211 1.1 scw 212 1.1 scw /* 213 1.1 scw * VMEbus Interrupt Vector register 214 1.1 scw */ 215 1.1 scw #define VME2LCSR_INTERRUPT_VECTOR 0x48 216 1.1 scw #define VME2_INTERRUPT_VECTOR_MASK (0x00ff0000u) 217 1.1 scw #define VME2_INTERRUPT_VECTOR_SHIFT 16 218 1.1 scw 219 1.1 scw /* 220 1.1 scw * MPU Status register 221 1.1 scw */ 222 1.1 scw #define VME2LCSR_MPU_STATUS 0x48 223 1.1 scw #define VME2_MPU_STATUS_MLOB (1u << 0) 224 1.1 scw #define VME2_MPU_STATUS_MLPE (1u << 1) 225 1.1 scw #define VME2_MPU_STATUS_MLBE (1u << 2) 226 1.1 scw #define VME2_MPU_STATUS_MCLR (1u << 3) 227 1.1 scw 228 1.1 scw /* 229 1.1 scw * DMA Interrupt Count register 230 1.1 scw */ 231 1.1 scw #define VME2LCSR_DMAC_INTERRUPT_CONTROL 0x48 232 1.1 scw #define VME2_DMAC_INT_COUNT_MASK (0x0000f000u) 233 1.1 scw #define VME2_DMAC_INT_COUNT_SHIFT 12 234 1.1 scw 235 1.1 scw /* 236 1.1 scw * DMA Controller Status register 237 1.1 scw */ 238 1.1 scw #define VME2LCSR_DMAC_STATUS 0x48 239 1.1 scw #define VME2_DMAC_STATUS_DONE (1u << 0) 240 1.1 scw #define VME2_DMAC_STATUS_VME (1u << 1) 241 1.1 scw #define VME2_DMAC_STATUS_TBL (1u << 2) 242 1.1 scw #define VME2_DMAC_STATUS_DLTO (1u << 3) 243 1.1 scw #define VME2_DMAC_STATUS_DLOB (1u << 4) 244 1.1 scw #define VME2_DMAC_STATUS_DLPE (1u << 5) 245 1.1 scw #define VME2_DMAC_STATUS_DLBE (1u << 6) 246 1.1 scw #define VME2_DMAC_STATUS_MLTO (1u << 7) 247 1.1 scw 248 1.1 scw 249 1.1 scw /* 250 1.1 scw * VMEbus Arbiter Time-out register 251 1.1 scw */ 252 1.1 scw #define VME2LCSR_VME_ARB_TIMEOUT 0x4c 253 1.1 scw #define VME2_VME_ARB_TIMEOUT_ENAB (1u << 24) 254 1.1 scw 255 1.1 scw /* 256 1.1 scw * DMA Controller Timers and VMEbus Global Time-out Control registers 257 1.1 scw */ 258 1.1 scw #define VME2LCSR_DMAC_TIME_ONOFF 0x4c 259 1.1 scw #define VME2_DMAC_TIME_ON_MASK (0x001c0000u) 260 1.1 scw #define VME2_DMAC_TIME_ON_16US (0u << 18) 261 1.1 scw #define VME2_DMAC_TIME_ON_32US (1u << 18) 262 1.1 scw #define VME2_DMAC_TIME_ON_64US (2u << 18) 263 1.1 scw #define VME2_DMAC_TIME_ON_128US (3u << 18) 264 1.1 scw #define VME2_DMAC_TIME_ON_256US (4u << 18) 265 1.1 scw #define VME2_DMAC_TIME_ON_512US (5u << 18) 266 1.1 scw #define VME2_DMAC_TIME_ON_1024US (6u << 18) 267 1.1 scw #define VME2_DMAC_TIME_ON_DONE (7u << 18) 268 1.1 scw #define VME2_DMAC_TIME_OFF_MASK (0x00e00000u) 269 1.1 scw #define VME2_DMAC_TIME_OFF_0US (0u << 21) 270 1.1 scw #define VME2_DMAC_TIME_OFF_16US (1u << 21) 271 1.1 scw #define VME2_DMAC_TIME_OFF_32US (2u << 21) 272 1.1 scw #define VME2_DMAC_TIME_OFF_64US (3u << 21) 273 1.1 scw #define VME2_DMAC_TIME_OFF_128US (4u << 21) 274 1.1 scw #define VME2_DMAC_TIME_OFF_256US (5u << 21) 275 1.1 scw #define VME2_DMAC_TIME_OFF_512US (6u << 21) 276 1.1 scw #define VME2_DMAC_TIME_OFF_1024US (7u << 21) 277 1.1 scw #define VME2_VME_GLOBAL_TO_MASK (0x00030000u) 278 1.1 scw #define VME2_VME_GLOBAL_TO_8US (0u << 16) 279 1.1 scw #define VME2_VME_GLOBAL_TO_16US (1u << 16) 280 1.1 scw #define VME2_VME_GLOBAL_TO_256US (2u << 16) 281 1.1 scw #define VME2_VME_GLOBAL_TO_DISABLE (3u << 16) 282 1.1 scw 283 1.1 scw /* 284 1.1 scw * VME Access, Local Bus and Watchdog Time-out Control register 285 1.1 scw */ 286 1.1 scw #define VME2LCSR_VME_ACCESS_TIMEOUT 0x4c 287 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_MASK (0x0000c000u) 288 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_64US (0u << 14) 289 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_1MS (1u << 14) 290 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_32MS (2u << 14) 291 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_DISABLE (3u << 14) 292 1.1 scw 293 1.1 scw #define VME2LCSR_LOCAL_BUS_TIMEOUT 0x4c 294 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_MASK (0x00003000u) 295 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_64US (0u << 12) 296 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_1MS (1u << 12) 297 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_32MS (2u << 12) 298 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_DISABLE (3u << 12) 299 1.1 scw 300 1.1 scw #define VME2LCSR_WATCHDOG_TIMEOUT 0x4c 301 1.1 scw #define VME2_WATCHDOG_TIMEOUT_MASK (0x00000f00u) 302 1.1 scw #define VME2_WATCHDOG_TIMEOUT_512US (0u << 8) 303 1.1 scw #define VME2_WATCHDOG_TIMEOUT_1MS (1u << 8) 304 1.1 scw #define VME2_WATCHDOG_TIMEOUT_2MS (2u << 8) 305 1.1 scw #define VME2_WATCHDOG_TIMEOUT_4MS (3u << 8) 306 1.1 scw #define VME2_WATCHDOG_TIMEOUT_8MS (4u << 8) 307 1.1 scw #define VME2_WATCHDOG_TIMEOUT_16MS (5u << 8) 308 1.1 scw #define VME2_WATCHDOG_TIMEOUT_32MS (6u << 8) 309 1.1 scw #define VME2_WATCHDOG_TIMEOUT_64MS (7u << 8) 310 1.1 scw #define VME2_WATCHDOG_TIMEOUT_128MS (8u << 8) 311 1.1 scw #define VME2_WATCHDOG_TIMEOUT_256MS (9u << 8) 312 1.1 scw #define VME2_WATCHDOG_TIMEOUT_512MS (10u << 8) 313 1.1 scw #define VME2_WATCHDOG_TIMEOUT_1S (11u << 8) 314 1.1 scw #define VME2_WATCHDOG_TIMEOUT_4S (12u << 8) 315 1.1 scw #define VME2_WATCHDOG_TIMEOUT_16S (13u << 8) 316 1.1 scw #define VME2_WATCHDOG_TIMEOUT_32S (14u << 8) 317 1.1 scw #define VME2_WATCHDOG_TIMEOUT_64S (15u << 8) 318 1.1 scw 319 1.1 scw /* 320 1.1 scw * Prescaler Control register 321 1.1 scw */ 322 1.1 scw #define VME2LCSR_PRESCALER_CONTROL 0x4c 323 1.1 scw #define VME2_PRESCALER_MASK (0x000000ffu) 324 1.1 scw #define VME2_PRESCALER_SHIFT 0 325 1.1 scw #define VME2_PRESCALER_CTRL(c) (256 - (c)) 326 1.1 scw 327 1.1 scw /* 328 1.1 scw * Tick Timer registers 329 1.1 scw */ 330 1.1 scw #define VME2LCSR_TIMER_COMPARE(x) (0x50 + ((x) * 8)) 331 1.1 scw #define VME2LCSR_TIMER_COUNTER(x) (0x54 + ((x) * 8)) 332 1.1 scw 333 1.1 scw 334 1.1 scw /* 335 1.1 scw * Board Control register 336 1.1 scw */ 337 1.1 scw #define VME2LCSR_BOARD_CONTROL 0x60 338 1.1 scw #define VME2_BOARD_CONTROL_RSWE (1u << 24) 339 1.1 scw #define VME2_BOARD_CONTROL_BDFLO (1u << 25) 340 1.1 scw #define VME2_BOARD_CONTROL_CPURS (1u << 26) 341 1.1 scw #define VME2_BOARD_CONTROL_PURS (1u << 27) 342 1.1 scw #define VME2_BOARD_CONTROL_BRFLI (1u << 28) 343 1.1 scw #define VME2_BOARD_CONTROL_SFFL (1u << 29) 344 1.1 scw #define VME2_BOARD_CONTROL_SCON (1u << 30) 345 1.1 scw 346 1.1 scw /* 347 1.1 scw * Watchdog Timer Control register 348 1.1 scw */ 349 1.1 scw #define VME2LCSR_WATCHDOG_TIMER_CONTROL 0x60 350 1.1 scw #define VME2_WATCHDOG_TCONTROL_WDEN (1u << 16) 351 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDRSE (1u << 17) 352 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDSL (1u << 18) 353 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDBFE (1u << 19) 354 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDTO (1u << 20) 355 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDCC (1u << 21) 356 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDCS (1u << 22) 357 1.1 scw #define VME2_WATCHDOG_TCONTTRL_SRST (1u << 23) 358 1.1 scw 359 1.1 scw /* 360 1.1 scw * Tick Timer Control registers 361 1.1 scw */ 362 1.1 scw #define VME2LCSR_TIMER_CONTROL 0x60 363 1.1 scw #define VME2_TIMER_CONTROL_EN(x) (1u << (0 + ((x) * 8))) 364 1.1 scw #define VME2_TIMER_CONTROL_COC(x) (1u << (1 + ((x) * 8))) 365 1.1 scw #define VME2_TIMER_CONTROL_COF(x) (1u << (2 + ((x) * 8))) 366 1.1 scw #define VME2_TIMER_CONTROL_OVF_SHIFT(x) (4 + ((x) * 8)) 367 1.1 scw #define VME2_TIMER_CONTROL_OVF_MASK(x) (0x000000f0u << (4 + ((x) * 8))) 368 1.1 scw 369 1.1 scw /* 370 1.1 scw * Prescaler Counter register 371 1.1 scw */ 372 1.1 scw #define VME2LCSR_PRESCALER_COUNTER 0x64 373 1.1 scw 374 1.1 scw /* 375 1.1 scw * Local Bus Interrupter Status/Enable/Clear registers 376 1.1 scw */ 377 1.1 scw #define VME2LCSR_LOCAL_INTERRUPT_STATUS 0x68 378 1.1 scw #define VME2LCSR_LOCAL_INTERRUPT_ENABLE 0x6c 379 1.1 scw #define VME2LCSR_LOCAL_INTERRUPT_CLEAR 0x74 380 1.1 scw #define VME2_LOCAL_INTERRUPT(x) (1u << (x)) 381 1.1 scw #define VME2_LOCAL_INTERRUPT_VME(x) (1u << ((x) - 1)) 382 1.1 scw #define VME2_LOCAL_INTERRUPT_SWINT(x) (1u << ((x) + 8)) 383 1.1 scw #define VME2_LOCAL_INTERRUPT_LM(x) (1u << ((x) + 16)) 384 1.1 scw #define VME2_LOCAL_INTERRUPT_SIG(x) (1u << ((x) + 18)) 385 1.1 scw #define VME2_LOCAL_INTERRUPT_DMAC (1u << 22) 386 1.1 scw #define VME2_LOCAL_INTERRUPT_VIA (1u << 23) 387 1.1 scw #define VME2_LOCAL_INTERRUPT_TIC(x) (1u << ((x) + 24)) 388 1.1 scw #define VME2_LOCAL_INTERRUPT_VI1E (1u << 26) 389 1.1 scw #define VME2_LOCAL_INTERRUPT_PE (1u << 27) 390 1.1 scw #define VME2_LOCAL_INTERRUPT_MWP (1u << 28) 391 1.1 scw #define VME2_LOCAL_INTERRUPT_SYSF (1u << 29) 392 1.1 scw #define VME2_LOCAL_INTERRUPT_ABORT (1u << 30) 393 1.1 scw #define VME2_LOCAL_INTERRUPT_ACFAIL (1u << 31) 394 1.1 scw #define VME2_LOCAL_INTERRUPT_CLEAR_ALL (0xffffff00u) 395 1.1 scw 396 1.1 scw /* 397 1.1 scw * Software Interrupt Set register 398 1.1 scw */ 399 1.1 scw #define VME2LCSR_SOFTINT_SET 0x70 400 1.1 scw #define VME2_SOFTINT_SET(x) (1u << ((x) + 8)) 401 1.1 scw 402 1.1 scw /* 403 1.1 scw * Interrupt Level registers 404 1.1 scw */ 405 1.1 scw #define VME2LCSR_INTERRUPT_LEVEL_BASE 0x78 406 1.1 scw #define VME2_NUM_IL_REGS 4 407 1.1 scw #define VME2_ILOFFSET_FROM_VECTOR(v) (((((VME2_NUM_IL_REGS*8)-1)-(v))/8)<<2) 408 1.1 scw #define VME2_ILSHIFT_FROM_VECTOR(v) (((v) & 7) * 4) 409 1.1 scw #define VME2_INTERRUPT_LEVEL_MASK (0x0fu) 410 1.1 scw 411 1.1 scw /* 412 1.1 scw * Vector Base register 413 1.1 scw */ 414 1.1 scw #define VME2LCSR_VECTOR_BASE 0x88 415 1.1 scw #define VME2_VECTOR_BASE_MASK (0xff000000u) 416 1.1 scw #define VME2_VECTOR_BASE_REG_VALUE (0x76000000u) 417 1.1 scw #define VME2_VECTOR_BASE (0x60u) 418 1.1 scw #define VME2_VECTOR_LOCAL_OFFSET (0x08u) 419 1.1 scw #define VME2_VECTOR_LOCAL_MIN (VME2_VECTOR_BASE + 0x08u) 420 1.1 scw #define VME2_VECTOR_LOCAL_MAX (VME2_VECTOR_BASE + 0x1fu) 421 1.1 scw #define VME2_VEC_SOFT0 (VME2_VECTOR_BASE + 0x08u) 422 1.1 scw #define VME2_VEC_SOFT1 (VME2_VECTOR_BASE + 0x09u) 423 1.1 scw #define VME2_VEC_SOFT2 (VME2_VECTOR_BASE + 0x0au) 424 1.1 scw #define VME2_VEC_SOFT3 (VME2_VECTOR_BASE + 0x0bu) 425 1.1 scw #define VME2_VEC_SOFT4 (VME2_VECTOR_BASE + 0x0cu) 426 1.1 scw #define VME2_VEC_SOFT5 (VME2_VECTOR_BASE + 0x0du) 427 1.1 scw #define VME2_VEC_SOFT6 (VME2_VECTOR_BASE + 0x0eu) 428 1.1 scw #define VME2_VEC_SOFT7 (VME2_VECTOR_BASE + 0x0fu) 429 1.1 scw #define VME2_VEC_GCSRLM0 (VME2_VECTOR_BASE + 0x10u) 430 1.1 scw #define VME2_VEC_GCSRLM1 (VME2_VECTOR_BASE + 0x11u) 431 1.1 scw #define VME2_VEC_GCSRSIG0 (VME2_VECTOR_BASE + 0x12u) 432 1.1 scw #define VME2_VEC_GCSRSIG1 (VME2_VECTOR_BASE + 0x13u) 433 1.1 scw #define VME2_VEC_GCSRSIG2 (VME2_VECTOR_BASE + 0x14u) 434 1.1 scw #define VME2_VEC_GCSRSIG3 (VME2_VECTOR_BASE + 0x15u) 435 1.1 scw #define VME2_VEC_DMAC (VME2_VECTOR_BASE + 0x16u) 436 1.1 scw #define VME2_VEC_VIA (VME2_VECTOR_BASE + 0x17u) 437 1.1 scw #define VME2_VEC_TT1 (VME2_VECTOR_BASE + 0x18u) 438 1.1 scw #define VME2_VEC_TT2 (VME2_VECTOR_BASE + 0x19u) 439 1.1 scw #define VME2_VEC_IRQ1 (VME2_VECTOR_BASE + 0x1au) 440 1.1 scw #define VME2_VEC_PARITY_ERROR (VME2_VECTOR_BASE + 0x1bu) 441 1.1 scw #define VME2_VEC_MWP_ERROR (VME2_VECTOR_BASE + 0x1cu) 442 1.1 scw #define VME2_VEC_SYSFAIL (VME2_VECTOR_BASE + 0x1du) 443 1.1 scw #define VME2_VEC_ABORT (VME2_VECTOR_BASE + 0x1eu) 444 1.1 scw #define VME2_VEC_ACFAIL (VME2_VECTOR_BASE + 0x1fu) 445 1.1 scw 446 1.1 scw /* 447 1.1 scw * I/O Control register #1 448 1.1 scw */ 449 1.1 scw #define VME2LCSR_GPIO_DIRECTION 0x88 450 1.1 scw #define VME2_GPIO_DIRECTION_OUT(x) (1u << ((x) + 16)) 451 1.1 scw 452 1.1 scw /* 453 1.1 scw * Misc. Status register 454 1.1 scw */ 455 1.1 scw #define VME2LCSR_MISC_STATUS 0x88 456 1.1 scw #define VME2_MISC_STATUS_ABRTL (1u << 20) 457 1.1 scw #define VME2_MISC_STATUS_ACFL (1u << 21) 458 1.1 scw #define VME2_MISC_STATUS_SYSFL (1u << 22) 459 1.1 scw #define VME2_MISC_STATUS_MIEN (1u << 23) 460 1.1 scw 461 1.1 scw /* 462 1.1 scw * GPIO Status register 463 1.1 scw */ 464 1.1 scw #define VME2LCSR_GPIO_STATUS 0x88 465 1.1 scw #define VME2_GPIO_STATUS(x) (1u << ((x) + 8)) 466 1.1 scw 467 1.1 scw /* 468 1.1 scw * GPIO Control register #2 469 1.1 scw */ 470 1.1 scw #define VME2LCSR_GPIO_CONTROL 0x88 471 1.1 scw #define VME2_GPIO_CONTROL_SET(x) (1u << ((x) + 12)) 472 1.1 scw 473 1.1 scw /* 474 1.1 scw * General purpose input registers 475 1.1 scw */ 476 1.1 scw #define VME2LCSR_GP_INPUTS 0x88 477 1.1 scw #define VME2_GP_INPUT(x) (1u << (x)) 478 1.1 scw 479 1.1 scw /* 480 1.1 scw * Miscellaneous Control register 481 1.1 scw */ 482 1.1 scw #define VME2LCSR_MISC_CONTROL 0x8c 483 1.1 scw #define VME2_MISC_CONTROL_DISBGN (1u << 0) 484 1.1 scw #define VME2_MISC_CONTROL_ENINT (1u << 1) 485 1.1 scw #define VME2_MISC_CONTROL_DISBSYT (1u << 2) 486 1.1 scw #define VME2_MISC_CONTROL_NOELBBSY (1u << 3) 487 1.1 scw #define VME2_MISC_CONTROL_DISMST (1u << 4) 488 1.1 scw #define VME2_MISC_CONTROL_DISSRAM (1u << 5) 489 1.1 scw #define VME2_MISC_CONTROL_REVEROM (1u << 6) 490 1.1 scw #define VME2_MISC_CONTROL_MPIRQEN (1u << 7) 491 1.1 scw 492 1.1 scw #define VME2LCSR_SIZE 0x90 493 1.1 scw 494 1.1 scw 495 1.1 scw #define vme2_lcsr_read(s,r) \ 496 1.1 scw bus_space_read_4((s)->sc_mvmebus.sc_bust, (s)->sc_lcrh, (r)) 497 1.1 scw #define vme2_lcsr_write(s,r,v) \ 498 1.1 scw bus_space_write_4((s)->sc_mvmebus.sc_bust, (s)->sc_lcrh, (r), (v)) 499 1.1 scw 500 1.1 scw 501 1.1 scw /* 502 1.1 scw * Locations of the three fixed VMEbus I/O ranges 503 1.1 scw */ 504 1.1 scw #define VME2_IO0_LOCAL_START (0xffff0000u) 505 1.1 scw #define VME2_IO0_MASK (0x0000ffffu) 506 1.1 scw #define VME2_IO0_VME_START (0x00000000u) 507 1.1 scw #define VME2_IO0_VME_END (0x0000ffffu) 508 1.1 scw 509 1.1 scw #define VME2_IO1_LOCAL_START (0xf0000000u) 510 1.1 scw #define VME2_IO1_MASK (0x00ffffffu) 511 1.1 scw #define VME2_IO1_VME_START (0x00000000u) 512 1.1 scw #define VME2_IO1_VME_END (0x00ffffffu) 513 1.1 scw 514 1.1 scw #define VME2_IO2_LOCAL_START (0x00000000u) 515 1.1 scw #define VME2_IO2_MASK (0xffffffffu) 516 1.1 scw #define VME2_IO2_VME_START (0xf1000000u) /* Maybe starts@ 0x0? */ 517 1.1 scw #define VME2_IO2_VME_END (0xff7fffffu) 518 1.1 scw 519 1.1 scw #endif /* _MVME_VME_TWOREG_H */ 520