xref: /netbsd-src/sys/dev/mvme/vme_tworeg.h (revision ce099b40997c43048fb78bd578195f81d2456523)
1*ce099b40Smartin /*	$NetBSD: vme_tworeg.h,v 1.2 2008/04/28 20:23:54 martin Exp $	*/
208bde987Sscw 
308bde987Sscw /*-
408bde987Sscw  * Copyright (c) 1999, 2002 The NetBSD Foundation, Inc.
508bde987Sscw  * All rights reserved.
608bde987Sscw  *
708bde987Sscw  * This code is derived from software contributed to The NetBSD Foundation
808bde987Sscw  * by Steve C. Woodford.
908bde987Sscw  *
1008bde987Sscw  * Redistribution and use in source and binary forms, with or without
1108bde987Sscw  * modification, are permitted provided that the following conditions
1208bde987Sscw  * are met:
1308bde987Sscw  * 1. Redistributions of source code must retain the above copyright
1408bde987Sscw  *    notice, this list of conditions and the following disclaimer.
1508bde987Sscw  * 2. Redistributions in binary form must reproduce the above copyright
1608bde987Sscw  *    notice, this list of conditions and the following disclaimer in the
1708bde987Sscw  *    documentation and/or other materials provided with the distribution.
1808bde987Sscw  *
1908bde987Sscw  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
2008bde987Sscw  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
2108bde987Sscw  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
2208bde987Sscw  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
2308bde987Sscw  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2408bde987Sscw  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2508bde987Sscw  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2608bde987Sscw  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2708bde987Sscw  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2808bde987Sscw  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2908bde987Sscw  * POSSIBILITY OF SUCH DAMAGE.
3008bde987Sscw  */
3108bde987Sscw 
3208bde987Sscw #ifndef _MVME_VME_TWOREG_H
3308bde987Sscw #define _MVME_VME_TWOREG_H
3408bde987Sscw 
3508bde987Sscw /*
3608bde987Sscw  * Where the VMEchip2's registers live relative to the start
3708bde987Sscw  * of the VMEChip2's register space.
3808bde987Sscw  */
3908bde987Sscw #define	VME2REG_LCSR_OFFSET	0x0000
4008bde987Sscw #define	VME2REG_GCSR_OFFSET	0x0100
4108bde987Sscw 
4208bde987Sscw 
4308bde987Sscw /*
4408bde987Sscw  * Register map of the Type 2 VMEchip found on many MVME boards.
4508bde987Sscw  * Note: Only responds to D32 accesses.
4608bde987Sscw  */
4708bde987Sscw 
4808bde987Sscw 	/*
4908bde987Sscw 	 * Slave window configuration registers
5008bde987Sscw 	 */
5108bde987Sscw #define VME2_SLAVE_WINDOWS		2
5208bde987Sscw #define	VME2LCSR_SLAVE_ADDRESS(x)	(0x00 + ((x) * 4))
5308bde987Sscw #define  VME2_SLAVE_ADDRESS_START_SHIFT	16
5408bde987Sscw #define  VME2_SLAVE_ADDRESS_START_MASK	(0x0000ffffu)
5508bde987Sscw #define  VME2_SLAVE_ADDRESS_END_SHIFT	0
5608bde987Sscw #define  VME2_SLAVE_ADDRESS_END_MASK	(0xffff0000u)
5708bde987Sscw 
5808bde987Sscw #define	VME2LCSR_SLAVE_TRANS(x)		(0x08 + ((x) * 4))
5908bde987Sscw #define  VME2_SLAVE_TRANS_SELECT_SHIFT	16
6008bde987Sscw #define  VME2_SLAVE_TRANS_SELECT_MASK	(0x0000ffffu)
6108bde987Sscw #define  VME2_SLAVE_TRANS_ADDRESS_SHIFT	0
6208bde987Sscw #define  VME2_SLAVE_TRANS_ADDRESS_MASK	(0xffff0000u)
6308bde987Sscw 
6408bde987Sscw #define	VME2LCSR_SLAVE_CTRL		0x10
6508bde987Sscw #define	 VME2_SLAVE_AMSEL_DAT(x)	(1u << (0 + ((x) * 16)))
6608bde987Sscw #define	 VME2_SLAVE_AMSEL_PGM(x)	(1u << (1 + ((x) * 16)))
6708bde987Sscw #define	 VME2_SLAVE_AMSEL_BLK(x)	(1u << (2 + ((x) * 16)))
6808bde987Sscw #define	 VME2_SLAVE_AMSEL_BLKD64(x)	(1u << (3 + ((x) * 16)))
6908bde987Sscw #define	 VME2_SLAVE_AMSEL_A24(x)	(1u << (4 + ((x) * 16)))
7008bde987Sscw #define	 VME2_SLAVE_AMSEL_A32(x)	(1u << (5 + ((x) * 16)))
7108bde987Sscw #define	 VME2_SLAVE_AMSEL_USR(x)	(1u << (6 + ((x) * 16)))
7208bde987Sscw #define	 VME2_SLAVE_AMSEL_SUP(x)	(1u << (7 + ((x) * 16)))
7308bde987Sscw #define	 VME2_SLAVE_CTRL_WP(x)		(1u << (8 + ((x) * 16)))
7408bde987Sscw #define	 VME2_SLAVE_CTRL_SNOOP_INHIBIT(x) (0u << (9 + ((x) * 16)))
7508bde987Sscw #define	 VME2_SLAVE_CTRL_SNOOP_WRSINK(x)  (1u << (9 + ((x) * 16)))
7608bde987Sscw #define	 VME2_SLAVE_CTRL_SNOOP_WRINVAL(x) (2u << (9 + ((x) * 16)))
7708bde987Sscw #define	 VME2_SLAVE_CTRL_ADDER(x)	(1u << (11 + ((x) * 16)))
7808bde987Sscw 
7908bde987Sscw 	/*
8008bde987Sscw 	 * Master window address control registers
8108bde987Sscw 	 */
8208bde987Sscw #define VME2_MASTER_WINDOWS		4
8308bde987Sscw #define	VME2LCSR_MASTER_ADDRESS(x)	(0x14 + ((x) * 4))
8408bde987Sscw #define  VME2_MAST_ADDRESS_START_SHIFT	16
8508bde987Sscw #define  VME2_MAST_ADDRESS_START_MASK	(0x0000ffffu)
8608bde987Sscw #define  VME2_MAST_ADDRESS_END_SHIFT	0
8708bde987Sscw #define  VME2_MAST_ADDRESS_END_MASK	(0xffff0000u)
8808bde987Sscw 
8908bde987Sscw #define	VME2LCSR_MAST4_TRANS		0x24
9008bde987Sscw #define  VME2_MAST4_TRANS_SELECT_SHIFT	16
9108bde987Sscw #define  VME2_MAST4_TRANS_SELECT_MASK	(0x0000ffffu)
9208bde987Sscw #define  VME2_MAST4_TRANS_ADDRESS_SHIFT	0
9308bde987Sscw #define  VME2_MAST4_TRANS_ADDRESS_MASK	(0xffff0000u)
9408bde987Sscw 
9508bde987Sscw 	/*
9608bde987Sscw 	 * VMEbus master attribute control register
9708bde987Sscw 	 */
9808bde987Sscw #define	VME2LCSR_MASTER_ATTR		0x28
9908bde987Sscw #define  VME2_MASTER_ATTR_AM_SHIFT(x)	((x) * 8)
10008bde987Sscw #define  VME2_MASTER_ATTR_AM_MASK	(0x0000003fu)
10108bde987Sscw #define  VME2_MASTER_ATTR_WP		(1u << 6)
10208bde987Sscw #define  VME2_MASTER_ATTR_D16		(1u << 7)
10308bde987Sscw 
10408bde987Sscw 	/*
10508bde987Sscw 	 * GCSR Group/Board addresses, and
10608bde987Sscw 	 * VMEbus Master Enable Control register, and
10708bde987Sscw 	 * Local to VMEbus I/O Control register, and
10808bde987Sscw 	 * ROM Control register (unused).
10908bde987Sscw 	 */
11008bde987Sscw #define	VME2LCSR_GCSR_ADDRESS		0x2c
11108bde987Sscw #define	 VME2_GCSR_ADDRESS_SHIFT	16
11208bde987Sscw #define	 VME2_GCSR_ADDRESS_MASK		(0xfff00000u)
11308bde987Sscw 
11408bde987Sscw #define VME2LCSR_MASTER_ENABLE		0x2c
11508bde987Sscw #define  VME2_MASTER_ENABLE_MASK	(0x000f0000u)
11608bde987Sscw #define  VME2_MASTER_ENABLE(x)		(1u << ((x) + 16))
11708bde987Sscw 
11808bde987Sscw #define VME2LCSR_IO_CONTROL		0x2c
11908bde987Sscw #define  VME2_IO_CONTROL_SHIFT		8
12008bde987Sscw #define  VME2_IO_CONTROL_MASK		(0x0000ff00u)
12108bde987Sscw #define  VME2_IO_CONTROL_I1SU		(1u << 8)
12208bde987Sscw #define  VME2_IO_CONTROL_I1WP		(1u << 9)
12308bde987Sscw #define  VME2_IO_CONTROL_I1D16		(1u << 10)
12408bde987Sscw #define  VME2_IO_CONTROL_I1EN		(1u << 11)
12508bde987Sscw #define  VME2_IO_CONTROL_I2PD		(1u << 12)
12608bde987Sscw #define  VME2_IO_CONTROL_I2SU		(1u << 13)
12708bde987Sscw #define  VME2_IO_CONTROL_I2WP		(1u << 14)
12808bde987Sscw #define  VME2_IO_CONTROL_I2EN		(1u << 15)
12908bde987Sscw 
13008bde987Sscw 	/*
13108bde987Sscw 	 * VMEChip2 PROM Decoder, SRAM and DMA Control register
13208bde987Sscw 	 */
13308bde987Sscw #define VME2LCSR_PROM_SRAM_DMA_CTRL	0x30
13408bde987Sscw #define	 VME2_PSD_SRAMS_MASK		(0x00ff0000u)
13508bde987Sscw #define	 VME2_PSD_SRAMS_CLKS6		(0u << 16)
13608bde987Sscw #define	 VME2_PSD_SRAMS_CLKS5		(1u << 16)
13708bde987Sscw #define	 VME2_PSD_SRAMS_CLKS4		(2u << 16)
13808bde987Sscw #define	 VME2_PSD_SRAMS_CLKS3		(3u << 16)
13908bde987Sscw #define  VME2_PSD_TBLSC_INHIB		(0u << 18)
14008bde987Sscw #define  VME2_PSD_TBLSC_WRSINK		(1u << 18)
14108bde987Sscw #define  VME2_PSD_TBLSC_WRINV		(2u << 18)
14208bde987Sscw #define  VME2_PSD_ROM0			(1u << 20)
14308bde987Sscw #define  VME2_PSD_WAITRMW		(1u << 21)
14408bde987Sscw 
14508bde987Sscw 	/*
14608bde987Sscw 	 * VMEbus requester control register
14708bde987Sscw 	 */
14808bde987Sscw #define VME2LCSR_VME_REQUESTER_CONTROL	0x30
14908bde987Sscw #define	 VME2_VMEREQ_CTRL_MASK		(0x0000ff00u)
15008bde987Sscw #define	 VME2_VMEREQ_CTRL_LVREQL_MASK	(0x00000300u)
15108bde987Sscw #define	 VME2_VMEREQ_CTRL_LVREQL(x)	((u_int)(x) << 8)
15208bde987Sscw #define  VME2_VMEREQ_CTRL_LVRWD		(1u << 10)
15308bde987Sscw #define  VME2_VMEREQ_CTRL_LVFAIR	(1u << 11)
15408bde987Sscw #define  VME2_VMEREQ_CTRL_DWB		(1u << 13)
15508bde987Sscw #define  VME2_VMEREQ_CTRL_DHB		(1u << 14)
15608bde987Sscw #define  VME2_VMEREQ_CTRL_ROBN		(1u << 15)
15708bde987Sscw 
15808bde987Sscw 	/*
15908bde987Sscw 	 * DMAC control register
16008bde987Sscw 	 */
16108bde987Sscw #define VME2LCSR_DMAC_CONTROL1		0x30
16208bde987Sscw #define	 VME2_DMAC_CTRL1_MASK		(0x000000ffu)
16308bde987Sscw #define	 VME2_DMAC_CTRL1_DREQL_MASK	(0x00000003u)
16408bde987Sscw #define	 VME2_DMAC_CTRL1_DREQL(x)	((u_int)(x) << 0)
16508bde987Sscw #define	 VME2_DMAC_CTRL1_DRELM_MASK	(0x0000000cu)
16608bde987Sscw #define	 VME2_DMAC_CTRL1_DRELM(x)	((u_int)(x) << 2)
16708bde987Sscw #define  VME2_DMAC_CTRL1_DFAIR		(1u << 4)
16808bde987Sscw #define  VME2_DMAC_CTRL1_DTBL		(1u << 5)
16908bde987Sscw #define  VME2_DMAC_CTRL1_DEN		(1u << 6)
17008bde987Sscw #define  VME2_DMAC_CTRL1_DHALT		(1u << 7)
17108bde987Sscw 
17208bde987Sscw 	/*
17308bde987Sscw 	 * DMA Control register #2
17408bde987Sscw 	 */
17508bde987Sscw #define VME2LCSR_DMAC_CONTROL2		0x34
17608bde987Sscw #define  VME2_DMAC_CTRL2_MASK		(0x0000ffffu)
17708bde987Sscw #define  VME2_DMAC_CTRL2_SHIFT		0
17808bde987Sscw #define  VME2_DMAC_CTRL2_AM_MASK	(0x0000003fu)
17908bde987Sscw #define  VME2_DMAC_CTRL2_BLK_D32	(1u << 6)
18008bde987Sscw #define  VME2_DMAC_CTRL2_BLK_D64	(3u << 6)
18108bde987Sscw #define	 VME2_DMAC_CTRL2_D16		(1u << 8)
18208bde987Sscw #define	 VME2_DMAC_CTRL2_TVME		(1u << 9)
18308bde987Sscw #define	 VME2_DMAC_CTRL2_LINC		(1u << 10)
18408bde987Sscw #define	 VME2_DMAC_CTRL2_VINC		(1u << 11)
18508bde987Sscw #define	 VME2_DMAC_CTRL2_SNOOP_INHIB	(0u << 13)
18608bde987Sscw #define	 VME2_DMAC_CTRL2_SNOOP_WRSNK	(1u << 13)
18708bde987Sscw #define	 VME2_DMAC_CTRL2_SNOOP_WRINV	(2u << 13)
18808bde987Sscw #define	 VME2_DMAC_CTRL2_INTE		(1u << 15)
18908bde987Sscw 
19008bde987Sscw 	/*
19108bde987Sscw 	 * DMA Controller Local Bus and VMEbus Addresses, Byte
19208bde987Sscw 	 * Counter and Table Address Counter registers
19308bde987Sscw 	 */
19408bde987Sscw #define VME2LCSR_DMAC_LOCAL_ADDRESS	0x38
19508bde987Sscw #define VME2LCSR_DMAC_VME_ADDRESS	0x3c
19608bde987Sscw #define VME2LCSR_DMAC_BYTE_COUNTER	0x40
19708bde987Sscw #define VME2LCSR_DMAC_TABLE_ADDRESS	0x44
19808bde987Sscw 
19908bde987Sscw 	/*
20008bde987Sscw 	 * VMEbus Interrupter Control register
20108bde987Sscw 	 */
20208bde987Sscw #define VME2LCSR_INTERRUPT_CONTROL	0x48
20308bde987Sscw #define	 VME2_INT_CTRL_MASK		(0xff000000u)
20408bde987Sscw #define	 VME2_INT_CTRL_SHIFT		24
20508bde987Sscw #define	 VME2_INT_CTRL_IRQL_MASK	(0x07000000u)
20608bde987Sscw #define	 VME2_INT_CTRL_IRQS		(1u << 27)
20708bde987Sscw #define	 VME2_INT_CTRL_IRQC		(1u << 28)
20808bde987Sscw #define	 VME2_INT_CTRL_IRQ1S_INT	(0u << 29)
20908bde987Sscw #define	 VME2_INT_CTRL_IRQ1S_TICK1	(1u << 29)
21008bde987Sscw #define	 VME2_INT_CTRL_IRQ1S_TICK2	(3u << 29)
21108bde987Sscw 
21208bde987Sscw 	/*
21308bde987Sscw 	 * VMEbus Interrupt Vector register
21408bde987Sscw 	 */
21508bde987Sscw #define VME2LCSR_INTERRUPT_VECTOR	0x48
21608bde987Sscw #define  VME2_INTERRUPT_VECTOR_MASK	(0x00ff0000u)
21708bde987Sscw #define  VME2_INTERRUPT_VECTOR_SHIFT	16
21808bde987Sscw 
21908bde987Sscw 	/*
22008bde987Sscw 	 * MPU Status register
22108bde987Sscw 	 */
22208bde987Sscw #define VME2LCSR_MPU_STATUS		0x48
22308bde987Sscw #define	 VME2_MPU_STATUS_MLOB		(1u << 0)
22408bde987Sscw #define	 VME2_MPU_STATUS_MLPE		(1u << 1)
22508bde987Sscw #define	 VME2_MPU_STATUS_MLBE		(1u << 2)
22608bde987Sscw #define	 VME2_MPU_STATUS_MCLR		(1u << 3)
22708bde987Sscw 
22808bde987Sscw 	/*
22908bde987Sscw 	 * DMA Interrupt Count register
23008bde987Sscw 	 */
23108bde987Sscw #define VME2LCSR_DMAC_INTERRUPT_CONTROL	0x48
23208bde987Sscw #define	 VME2_DMAC_INT_COUNT_MASK	(0x0000f000u)
23308bde987Sscw #define	 VME2_DMAC_INT_COUNT_SHIFT	12
23408bde987Sscw 
23508bde987Sscw 	/*
23608bde987Sscw 	 * DMA Controller Status register
23708bde987Sscw 	 */
23808bde987Sscw #define VME2LCSR_DMAC_STATUS		0x48
23908bde987Sscw #define  VME2_DMAC_STATUS_DONE		(1u << 0)
24008bde987Sscw #define  VME2_DMAC_STATUS_VME		(1u << 1)
24108bde987Sscw #define  VME2_DMAC_STATUS_TBL		(1u << 2)
24208bde987Sscw #define  VME2_DMAC_STATUS_DLTO		(1u << 3)
24308bde987Sscw #define  VME2_DMAC_STATUS_DLOB		(1u << 4)
24408bde987Sscw #define  VME2_DMAC_STATUS_DLPE		(1u << 5)
24508bde987Sscw #define  VME2_DMAC_STATUS_DLBE		(1u << 6)
24608bde987Sscw #define  VME2_DMAC_STATUS_MLTO		(1u << 7)
24708bde987Sscw 
24808bde987Sscw 
24908bde987Sscw 	/*
25008bde987Sscw 	 * VMEbus Arbiter Time-out register
25108bde987Sscw 	 */
25208bde987Sscw #define VME2LCSR_VME_ARB_TIMEOUT	0x4c
25308bde987Sscw #define	 VME2_VME_ARB_TIMEOUT_ENAB	(1u << 24)
25408bde987Sscw 
25508bde987Sscw 	/*
25608bde987Sscw 	 * DMA Controller Timers and VMEbus Global Time-out Control registers
25708bde987Sscw 	 */
25808bde987Sscw #define VME2LCSR_DMAC_TIME_ONOFF	0x4c
25908bde987Sscw #define  VME2_DMAC_TIME_ON_MASK		(0x001c0000u)
26008bde987Sscw #define  VME2_DMAC_TIME_ON_16US		(0u << 18)
26108bde987Sscw #define  VME2_DMAC_TIME_ON_32US		(1u << 18)
26208bde987Sscw #define  VME2_DMAC_TIME_ON_64US		(2u << 18)
26308bde987Sscw #define  VME2_DMAC_TIME_ON_128US	(3u << 18)
26408bde987Sscw #define  VME2_DMAC_TIME_ON_256US	(4u << 18)
26508bde987Sscw #define  VME2_DMAC_TIME_ON_512US	(5u << 18)
26608bde987Sscw #define  VME2_DMAC_TIME_ON_1024US	(6u << 18)
26708bde987Sscw #define  VME2_DMAC_TIME_ON_DONE		(7u << 18)
26808bde987Sscw #define  VME2_DMAC_TIME_OFF_MASK	(0x00e00000u)
26908bde987Sscw #define  VME2_DMAC_TIME_OFF_0US		(0u << 21)
27008bde987Sscw #define  VME2_DMAC_TIME_OFF_16US	(1u << 21)
27108bde987Sscw #define  VME2_DMAC_TIME_OFF_32US	(2u << 21)
27208bde987Sscw #define  VME2_DMAC_TIME_OFF_64US	(3u << 21)
27308bde987Sscw #define  VME2_DMAC_TIME_OFF_128US	(4u << 21)
27408bde987Sscw #define  VME2_DMAC_TIME_OFF_256US	(5u << 21)
27508bde987Sscw #define  VME2_DMAC_TIME_OFF_512US	(6u << 21)
27608bde987Sscw #define  VME2_DMAC_TIME_OFF_1024US	(7u << 21)
27708bde987Sscw #define  VME2_VME_GLOBAL_TO_MASK	(0x00030000u)
27808bde987Sscw #define	 VME2_VME_GLOBAL_TO_8US		(0u << 16)
27908bde987Sscw #define	 VME2_VME_GLOBAL_TO_16US	(1u << 16)
28008bde987Sscw #define	 VME2_VME_GLOBAL_TO_256US	(2u << 16)
28108bde987Sscw #define	 VME2_VME_GLOBAL_TO_DISABLE	(3u << 16)
28208bde987Sscw 
28308bde987Sscw 	/*
28408bde987Sscw 	 * VME Access, Local Bus and Watchdog Time-out Control register
28508bde987Sscw 	 */
28608bde987Sscw #define VME2LCSR_VME_ACCESS_TIMEOUT	0x4c
28708bde987Sscw #define  VME2_VME_ACCESS_TIMEOUT_MASK	(0x0000c000u)
28808bde987Sscw #define  VME2_VME_ACCESS_TIMEOUT_64US	(0u << 14)
28908bde987Sscw #define  VME2_VME_ACCESS_TIMEOUT_1MS	(1u << 14)
29008bde987Sscw #define  VME2_VME_ACCESS_TIMEOUT_32MS	(2u << 14)
29108bde987Sscw #define  VME2_VME_ACCESS_TIMEOUT_DISABLE (3u << 14)
29208bde987Sscw 
29308bde987Sscw #define VME2LCSR_LOCAL_BUS_TIMEOUT	0x4c
29408bde987Sscw #define  VME2_LOCAL_BUS_TIMEOUT_MASK	(0x00003000u)
29508bde987Sscw #define  VME2_LOCAL_BUS_TIMEOUT_64US	(0u << 12)
29608bde987Sscw #define  VME2_LOCAL_BUS_TIMEOUT_1MS	(1u << 12)
29708bde987Sscw #define  VME2_LOCAL_BUS_TIMEOUT_32MS	(2u << 12)
29808bde987Sscw #define  VME2_LOCAL_BUS_TIMEOUT_DISABLE	(3u << 12)
29908bde987Sscw 
30008bde987Sscw #define VME2LCSR_WATCHDOG_TIMEOUT	0x4c
30108bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_MASK	(0x00000f00u)
30208bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_512US	(0u << 8)
30308bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_1MS	(1u << 8)
30408bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_2MS	(2u << 8)
30508bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_4MS	(3u << 8)
30608bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_8MS	(4u << 8)
30708bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_16MS	(5u << 8)
30808bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_32MS	(6u << 8)
30908bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_64MS	(7u << 8)
31008bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_128MS	(8u << 8)
31108bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_256MS	(9u << 8)
31208bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_512MS	(10u << 8)
31308bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_1S	(11u << 8)
31408bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_4S	(12u << 8)
31508bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_16S	(13u << 8)
31608bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_32S	(14u << 8)
31708bde987Sscw #define  VME2_WATCHDOG_TIMEOUT_64S	(15u << 8)
31808bde987Sscw 
31908bde987Sscw 	/*
32008bde987Sscw 	 * Prescaler Control register
32108bde987Sscw 	 */
32208bde987Sscw #define VME2LCSR_PRESCALER_CONTROL	0x4c
32308bde987Sscw #define	 VME2_PRESCALER_MASK		(0x000000ffu)
32408bde987Sscw #define	 VME2_PRESCALER_SHIFT		0
32508bde987Sscw #define	 VME2_PRESCALER_CTRL(c)		(256 - (c))
32608bde987Sscw 
32708bde987Sscw 	/*
32808bde987Sscw 	 * Tick Timer registers
32908bde987Sscw 	 */
33008bde987Sscw #define	VME2LCSR_TIMER_COMPARE(x)	(0x50 + ((x) * 8))
33108bde987Sscw #define	VME2LCSR_TIMER_COUNTER(x)	(0x54 + ((x) * 8))
33208bde987Sscw 
33308bde987Sscw 
33408bde987Sscw 	/*
33508bde987Sscw 	 * Board Control register
33608bde987Sscw 	 */
33708bde987Sscw #define VME2LCSR_BOARD_CONTROL		0x60
33808bde987Sscw #define  VME2_BOARD_CONTROL_RSWE	(1u << 24)
33908bde987Sscw #define  VME2_BOARD_CONTROL_BDFLO	(1u << 25)
34008bde987Sscw #define  VME2_BOARD_CONTROL_CPURS	(1u << 26)
34108bde987Sscw #define  VME2_BOARD_CONTROL_PURS	(1u << 27)
34208bde987Sscw #define  VME2_BOARD_CONTROL_BRFLI	(1u << 28)
34308bde987Sscw #define  VME2_BOARD_CONTROL_SFFL	(1u << 29)
34408bde987Sscw #define  VME2_BOARD_CONTROL_SCON	(1u << 30)
34508bde987Sscw 
34608bde987Sscw 	/*
34708bde987Sscw 	 * Watchdog Timer Control register
34808bde987Sscw 	 */
34908bde987Sscw #define VME2LCSR_WATCHDOG_TIMER_CONTROL	0x60
35008bde987Sscw #define  VME2_WATCHDOG_TCONTROL_WDEN	(1u << 16)
35108bde987Sscw #define  VME2_WATCHDOG_TCONTTRL_WDRSE	(1u << 17)
35208bde987Sscw #define  VME2_WATCHDOG_TCONTTRL_WDSL	(1u << 18)
35308bde987Sscw #define  VME2_WATCHDOG_TCONTTRL_WDBFE	(1u << 19)
35408bde987Sscw #define  VME2_WATCHDOG_TCONTTRL_WDTO	(1u << 20)
35508bde987Sscw #define  VME2_WATCHDOG_TCONTTRL_WDCC	(1u << 21)
35608bde987Sscw #define  VME2_WATCHDOG_TCONTTRL_WDCS	(1u << 22)
35708bde987Sscw #define  VME2_WATCHDOG_TCONTTRL_SRST	(1u << 23)
35808bde987Sscw 
35908bde987Sscw 	/*
36008bde987Sscw 	 * Tick Timer Control registers
36108bde987Sscw 	 */
36208bde987Sscw #define	VME2LCSR_TIMER_CONTROL		0x60
36308bde987Sscw #define  VME2_TIMER_CONTROL_EN(x)	(1u << (0 + ((x) * 8)))
36408bde987Sscw #define  VME2_TIMER_CONTROL_COC(x)	(1u << (1 + ((x) * 8)))
36508bde987Sscw #define  VME2_TIMER_CONTROL_COF(x)	(1u << (2 + ((x) * 8)))
36608bde987Sscw #define  VME2_TIMER_CONTROL_OVF_SHIFT(x) (4 + ((x) * 8))
36708bde987Sscw #define  VME2_TIMER_CONTROL_OVF_MASK(x)	(0x000000f0u << (4 + ((x) * 8)))
36808bde987Sscw 
36908bde987Sscw 	/*
37008bde987Sscw 	 * Prescaler Counter register
37108bde987Sscw 	 */
37208bde987Sscw #define VME2LCSR_PRESCALER_COUNTER	0x64
37308bde987Sscw 
37408bde987Sscw 	/*
37508bde987Sscw 	 * Local Bus Interrupter Status/Enable/Clear registers
37608bde987Sscw 	 */
37708bde987Sscw #define VME2LCSR_LOCAL_INTERRUPT_STATUS	0x68
37808bde987Sscw #define VME2LCSR_LOCAL_INTERRUPT_ENABLE	0x6c
37908bde987Sscw #define VME2LCSR_LOCAL_INTERRUPT_CLEAR	0x74
38008bde987Sscw #define  VME2_LOCAL_INTERRUPT(x)	(1u << (x))
38108bde987Sscw #define  VME2_LOCAL_INTERRUPT_VME(x)	(1u << ((x) - 1))
38208bde987Sscw #define  VME2_LOCAL_INTERRUPT_SWINT(x)	(1u << ((x) + 8))
38308bde987Sscw #define  VME2_LOCAL_INTERRUPT_LM(x)	(1u << ((x) + 16))
38408bde987Sscw #define  VME2_LOCAL_INTERRUPT_SIG(x)	(1u << ((x) + 18))
38508bde987Sscw #define  VME2_LOCAL_INTERRUPT_DMAC	(1u << 22)
38608bde987Sscw #define  VME2_LOCAL_INTERRUPT_VIA	(1u << 23)
38708bde987Sscw #define  VME2_LOCAL_INTERRUPT_TIC(x)	(1u << ((x) + 24))
38808bde987Sscw #define  VME2_LOCAL_INTERRUPT_VI1E	(1u << 26)
38908bde987Sscw #define  VME2_LOCAL_INTERRUPT_PE	(1u << 27)
39008bde987Sscw #define  VME2_LOCAL_INTERRUPT_MWP	(1u << 28)
39108bde987Sscw #define  VME2_LOCAL_INTERRUPT_SYSF	(1u << 29)
39208bde987Sscw #define  VME2_LOCAL_INTERRUPT_ABORT	(1u << 30)
39308bde987Sscw #define  VME2_LOCAL_INTERRUPT_ACFAIL	(1u << 31)
39408bde987Sscw #define  VME2_LOCAL_INTERRUPT_CLEAR_ALL	(0xffffff00u)
39508bde987Sscw 
39608bde987Sscw 	/*
39708bde987Sscw 	 * Software Interrupt Set register
39808bde987Sscw 	 */
39908bde987Sscw #define VME2LCSR_SOFTINT_SET		0x70
40008bde987Sscw #define  VME2_SOFTINT_SET(x)		(1u << ((x) + 8))
40108bde987Sscw 
40208bde987Sscw 	/*
40308bde987Sscw 	 * Interrupt Level registers
40408bde987Sscw 	 */
40508bde987Sscw #define VME2LCSR_INTERRUPT_LEVEL_BASE	0x78
40608bde987Sscw #define  VME2_NUM_IL_REGS		4
40708bde987Sscw #define	 VME2_ILOFFSET_FROM_VECTOR(v)	(((((VME2_NUM_IL_REGS*8)-1)-(v))/8)<<2)
40808bde987Sscw #define	 VME2_ILSHIFT_FROM_VECTOR(v)	(((v) & 7) * 4)
40908bde987Sscw #define	 VME2_INTERRUPT_LEVEL_MASK	(0x0fu)
41008bde987Sscw 
41108bde987Sscw 	/*
41208bde987Sscw 	 * Vector Base register
41308bde987Sscw 	 */
41408bde987Sscw #define VME2LCSR_VECTOR_BASE		0x88
41508bde987Sscw #define  VME2_VECTOR_BASE_MASK		(0xff000000u)
41608bde987Sscw #define	 VME2_VECTOR_BASE_REG_VALUE	(0x76000000u)
41708bde987Sscw #define	 VME2_VECTOR_BASE		(0x60u)
41808bde987Sscw #define	 VME2_VECTOR_LOCAL_OFFSET	(0x08u)
41908bde987Sscw #define	 VME2_VECTOR_LOCAL_MIN		(VME2_VECTOR_BASE + 0x08u)
42008bde987Sscw #define  VME2_VECTOR_LOCAL_MAX		(VME2_VECTOR_BASE + 0x1fu)
42108bde987Sscw #define  VME2_VEC_SOFT0			(VME2_VECTOR_BASE + 0x08u)
42208bde987Sscw #define  VME2_VEC_SOFT1			(VME2_VECTOR_BASE + 0x09u)
42308bde987Sscw #define  VME2_VEC_SOFT2			(VME2_VECTOR_BASE + 0x0au)
42408bde987Sscw #define  VME2_VEC_SOFT3			(VME2_VECTOR_BASE + 0x0bu)
42508bde987Sscw #define  VME2_VEC_SOFT4			(VME2_VECTOR_BASE + 0x0cu)
42608bde987Sscw #define  VME2_VEC_SOFT5			(VME2_VECTOR_BASE + 0x0du)
42708bde987Sscw #define  VME2_VEC_SOFT6			(VME2_VECTOR_BASE + 0x0eu)
42808bde987Sscw #define  VME2_VEC_SOFT7			(VME2_VECTOR_BASE + 0x0fu)
42908bde987Sscw #define  VME2_VEC_GCSRLM0		(VME2_VECTOR_BASE + 0x10u)
43008bde987Sscw #define  VME2_VEC_GCSRLM1		(VME2_VECTOR_BASE + 0x11u)
43108bde987Sscw #define  VME2_VEC_GCSRSIG0		(VME2_VECTOR_BASE + 0x12u)
43208bde987Sscw #define  VME2_VEC_GCSRSIG1		(VME2_VECTOR_BASE + 0x13u)
43308bde987Sscw #define  VME2_VEC_GCSRSIG2		(VME2_VECTOR_BASE + 0x14u)
43408bde987Sscw #define  VME2_VEC_GCSRSIG3		(VME2_VECTOR_BASE + 0x15u)
43508bde987Sscw #define  VME2_VEC_DMAC			(VME2_VECTOR_BASE + 0x16u)
43608bde987Sscw #define  VME2_VEC_VIA			(VME2_VECTOR_BASE + 0x17u)
43708bde987Sscw #define  VME2_VEC_TT1			(VME2_VECTOR_BASE + 0x18u)
43808bde987Sscw #define  VME2_VEC_TT2			(VME2_VECTOR_BASE + 0x19u)
43908bde987Sscw #define  VME2_VEC_IRQ1			(VME2_VECTOR_BASE + 0x1au)
44008bde987Sscw #define  VME2_VEC_PARITY_ERROR		(VME2_VECTOR_BASE + 0x1bu)
44108bde987Sscw #define  VME2_VEC_MWP_ERROR		(VME2_VECTOR_BASE + 0x1cu)
44208bde987Sscw #define  VME2_VEC_SYSFAIL		(VME2_VECTOR_BASE + 0x1du)
44308bde987Sscw #define  VME2_VEC_ABORT			(VME2_VECTOR_BASE + 0x1eu)
44408bde987Sscw #define  VME2_VEC_ACFAIL		(VME2_VECTOR_BASE + 0x1fu)
44508bde987Sscw 
44608bde987Sscw 	/*
44708bde987Sscw 	 * I/O Control register #1
44808bde987Sscw 	 */
44908bde987Sscw #define VME2LCSR_GPIO_DIRECTION		0x88
45008bde987Sscw #define  VME2_GPIO_DIRECTION_OUT(x)	(1u << ((x) + 16))
45108bde987Sscw 
45208bde987Sscw 	/*
45308bde987Sscw 	 * Misc. Status register
45408bde987Sscw 	 */
45508bde987Sscw #define VME2LCSR_MISC_STATUS		0x88
45608bde987Sscw #define  VME2_MISC_STATUS_ABRTL		(1u << 20)
45708bde987Sscw #define  VME2_MISC_STATUS_ACFL		(1u << 21)
45808bde987Sscw #define  VME2_MISC_STATUS_SYSFL		(1u << 22)
45908bde987Sscw #define  VME2_MISC_STATUS_MIEN		(1u << 23)
46008bde987Sscw 
46108bde987Sscw 	/*
46208bde987Sscw 	 * GPIO Status register
46308bde987Sscw 	 */
46408bde987Sscw #define VME2LCSR_GPIO_STATUS		0x88
46508bde987Sscw #define  VME2_GPIO_STATUS(x)		(1u << ((x) + 8))
46608bde987Sscw 
46708bde987Sscw 	/*
46808bde987Sscw 	 * GPIO Control register #2
46908bde987Sscw 	 */
47008bde987Sscw #define VME2LCSR_GPIO_CONTROL		0x88
47108bde987Sscw #define  VME2_GPIO_CONTROL_SET(x)	(1u << ((x) + 12))
47208bde987Sscw 
47308bde987Sscw 	/*
47408bde987Sscw 	 * General purpose input registers
47508bde987Sscw 	 */
47608bde987Sscw #define VME2LCSR_GP_INPUTS		0x88
47708bde987Sscw #define  VME2_GP_INPUT(x)		(1u << (x))
47808bde987Sscw 
47908bde987Sscw 	/*
48008bde987Sscw 	 * Miscellaneous Control register
48108bde987Sscw 	 */
48208bde987Sscw #define VME2LCSR_MISC_CONTROL		0x8c
48308bde987Sscw #define  VME2_MISC_CONTROL_DISBGN	(1u << 0)
48408bde987Sscw #define  VME2_MISC_CONTROL_ENINT	(1u << 1)
48508bde987Sscw #define  VME2_MISC_CONTROL_DISBSYT	(1u << 2)
48608bde987Sscw #define  VME2_MISC_CONTROL_NOELBBSY	(1u << 3)
48708bde987Sscw #define  VME2_MISC_CONTROL_DISMST	(1u << 4)
48808bde987Sscw #define  VME2_MISC_CONTROL_DISSRAM	(1u << 5)
48908bde987Sscw #define  VME2_MISC_CONTROL_REVEROM	(1u << 6)
49008bde987Sscw #define  VME2_MISC_CONTROL_MPIRQEN	(1u << 7)
49108bde987Sscw 
49208bde987Sscw #define VME2LCSR_SIZE		0x90
49308bde987Sscw 
49408bde987Sscw 
49508bde987Sscw #define	vme2_lcsr_read(s,r) \
49608bde987Sscw 	bus_space_read_4((s)->sc_mvmebus.sc_bust, (s)->sc_lcrh, (r))
49708bde987Sscw #define	vme2_lcsr_write(s,r,v) \
49808bde987Sscw 	bus_space_write_4((s)->sc_mvmebus.sc_bust, (s)->sc_lcrh, (r), (v))
49908bde987Sscw 
50008bde987Sscw 
50108bde987Sscw /*
50208bde987Sscw  * Locations of the three fixed VMEbus I/O ranges
50308bde987Sscw  */
50408bde987Sscw #define	VME2_IO0_LOCAL_START		(0xffff0000u)
50508bde987Sscw #define	VME2_IO0_MASK			(0x0000ffffu)
50608bde987Sscw #define	VME2_IO0_VME_START		(0x00000000u)
50708bde987Sscw #define	VME2_IO0_VME_END		(0x0000ffffu)
50808bde987Sscw 
50908bde987Sscw #define	VME2_IO1_LOCAL_START		(0xf0000000u)
51008bde987Sscw #define	VME2_IO1_MASK			(0x00ffffffu)
51108bde987Sscw #define	VME2_IO1_VME_START		(0x00000000u)
51208bde987Sscw #define	VME2_IO1_VME_END		(0x00ffffffu)
51308bde987Sscw 
51408bde987Sscw #define	VME2_IO2_LOCAL_START		(0x00000000u)
51508bde987Sscw #define	VME2_IO2_MASK			(0xffffffffu)
51608bde987Sscw #define	VME2_IO2_VME_START		(0xf1000000u)	/* Maybe starts@ 0x0? */
51708bde987Sscw #define	VME2_IO2_VME_END		(0xff7fffffu)
51808bde987Sscw 
51908bde987Sscw #endif /* _MVME_VME_TWOREG_H */
520