excareg.h revision 110841
189948Simp/* $NetBSD: i82365reg.h,v 1.3 1998/12/20 17:53:28 nathanw Exp $ */ 289948Simp/* $FreeBSD: head/sys/dev/exca/excareg.h 110841 2003-02-14 06:21:18Z imp $ */ 389948Simp 489948Simp/* 589948Simp * Copyright (c) 2002 M Warner Losh. All rights reserved. 689948Simp * 789948Simp * Redistribution and use in source and binary forms, with or without 889948Simp * modification, are permitted provided that the following conditions 989948Simp * are met: 1089948Simp * 1. Redistributions of source code must retain the above copyright 1189948Simp * notice, this list of conditions and the following disclaimer. 1289948Simp * 2. Redistributions in binary form must reproduce the above copyright 1389948Simp * notice, this list of conditions and the following disclaimer in the 1489948Simp * documentation and/or other materials provided with the distribution. 1589948Simp * 1689948Simp * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1789948Simp * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1889948Simp * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1989948Simp * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2089948Simp * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2189948Simp * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2289948Simp * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2389948Simp * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2489948Simp * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2589948Simp * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2689948Simp * 2789948Simp * This software may be derived from NetBSD i82365.c and other files with 2889948Simp * the following copyright: 2989948Simp * 3089948Simp * Copyright (c) 1997 Marc Horowitz. All rights reserved. 3189948Simp * 3289948Simp * Redistribution and use in source and binary forms, with or without 3389948Simp * modification, are permitted provided that the following conditions 3489948Simp * are met: 3589948Simp * 1. Redistributions of source code must retain the above copyright 3689948Simp * notice, this list of conditions and the following disclaimer. 3789948Simp * 2. Redistributions in binary form must reproduce the above copyright 3889948Simp * notice, this list of conditions and the following disclaimer in the 3989948Simp * documentation and/or other materials provided with the distribution. 4089948Simp * 3. All advertising materials mentioning features or use of this software 4189948Simp * must display the following acknowledgement: 4289948Simp * This product includes software developed by Marc Horowitz. 4389948Simp * 4. The name of the author may not be used to endorse or promote products 4489948Simp * derived from this software without specific prior written permission. 4589948Simp * 4689948Simp * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 4789948Simp * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 4889948Simp * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 4989948Simp * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 5089948Simp * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 5189948Simp * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 5289948Simp * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 5389948Simp * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 5489948Simp * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 5589948Simp * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 5689948Simp */ 5789948Simp 58100703Simp#ifndef _SYS_DEV_EXCA_EXCAREG_H 59100703Simp#define _SYS_DEV_EXCA_EXCAREG_H 60100703Simp 6189948Simp/* 6289948Simp * All information is from the intel 82365sl PC Card Interface Controller 6389948Simp * (PCIC) data sheet, marked "preliminary". Order number 290423-002, January 6489948Simp * 1993. 6589948Simp */ 6689948Simp 6789948Simp#define EXCA_IOSIZE 2 6889948Simp 6989948Simp#define EXCA_REG_INDEX 0 7089948Simp#define EXCA_REG_DATA 1 7189948Simp 7289948Simp#define EXCA_NSLOTS 4 /* 2 in 2 chips */ 7389948Simp 7489948Simp/* 7589948Simp * I/o ports 7689948Simp */ 7789948Simp#define EXCA_INDEX0 0x3e0 7889948Simp 7989948Simp/* 8089948Simp * The PCIC allows two chips to share the same address. In order not to run 8189948Simp * afoul of the bsd device model, this driver will treat those chips as 8289948Simp * the same device. 8389948Simp */ 8489948Simp 8589948Simp#define EXCA_CHIP0_BASE 0x00 8689948Simp#define EXCA_CHIP1_BASE 0x80 8789948Simp 8889948Simp/* Each PCIC chip can drive two sockets */ 8989948Simp 9089948Simp#define EXCA_SOCKET_SIZE 0x40 9189948Simp#define EXCA_SOCKETA_INDEX 0x00 9289948Simp#define EXCA_SOCKETB_INDEX EXCA_SOCKET_SIZE 9389948Simp 9489948Simp/* general setup registers */ 9589948Simp 9689948Simp#define EXCA_IDENT 0x00 /* RO */ 9789948Simp#define EXCA_IDENT_IFTYPE_MASK 0xC0 9889948Simp#define EXCA_IDENT_IFTYPE_IO_ONLY 0x00 9989948Simp#define EXCA_IDENT_IFTYPE_MEM_ONLY 0x40 10089948Simp#define EXCA_IDENT_IFTYPE_MEM_AND_IO 0x80 10189948Simp#define EXCA_IDENT_IFTYPE_RESERVED 0xC0 10289948Simp#define EXCA_IDENT_ZERO 0x30 10389948Simp#define EXCA_IDENT_REV_MASK 0x0F 104110841Simp#define EXCA_IDENT_REV_I82365SLR0 0x02 /* step a/b */ 105110841Simp#define EXCA_IDENT_REV_I82365SLR1 0x03 /* step c */ 106110841Simp#define EXCA_IDENT_REV_I82365SLDF 0x04 /* step df */ 107110841Simp#define EXCA_IDENT_REV_IBM1 0x08 /* ibm clone */ 108110841Simp#define EXCA_IDENT_REV_IBM2 0x09 /* ibm clone */ 109110841Simp#define EXCA_IDENT_REV_IBM_KING 0x0a /* ibm king */ 11089948Simp 11189948Simp#define EXCA_IF_STATUS 0x01 /* RO */ 11289948Simp#define EXCA_IF_STATUS_GPI 0x80 /* General Purpose Input */ 11389948Simp#define EXCA_IF_STATUS_POWERACTIVE 0x40 11489948Simp#define EXCA_IF_STATUS_READY 0x20 /* really READY/!BUSY */ 11589948Simp#define EXCA_IF_STATUS_MEM_WP 0x10 11689948Simp#define EXCA_IF_STATUS_CARDDETECT_MASK 0x0C 11789948Simp#define EXCA_IF_STATUS_CARDDETECT_PRESENT 0x0C 11889948Simp#define EXCA_IF_STATUS_BATTERY_MASK 0x03 11989948Simp#define EXCA_IF_STATUS_BATTERY_DEAD1 0x00 12089948Simp#define EXCA_IF_STATUS_BATTERY_DEAD2 0x01 12189948Simp#define EXCA_IF_STATUS_BATTERY_WARNING 0x02 12289948Simp#define EXCA_IF_STATUS_BATTERY_GOOD 0x03 12389948Simp 12489948Simp#define EXCA_PWRCTL 0x02 /* RW */ 12589948Simp#define EXCA_PWRCTL_OE 0x80 /* output enable */ 12689948Simp#define EXCA_PWRCTL_DISABLE_RESETDRV 0x40 12789948Simp#define EXCA_PWRCTL_AUTOSWITCH_ENABLE 0x20 12889948Simp#define EXCA_PWRCTL_PWR_ENABLE 0x10 12989948Simp#define EXCA_PWRCTL_VPP2_MASK 0x0C 13089948Simp/* XXX these are a little unclear from the data sheet */ 13189948Simp#define EXCA_PWRCTL_VPP2_RESERVED 0x0C 13289948Simp#define EXCA_PWRCTL_VPP2_EN1 0x08 13389948Simp#define EXCA_PWRCTL_VPP2_EN0 0x04 13489948Simp#define EXCA_PWRCTL_VPP2_ENX 0x00 13589948Simp#define EXCA_PWRCTL_VPP1_MASK 0x03 13689948Simp/* XXX these are a little unclear from the data sheet */ 13789948Simp#define EXCA_PWRCTL_VPP1_RESERVED 0x03 13889948Simp#define EXCA_PWRCTL_VPP1_EN1 0x02 13989948Simp#define EXCA_PWRCTL_VPP1_EN0 0x01 14089948Simp#define EXCA_PWRCTL_VPP1_ENX 0x00 14189948Simp 14289948Simp#define EXCA_CSC 0x04 /* RW */ 14389948Simp#define EXCA_CSC_ZERO 0xE0 14489948Simp#define EXCA_CSC_GPI 0x10 14589948Simp#define EXCA_CSC_CD 0x08 /* Card Detect Change */ 14689948Simp#define EXCA_CSC_READY 0x04 14789948Simp#define EXCA_CSC_BATTWARN 0x02 14889948Simp#define EXCA_CSC_BATTDEAD 0x01 /* for memory cards */ 14989948Simp#define EXCA_CSC_RI 0x01 /* for i/o cards */ 15089948Simp 15189948Simp#define EXCA_ADDRWIN_ENABLE 0x06 /* RW */ 15289948Simp#define EXCA_ADDRWIN_ENABLE_IO1 0x80 15389948Simp#define EXCA_ADDRWIN_ENABLE_IO0 0x40 15489948Simp#define EXCA_ADDRWIN_ENABLE_MEMCS16 0x20 /* rtfds if you care */ 15589948Simp#define EXCA_ADDRWIN_ENABLE_MEM4 0x10 15689948Simp#define EXCA_ADDRWIN_ENABLE_MEM3 0x08 15789948Simp#define EXCA_ADDRWIN_ENABLE_MEM2 0x04 15889948Simp#define EXCA_ADDRWIN_ENABLE_MEM1 0x02 15989948Simp#define EXCA_ADDRWIN_ENABLE_MEM0 0x01 16089948Simp 16189948Simp#define EXCA_CARD_DETECT 0x16 /* RW */ 16289948Simp#define EXCA_CARD_DETECT_RESERVED 0xC0 16389948Simp#define EXCA_CARD_DETECT_SW_INTR 0x20 16489948Simp#define EXCA_CARD_DETECT_RESUME_ENABLE 0x10 16589948Simp#define EXCA_CARD_DETECT_GPI_TRANSCTL 0x08 16689948Simp#define EXCA_CARD_DETECT_GPI_ENABLE 0x04 16789948Simp#define EXCA_CARD_DETECT_CFGRST_ENABLE 0x02 16889948Simp#define EXCA_CARD_DETECT_MEMDLY_INHIBIT 0x01 16989948Simp 17089948Simp/* interrupt registers */ 17189948Simp 17289948Simp#define EXCA_INTR 0x03 /* RW */ 17389948Simp#define EXCA_INTR_RI_ENABLE 0x80 17489948Simp#define EXCA_INTR_RESET 0x40 /* active low (zero) */ 17589948Simp#define EXCA_INTR_CARDTYPE_MASK 0x20 17689948Simp#define EXCA_INTR_CARDTYPE_IO 0x20 17789948Simp#define EXCA_INTR_CARDTYPE_MEM 0x00 17889948Simp#define EXCA_INTR_ENABLE 0x10 17989948Simp#define EXCA_INTR_IRQ_MASK 0x0F 18089948Simp#define EXCA_INTR_IRQ_SHIFT 0 18189948Simp#define EXCA_INTR_IRQ_NONE 0x00 18289948Simp#define EXCA_INTR_IRQ_RESERVED1 0x01 18389948Simp#define EXCA_INTR_IRQ_RESERVED2 0x02 18489948Simp#define EXCA_INTR_IRQ3 0x03 18589948Simp#define EXCA_INTR_IRQ4 0x04 18689948Simp#define EXCA_INTR_IRQ5 0x05 18789948Simp#define EXCA_INTR_IRQ_RESERVED6 0x06 18889948Simp#define EXCA_INTR_IRQ7 0x07 18989948Simp#define EXCA_INTR_IRQ_RESERVED8 0x08 19089948Simp#define EXCA_INTR_IRQ9 0x09 19189948Simp#define EXCA_INTR_IRQ10 0x0A 19289948Simp#define EXCA_INTR_IRQ11 0x0B 19389948Simp#define EXCA_INTR_IRQ12 0x0C 19489948Simp#define EXCA_INTR_IRQ_RESERVED13 0x0D 19589948Simp#define EXCA_INTR_IRQ14 0x0E 19689948Simp#define EXCA_INTR_IRQ15 0x0F 19789948Simp 19889948Simp#define EXCA_INTR_IRQ_VALIDMASK 0xDEB8 /* 1101 1110 1011 1000 */ 19989948Simp 20089948Simp#define EXCA_CSC_INTR 0x05 /* RW */ 20189948Simp#define EXCA_CSC_INTR_IRQ_MASK 0xF0 20289948Simp#define EXCA_CSC_INTR_IRQ_SHIFT 4 20389948Simp#define EXCA_CSC_INTR_IRQ_NONE 0x00 20489948Simp#define EXCA_CSC_INTR_IRQ_RESERVED1 0x10 20589948Simp#define EXCA_CSC_INTR_IRQ_RESERVED2 0x20 20689948Simp#define EXCA_CSC_INTR_IRQ3 0x30 20789948Simp#define EXCA_CSC_INTR_IRQ4 0x40 20889948Simp#define EXCA_CSC_INTR_IRQ5 0x50 20989948Simp#define EXCA_CSC_INTR_IRQ_RESERVED6 0x60 21089948Simp#define EXCA_CSC_INTR_IRQ7 0x70 21189948Simp#define EXCA_CSC_INTR_IRQ_RESERVED8 0x80 21289948Simp#define EXCA_CSC_INTR_IRQ9 0x90 21389948Simp#define EXCA_CSC_INTR_IRQ10 0xA0 21489948Simp#define EXCA_CSC_INTR_IRQ11 0xB0 21589948Simp#define EXCA_CSC_INTR_IRQ12 0xC0 21689948Simp#define EXCA_CSC_INTR_IRQ_RESERVED13 0xD0 21789948Simp#define EXCA_CSC_INTR_IRQ14 0xE0 21889948Simp#define EXCA_CSC_INTR_IRQ15 0xF0 21989948Simp#define EXCA_CSC_INTR_CD_ENABLE 0x08 22089948Simp#define EXCA_CSC_INTR_READY_ENABLE 0x04 22189948Simp#define EXCA_CSC_INTR_BATTWARN_ENABLE 0x02 22289948Simp#define EXCA_CSC_INTR_BATTDEAD_ENABLE 0x01 /* for memory cards */ 22389948Simp#define EXCA_CSC_INTR_RI_ENABLE 0x01 /* for I/O cards */ 22489948Simp 22589948Simp#define EXCA_CSC_INTR_IRQ_VALIDMASK 0xDEB8 /* 1101 1110 1011 1000 */ 22689948Simp 22789948Simp/* I/O registers */ 22889948Simp 22989948Simp#define EXCA_IO_WINS 2 23089948Simp 23189948Simp#define EXCA_IOCTL 0x07 /* RW */ 23289948Simp#define EXCA_IOCTL_IO1_WAITSTATE 0x80 23389948Simp#define EXCA_IOCTL_IO1_ZEROWAIT 0x40 23489948Simp#define EXCA_IOCTL_IO1_IOCS16SRC_MASK 0x20 23589948Simp#define EXCA_IOCTL_IO1_IOCS16SRC_CARD 0x20 23689948Simp#define EXCA_IOCTL_IO1_IOCS16SRC_DATASIZE 0x00 23789948Simp#define EXCA_IOCTL_IO1_DATASIZE_MASK 0x10 23889948Simp#define EXCA_IOCTL_IO1_DATASIZE_16BIT 0x10 23989948Simp#define EXCA_IOCTL_IO1_DATASIZE_8BIT 0x00 24089948Simp#define EXCA_IOCTL_IO0_WAITSTATE 0x08 24189948Simp#define EXCA_IOCTL_IO0_ZEROWAIT 0x04 24289948Simp#define EXCA_IOCTL_IO0_IOCS16SRC_MASK 0x02 24389948Simp#define EXCA_IOCTL_IO0_IOCS16SRC_CARD 0x02 24489948Simp#define EXCA_IOCTL_IO0_IOCS16SRC_DATASIZE 0x00 24589948Simp#define EXCA_IOCTL_IO0_DATASIZE_MASK 0x01 24689948Simp#define EXCA_IOCTL_IO0_DATASIZE_16BIT 0x01 24789948Simp#define EXCA_IOCTL_IO0_DATASIZE_8BIT 0x00 24889948Simp 24989948Simp#define EXCA_IOADDR0_START_LSB 0x08 25089948Simp#define EXCA_IOADDR0_START_MSB 0x09 25189948Simp#define EXCA_IOADDR0_STOP_LSB 0x0A 25289948Simp#define EXCA_IOADDR0_STOP_MSB 0x0B 25389948Simp#define EXCA_IOADDR1_START_LSB 0x0C 25489948Simp#define EXCA_IOADDR1_START_MSB 0x0D 25589948Simp#define EXCA_IOADDR1_STOP_LSB 0x0E 25689948Simp#define EXCA_IOADDR1_STOP_MSB 0x0F 25789948Simp 25889948Simp/* memory registers */ 25989948Simp 26089948Simp/* 26189948Simp * memory window addresses refer to bits A23-A12 of the ISA system memory 26289948Simp * address. This is a shift of 12 bits. The LSB contains A19-A12, and the 26389948Simp * MSB contains A23-A20, plus some other bits. 26489948Simp */ 26589948Simp 26689948Simp#define EXCA_MEM_WINS 5 26789948Simp 26889948Simp#define EXCA_MEM_SHIFT 12 26989948Simp#define EXCA_MEM_PAGESIZE (1<<EXCA_MEM_SHIFT) 27089948Simp 27189948Simp#define EXCA_SYSMEM_ADDRX_SHIFT EXCA_MEM_SHIFT 27289948Simp#define EXCA_SYSMEM_ADDRX_START_MSB_DATASIZE_MASK 0x80 27389948Simp#define EXCA_SYSMEM_ADDRX_START_MSB_DATASIZE_16BIT 0x80 27489948Simp#define EXCA_SYSMEM_ADDRX_START_MSB_DATASIZE_8BIT 0x00 27589948Simp#define EXCA_SYSMEM_ADDRX_START_MSB_ZEROWAIT 0x40 27689948Simp#define EXCA_SYSMEM_ADDRX_START_MSB_SCRATCH_MASK 0x30 27789948Simp#define EXCA_SYSMEM_ADDRX_START_MSB_ADDR_MASK 0x0F 27889948Simp 27989948Simp#define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT_MASK 0xC0 28089948Simp#define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT0 0x00 28189948Simp#define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT1 0x40 28289948Simp#define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT2 0x80 28389948Simp#define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT3 0xC0 28489948Simp#define EXCA_SYSMEM_ADDRX_STOP_MSB_ADDR_MASK 0x0F 28589948Simp 28689948Simp/* 28789948Simp * The card side of a memory mapping consists of bits A19-A12 of the card 28889948Simp * memory address in the LSB, and A25-A20 plus some other bits in the MSB. 28989948Simp * Again, the shift is 12 bits. 29089948Simp */ 29189948Simp 29289948Simp#define EXCA_CARDMEM_ADDRX_SHIFT EXCA_MEM_SHIFT 29389948Simp#define EXCA_CARDMEM_ADDRX_MSB_WP 0x80 29489948Simp#define EXCA_CARDMEM_ADDRX_MSB_REGACTIVE_MASK 0x40 29589948Simp#define EXCA_CARDMEM_ADDRX_MSB_REGACTIVE_ATTR 0x40 29689948Simp#define EXCA_CARDMEM_ADDRX_MSB_REGACTIVE_COMMON 0x00 29789948Simp#define EXCA_CARDMEM_ADDRX_MSB_ADDR_MASK 0x3F 29889948Simp 29989948Simp#define EXCA_SYSMEM_ADDR0_START_LSB 0x10 30089948Simp#define EXCA_SYSMEM_ADDR0_START_MSB 0x11 30189948Simp#define EXCA_SYSMEM_ADDR0_STOP_LSB 0x12 30289948Simp#define EXCA_SYSMEM_ADDR0_STOP_MSB 0x13 30389948Simp 30489948Simp#define EXCA_CARDMEM_ADDR0_LSB 0x14 30589948Simp#define EXCA_CARDMEM_ADDR0_MSB 0x15 30689948Simp 30789948Simp/* #define EXCA_RESERVED 0x17 */ 30889948Simp 30989948Simp#define EXCA_SYSMEM_ADDR1_START_LSB 0x18 31089948Simp#define EXCA_SYSMEM_ADDR1_START_MSB 0x19 31189948Simp#define EXCA_SYSMEM_ADDR1_STOP_LSB 0x1A 31289948Simp#define EXCA_SYSMEM_ADDR1_STOP_MSB 0x1B 31389948Simp 31489948Simp#define EXCA_CARDMEM_ADDR1_LSB 0x1C 31589948Simp#define EXCA_CARDMEM_ADDR1_MSB 0x1D 31689948Simp 31789948Simp#define EXCA_SYSMEM_ADDR2_START_LSB 0x20 31889948Simp#define EXCA_SYSMEM_ADDR2_START_MSB 0x21 31989948Simp#define EXCA_SYSMEM_ADDR2_STOP_LSB 0x22 32089948Simp#define EXCA_SYSMEM_ADDR2_STOP_MSB 0x23 32189948Simp 32289948Simp#define EXCA_CARDMEM_ADDR2_LSB 0x24 32389948Simp#define EXCA_CARDMEM_ADDR2_MSB 0x25 32489948Simp 32589948Simp/* #define EXCA_RESERVED 0x26 */ 32689948Simp/* #define EXCA_RESERVED 0x27 */ 32789948Simp 32889948Simp#define EXCA_SYSMEM_ADDR3_START_LSB 0x28 32989948Simp#define EXCA_SYSMEM_ADDR3_START_MSB 0x29 33089948Simp#define EXCA_SYSMEM_ADDR3_STOP_LSB 0x2A 33189948Simp#define EXCA_SYSMEM_ADDR3_STOP_MSB 0x2B 33289948Simp 33389948Simp#define EXCA_CARDMEM_ADDR3_LSB 0x2C 33489948Simp#define EXCA_CARDMEM_ADDR3_MSB 0x2D 33589948Simp 33689948Simp/* #define EXCA_RESERVED 0x2E */ 33789948Simp/* #define EXCA_RESERVED 0x2F */ 33889948Simp 33989948Simp#define EXCA_SYSMEM_ADDR4_START_LSB 0x30 34089948Simp#define EXCA_SYSMEM_ADDR4_START_MSB 0x31 34189948Simp#define EXCA_SYSMEM_ADDR4_STOP_LSB 0x32 34289948Simp#define EXCA_SYSMEM_ADDR4_STOP_MSB 0x33 34389948Simp 34489948Simp#define EXCA_CARDMEM_ADDR4_LSB 0x34 34589948Simp#define EXCA_CARDMEM_ADDR4_MSB 0x35 34689948Simp 34789948Simp/* #define EXCA_RESERVED 0x36 */ 34889948Simp/* #define EXCA_RESERVED 0x37 */ 34989948Simp/* #define EXCA_RESERVED 0x38 */ 35089948Simp/* #define EXCA_RESERVED 0x39 */ 35189948Simp/* #define EXCA_RESERVED 0x3A */ 35289948Simp/* #define EXCA_RESERVED 0x3B */ 35389948Simp/* #define EXCA_RESERVED 0x3C */ 35489948Simp/* #define EXCA_RESERVED 0x3D */ 35589948Simp/* #define EXCA_RESERVED 0x3E */ 35689948Simp/* #define EXCA_RESERVED 0x3F */ 35789948Simp 35889948Simp/* cardbus extensions - memory window page registers */ 35989948Simp 36089948Simp#define EXCA_MEMREG_WIN_SHIFT 24 36189948Simp#define EXCA_SYSMEM_ADDR0_WIN 0x40 36289948Simp#define EXCA_SYSMEM_ADDR1_WIN 0x41 36389948Simp#define EXCA_SYSMEM_ADDR2_WIN 0x42 36489948Simp#define EXCA_SYSMEM_ADDR3_WIN 0x43 36589948Simp#define EXCA_SYSMEM_ADDR4_WIN 0x44 36689948Simp 36789948Simp/* vendor-specific registers */ 36889948Simp 36989948Simp#define EXCA_INTEL_GLOBAL_CTL 0x1E /* RW */ 37089948Simp#define EXCA_INTEL_GLOBAL_CTL_RESERVED 0xF0 37189948Simp#define EXCA_INTEL_GLOBAL_CTL_IRQ14PULSE_ENABLE 0x08 37289948Simp#define EXCA_INTEL_GLOBAL_CTL_EXPLICIT_CSC_ACK 0x04 37389948Simp#define EXCA_INTEL_GLOBAL_CTL_IRQLEVEL_ENABLE 0x02 37489948Simp#define EXCA_INTEL_GLOBAL_CTL_POWERDOWN 0x01 37589948Simp 37689948Simp#define EXCA_CIRRUS_MISC_CTL_2 0x1E 37789948Simp#define EXCA_CIRRUS_MISC_CTL_2_SUSPEND 0x04 37889948Simp 37989948Simp#define EXCA_CIRRUS_CHIP_INFO 0x1F 38089948Simp#define EXCA_CIRRUS_CHIP_INFO_CHIP_ID 0xC0 38189948Simp#define EXCA_CIRRUS_CHIP_INFO_SLOTS 0x20 38289948Simp#define EXCA_CIRRUS_CHIP_INFO_REV 0x1F 38389948Simp 38489948Simp#define EXCA_CIRRUS_EXTENDED_INDEX 0x2E 38589948Simp#define EXCA_CIRRUS_EXTENDED_DATA 0x2F 38689948Simp#define EXCA_CIRRUS_EXT_CONTROL_1 0x03 38789948Simp#define EXCA_CIRRUS_EXT_CONTROL_1_PCI_INTR_MASK 0x18 38889948Simp 389110841Simp#define EXCA_VADEM_VMISC 0x3a 390110841Simp#define EXCA_VADEM_REV 0x40 391110841Simp#define EXCA_VADEM_COOKIE1 0x0E 392110841Simp#define EXCA_VADEM_COOKIE2 0x37 393110841Simp 394110841Simp#define EXCA_RICOH_ID 0x3a 395110841Simp#define EXCA_RID_296 0x32 396110841Simp#define EXCA_RID_396 0xb2 397110841Simp 39889948Simp/* Plug and play */ 39989948Simp#define EXCA_PNP_ACTIONTEC 0x1802A904 /* AEI0218 */ 40089948Simp#define EXCA_PNP_IBM3765 0x65374d24 /* IBM3765 */ 40189948Simp#define EXCA_PNP_82365 0x000ED041 /* PNP0E00 */ 40289948Simp#define EXCA_PNP_CL_PD6720 0x010ED041 /* PNP0E01 */ 40389948Simp#define EXCA_PNP_VLSI_82C146 0x020ED041 /* PNP0E02 */ 40489948Simp#define EXCA_PNP_82365_CARDBUS 0x030ED041 /* PNP0E03 */ 40589948Simp#define EXCA_PNP_SCM_SWAPBOX 0x69046d4c /* SMC0469 */ 40689948Simp 40789948Simp/* C-Bus PnP Definitions */ 40889948Simp#define EXCA_NEC_PC9801_102 0x9180a3b8 /* NEC8091 PC-9801-102 */ 40989948Simp#define EXCA_NEC_PC9821RA_E01 0x2181a3b8 /* NEC8121 PC-9821RA-E01 */ 41089948Simp 41189948Simp/* 41289948Simp * Mask of allowable interrupts. 41389948Simp * 41489948Simp * For IBM-AT machines, irqs 3, 4, 5, 7, 9, 10, 11, 12, 14, 15 are 41589948Simp * allowed. Nearly all IBM-AT machines with pcic cards or bridges 41689948Simp * wire these interrupts (or a subset thereof) to the corresponding 41789948Simp * pins on the ISA bus. Some older laptops are reported to not route 41889948Simp * all the interrupt pins to the bus because the designers knew that 41989948Simp * some would conflict with builtin devices. Older versions of Windows 42089948Simp * NT had a special device that would probe for conflicts early in the 42189948Simp * boot process and formulate a mapping table. Maybe we should do 42289948Simp * something similar. 42389948Simp * 42489948Simp * For NEC PC-98 machines, irq 3, 5, 6, 9, 10, 11, 12, 13 are allowed. 42589948Simp * These correspond to the C-BUS signals INT 0, 1, 2, 3, 41, 42, 5, 6 42689948Simp * respectively. 42789948Simp * 42889948Simp * Hiroshi TSUKADA-san writes in FreeBSD98-testers that CBUS INT 2 42989948Simp * (mapped to IRQ 6) is routed to the IRQ 7 pin of the pcic in pc98 43089948Simp * cbus add-in cards. He has confirmed this routing with a visual 43189948Simp * inspection of his card or a VOM. 43289948Simp */ 43389948Simp#ifdef PC98 43489948Simp#define EXCA_INT_MASK_ALLOWED 0x3E68 /* PC98 */ 43589948Simp#else 43689948Simp#define EXCA_INT_MASK_ALLOWED 0xDEB8 /* AT */ 43789948Simp#endif 438100703Simp 439100703Simp#endif /* !_SYS_DEV_EXCA_EXCAREG_H */ 440