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