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