186d7f5d3SJohn Marino /* $NetBSD: i82365reg.h,v 1.3 1998/12/20 17:53:28 nathanw Exp $ */ 286d7f5d3SJohn Marino /* $FreeBSD: src/sys/dev/exca/excareg.h,v 1.5 2005/01/06 01:42:40 imp Exp $ */ 386d7f5d3SJohn Marino 486d7f5d3SJohn Marino /*- 586d7f5d3SJohn Marino * Copyright (c) 2002 M Warner Losh. All rights reserved. 686d7f5d3SJohn Marino * 786d7f5d3SJohn Marino * Redistribution and use in source and binary forms, with or without 886d7f5d3SJohn Marino * modification, are permitted provided that the following conditions 986d7f5d3SJohn Marino * are met: 1086d7f5d3SJohn Marino * 1. Redistributions of source code must retain the above copyright 1186d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer. 1286d7f5d3SJohn Marino * 2. Redistributions in binary form must reproduce the above copyright 1386d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer in the 1486d7f5d3SJohn Marino * documentation and/or other materials provided with the distribution. 1586d7f5d3SJohn Marino * 1686d7f5d3SJohn Marino * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1786d7f5d3SJohn Marino * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1886d7f5d3SJohn Marino * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1986d7f5d3SJohn Marino * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2086d7f5d3SJohn Marino * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2186d7f5d3SJohn Marino * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2286d7f5d3SJohn Marino * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2386d7f5d3SJohn Marino * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2486d7f5d3SJohn Marino * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2586d7f5d3SJohn Marino * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2686d7f5d3SJohn Marino * 2786d7f5d3SJohn Marino * This software may be derived from NetBSD i82365.c and other files with 2886d7f5d3SJohn Marino * the following copyright: 2986d7f5d3SJohn Marino * 3086d7f5d3SJohn Marino * Copyright (c) 1997 Marc Horowitz. All rights reserved. 3186d7f5d3SJohn Marino * 3286d7f5d3SJohn Marino * Redistribution and use in source and binary forms, with or without 3386d7f5d3SJohn Marino * modification, are permitted provided that the following conditions 3486d7f5d3SJohn Marino * are met: 3586d7f5d3SJohn Marino * 1. Redistributions of source code must retain the above copyright 3686d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer. 3786d7f5d3SJohn Marino * 2. Redistributions in binary form must reproduce the above copyright 3886d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer in the 3986d7f5d3SJohn Marino * documentation and/or other materials provided with the distribution. 4086d7f5d3SJohn Marino * 3. All advertising materials mentioning features or use of this software 4186d7f5d3SJohn Marino * must display the following acknowledgement: 4286d7f5d3SJohn Marino * This product includes software developed by Marc Horowitz. 4386d7f5d3SJohn Marino * 4. The name of the author may not be used to endorse or promote products 4486d7f5d3SJohn Marino * derived from this software without specific prior written permission. 4586d7f5d3SJohn Marino * 4686d7f5d3SJohn Marino * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 4786d7f5d3SJohn Marino * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 4886d7f5d3SJohn Marino * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 4986d7f5d3SJohn Marino * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 5086d7f5d3SJohn Marino * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 5186d7f5d3SJohn Marino * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 5286d7f5d3SJohn Marino * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 5386d7f5d3SJohn Marino * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 5486d7f5d3SJohn Marino * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 5586d7f5d3SJohn Marino * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 5686d7f5d3SJohn Marino */ 5786d7f5d3SJohn Marino 5886d7f5d3SJohn Marino #ifndef _SYS_DEV_EXCA_EXCAREG_H 5986d7f5d3SJohn Marino #define _SYS_DEV_EXCA_EXCAREG_H 6086d7f5d3SJohn Marino 6186d7f5d3SJohn Marino /* 6286d7f5d3SJohn Marino * All information is from the intel 82365sl PC Card Interface Controller 6386d7f5d3SJohn Marino * (PCIC) data sheet, marked "preliminary". Order number 290423-002, January 6486d7f5d3SJohn Marino * 1993. 6586d7f5d3SJohn Marino */ 6686d7f5d3SJohn Marino 6786d7f5d3SJohn Marino #define EXCA_IOSIZE 2 6886d7f5d3SJohn Marino 6986d7f5d3SJohn Marino #define EXCA_REG_INDEX 0 7086d7f5d3SJohn Marino #define EXCA_REG_DATA 1 7186d7f5d3SJohn Marino 7286d7f5d3SJohn Marino #define EXCA_NSLOTS 4 /* 2 in 2 chips */ 7386d7f5d3SJohn Marino 7486d7f5d3SJohn Marino /* 7586d7f5d3SJohn Marino * I/o ports 7686d7f5d3SJohn Marino */ 7786d7f5d3SJohn Marino #define EXCA_INDEX0 0x3e0 7886d7f5d3SJohn Marino 7986d7f5d3SJohn Marino /* 8086d7f5d3SJohn Marino * The PCIC allows two chips to share the same address. In order not to run 8186d7f5d3SJohn Marino * afoul of the bsd device model, this driver will treat those chips as 8286d7f5d3SJohn Marino * the same device. 8386d7f5d3SJohn Marino */ 8486d7f5d3SJohn Marino 8586d7f5d3SJohn Marino #define EXCA_CHIP0_BASE 0x00 8686d7f5d3SJohn Marino #define EXCA_CHIP1_BASE 0x80 8786d7f5d3SJohn Marino 8886d7f5d3SJohn Marino /* Each PCIC chip can drive two sockets */ 8986d7f5d3SJohn Marino 9086d7f5d3SJohn Marino #define EXCA_SOCKET_SIZE 0x40 9186d7f5d3SJohn Marino #define EXCA_SOCKETA_INDEX 0x00 9286d7f5d3SJohn Marino #define EXCA_SOCKETB_INDEX EXCA_SOCKET_SIZE 9386d7f5d3SJohn Marino 9486d7f5d3SJohn Marino /* general setup registers */ 9586d7f5d3SJohn Marino 9686d7f5d3SJohn Marino #define EXCA_IDENT 0x00 /* RO */ 9786d7f5d3SJohn Marino #define EXCA_IDENT_IFTYPE_MASK 0xC0 9886d7f5d3SJohn Marino #define EXCA_IDENT_IFTYPE_IO_ONLY 0x00 9986d7f5d3SJohn Marino #define EXCA_IDENT_IFTYPE_MEM_ONLY 0x40 10086d7f5d3SJohn Marino #define EXCA_IDENT_IFTYPE_MEM_AND_IO 0x80 10186d7f5d3SJohn Marino #define EXCA_IDENT_IFTYPE_RESERVED 0xC0 10286d7f5d3SJohn Marino #define EXCA_IDENT_ZERO 0x30 10386d7f5d3SJohn Marino #define EXCA_IDENT_REV_MASK 0x0F 10486d7f5d3SJohn Marino #define EXCA_IDENT_REV_I82365SLR0 0x02 /* step a/b */ 10586d7f5d3SJohn Marino #define EXCA_IDENT_REV_I82365SLR1 0x03 /* step c */ 10686d7f5d3SJohn Marino #define EXCA_IDENT_REV_I82365SLDF 0x04 /* step df */ 10786d7f5d3SJohn Marino #define EXCA_IDENT_REV_IBM1 0x08 /* ibm clone */ 10886d7f5d3SJohn Marino #define EXCA_IDENT_REV_IBM2 0x09 /* ibm clone */ 10986d7f5d3SJohn Marino #define EXCA_IDENT_REV_IBM_KING 0x0a /* ibm king */ 11086d7f5d3SJohn Marino 11186d7f5d3SJohn Marino #define EXCA_IF_STATUS 0x01 /* RO */ 11286d7f5d3SJohn Marino #define EXCA_IF_STATUS_GPI 0x80 /* General Purpose Input */ 11386d7f5d3SJohn Marino #define EXCA_IF_STATUS_POWERACTIVE 0x40 11486d7f5d3SJohn Marino #define EXCA_IF_STATUS_READY 0x20 /* really READY/!BUSY */ 11586d7f5d3SJohn Marino #define EXCA_IF_STATUS_MEM_WP 0x10 11686d7f5d3SJohn Marino #define EXCA_IF_STATUS_CARDDETECT_MASK 0x0C 11786d7f5d3SJohn Marino #define EXCA_IF_STATUS_CARDDETECT_PRESENT 0x0C 11886d7f5d3SJohn Marino #define EXCA_IF_STATUS_BATTERY_MASK 0x03 11986d7f5d3SJohn Marino #define EXCA_IF_STATUS_BATTERY_DEAD1 0x00 12086d7f5d3SJohn Marino #define EXCA_IF_STATUS_BATTERY_DEAD2 0x01 12186d7f5d3SJohn Marino #define EXCA_IF_STATUS_BATTERY_WARNING 0x02 12286d7f5d3SJohn Marino #define EXCA_IF_STATUS_BATTERY_GOOD 0x03 12386d7f5d3SJohn Marino 12486d7f5d3SJohn Marino #define EXCA_PWRCTL 0x02 /* RW */ 12586d7f5d3SJohn Marino #define EXCA_PWRCTL_OE 0x80 /* output enable */ 12686d7f5d3SJohn Marino #define EXCA_PWRCTL_DISABLE_RESETDRV 0x40 12786d7f5d3SJohn Marino #define EXCA_PWRCTL_AUTOSWITCH_ENABLE 0x20 12886d7f5d3SJohn Marino #define EXCA_PWRCTL_PWR_ENABLE 0x10 12986d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP2_MASK 0x0C 13086d7f5d3SJohn Marino /* XXX these are a little unclear from the data sheet */ 13186d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP2_RESERVED 0x0C 13286d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP2_EN1 0x08 13386d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP2_EN0 0x04 13486d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP2_ENX 0x00 13586d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP1_MASK 0x03 13686d7f5d3SJohn Marino /* XXX these are a little unclear from the data sheet */ 13786d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP1_RESERVED 0x03 13886d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP1_EN1 0x02 13986d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP1_EN0 0x01 14086d7f5d3SJohn Marino #define EXCA_PWRCTL_VPP1_ENX 0x00 14186d7f5d3SJohn Marino 14286d7f5d3SJohn Marino #define EXCA_CSC 0x04 /* RW */ 14386d7f5d3SJohn Marino #define EXCA_CSC_ZERO 0xE0 14486d7f5d3SJohn Marino #define EXCA_CSC_GPI 0x10 14586d7f5d3SJohn Marino #define EXCA_CSC_CD 0x08 /* Card Detect Change */ 14686d7f5d3SJohn Marino #define EXCA_CSC_READY 0x04 14786d7f5d3SJohn Marino #define EXCA_CSC_BATTWARN 0x02 14886d7f5d3SJohn Marino #define EXCA_CSC_BATTDEAD 0x01 /* for memory cards */ 14986d7f5d3SJohn Marino #define EXCA_CSC_RI 0x01 /* for i/o cards */ 15086d7f5d3SJohn Marino 15186d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE 0x06 /* RW */ 15286d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE_IO1 0x80 15386d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE_IO0 0x40 15486d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE_MEMCS16 0x20 /* rtfds if you care */ 15586d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE_MEM4 0x10 15686d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE_MEM3 0x08 15786d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE_MEM2 0x04 15886d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE_MEM1 0x02 15986d7f5d3SJohn Marino #define EXCA_ADDRWIN_ENABLE_MEM0 0x01 16086d7f5d3SJohn Marino 16186d7f5d3SJohn Marino #define EXCA_CARD_DETECT 0x16 /* RW */ 16286d7f5d3SJohn Marino #define EXCA_CARD_DETECT_RESERVED 0xC0 16386d7f5d3SJohn Marino #define EXCA_CARD_DETECT_SW_INTR 0x20 16486d7f5d3SJohn Marino #define EXCA_CARD_DETECT_RESUME_ENABLE 0x10 16586d7f5d3SJohn Marino #define EXCA_CARD_DETECT_GPI_TRANSCTL 0x08 16686d7f5d3SJohn Marino #define EXCA_CARD_DETECT_GPI_ENABLE 0x04 16786d7f5d3SJohn Marino #define EXCA_CARD_DETECT_CFGRST_ENABLE 0x02 16886d7f5d3SJohn Marino #define EXCA_CARD_DETECT_MEMDLY_INHIBIT 0x01 16986d7f5d3SJohn Marino 17086d7f5d3SJohn Marino /* interrupt registers */ 17186d7f5d3SJohn Marino 17286d7f5d3SJohn Marino #define EXCA_INTR 0x03 /* RW */ 17386d7f5d3SJohn Marino #define EXCA_INTR_RI_ENABLE 0x80 17486d7f5d3SJohn Marino #define EXCA_INTR_RESET 0x40 /* active low (zero) */ 17586d7f5d3SJohn Marino #define EXCA_INTR_CARDTYPE_MASK 0x20 17686d7f5d3SJohn Marino #define EXCA_INTR_CARDTYPE_IO 0x20 17786d7f5d3SJohn Marino #define EXCA_INTR_CARDTYPE_MEM 0x00 17886d7f5d3SJohn Marino #define EXCA_INTR_ENABLE 0x10 17986d7f5d3SJohn Marino #define EXCA_INTR_IRQ_MASK 0x0F 18086d7f5d3SJohn Marino #define EXCA_INTR_IRQ_SHIFT 0 18186d7f5d3SJohn Marino #define EXCA_INTR_IRQ_NONE 0x00 18286d7f5d3SJohn Marino #define EXCA_INTR_IRQ_RESERVED1 0x01 18386d7f5d3SJohn Marino #define EXCA_INTR_IRQ_RESERVED2 0x02 18486d7f5d3SJohn Marino #define EXCA_INTR_IRQ3 0x03 18586d7f5d3SJohn Marino #define EXCA_INTR_IRQ4 0x04 18686d7f5d3SJohn Marino #define EXCA_INTR_IRQ5 0x05 18786d7f5d3SJohn Marino #define EXCA_INTR_IRQ_RESERVED6 0x06 18886d7f5d3SJohn Marino #define EXCA_INTR_IRQ7 0x07 18986d7f5d3SJohn Marino #define EXCA_INTR_IRQ_RESERVED8 0x08 19086d7f5d3SJohn Marino #define EXCA_INTR_IRQ9 0x09 19186d7f5d3SJohn Marino #define EXCA_INTR_IRQ10 0x0A 19286d7f5d3SJohn Marino #define EXCA_INTR_IRQ11 0x0B 19386d7f5d3SJohn Marino #define EXCA_INTR_IRQ12 0x0C 19486d7f5d3SJohn Marino #define EXCA_INTR_IRQ_RESERVED13 0x0D 19586d7f5d3SJohn Marino #define EXCA_INTR_IRQ14 0x0E 19686d7f5d3SJohn Marino #define EXCA_INTR_IRQ15 0x0F 19786d7f5d3SJohn Marino 19886d7f5d3SJohn Marino #define EXCA_INTR_IRQ_VALIDMASK 0xDEB8 /* 1101 1110 1011 1000 */ 19986d7f5d3SJohn Marino 20086d7f5d3SJohn Marino #define EXCA_CSC_INTR 0x05 /* RW */ 20186d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_MASK 0xF0 20286d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_SHIFT 4 20386d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_NONE 0x00 20486d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_RESERVED1 0x10 20586d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_RESERVED2 0x20 20686d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ3 0x30 20786d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ4 0x40 20886d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ5 0x50 20986d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_RESERVED6 0x60 21086d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ7 0x70 21186d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_RESERVED8 0x80 21286d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ9 0x90 21386d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ10 0xA0 21486d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ11 0xB0 21586d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ12 0xC0 21686d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_RESERVED13 0xD0 21786d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ14 0xE0 21886d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ15 0xF0 21986d7f5d3SJohn Marino #define EXCA_CSC_INTR_CD_ENABLE 0x08 22086d7f5d3SJohn Marino #define EXCA_CSC_INTR_READY_ENABLE 0x04 22186d7f5d3SJohn Marino #define EXCA_CSC_INTR_BATTWARN_ENABLE 0x02 22286d7f5d3SJohn Marino #define EXCA_CSC_INTR_BATTDEAD_ENABLE 0x01 /* for memory cards */ 22386d7f5d3SJohn Marino #define EXCA_CSC_INTR_RI_ENABLE 0x01 /* for I/O cards */ 22486d7f5d3SJohn Marino 22586d7f5d3SJohn Marino #define EXCA_CSC_INTR_IRQ_VALIDMASK 0xDEB8 /* 1101 1110 1011 1000 */ 22686d7f5d3SJohn Marino 22786d7f5d3SJohn Marino /* I/O registers */ 22886d7f5d3SJohn Marino 22986d7f5d3SJohn Marino #define EXCA_IO_WINS 2 23086d7f5d3SJohn Marino 23186d7f5d3SJohn Marino #define EXCA_IOCTL 0x07 /* RW */ 23286d7f5d3SJohn Marino #define EXCA_IOCTL_IO1_WAITSTATE 0x80 23386d7f5d3SJohn Marino #define EXCA_IOCTL_IO1_ZEROWAIT 0x40 23486d7f5d3SJohn Marino #define EXCA_IOCTL_IO1_IOCS16SRC_MASK 0x20 23586d7f5d3SJohn Marino #define EXCA_IOCTL_IO1_IOCS16SRC_CARD 0x20 23686d7f5d3SJohn Marino #define EXCA_IOCTL_IO1_IOCS16SRC_DATASIZE 0x00 23786d7f5d3SJohn Marino #define EXCA_IOCTL_IO1_DATASIZE_MASK 0x10 23886d7f5d3SJohn Marino #define EXCA_IOCTL_IO1_DATASIZE_16BIT 0x10 23986d7f5d3SJohn Marino #define EXCA_IOCTL_IO1_DATASIZE_8BIT 0x00 24086d7f5d3SJohn Marino #define EXCA_IOCTL_IO0_WAITSTATE 0x08 24186d7f5d3SJohn Marino #define EXCA_IOCTL_IO0_ZEROWAIT 0x04 24286d7f5d3SJohn Marino #define EXCA_IOCTL_IO0_IOCS16SRC_MASK 0x02 24386d7f5d3SJohn Marino #define EXCA_IOCTL_IO0_IOCS16SRC_CARD 0x02 24486d7f5d3SJohn Marino #define EXCA_IOCTL_IO0_IOCS16SRC_DATASIZE 0x00 24586d7f5d3SJohn Marino #define EXCA_IOCTL_IO0_DATASIZE_MASK 0x01 24686d7f5d3SJohn Marino #define EXCA_IOCTL_IO0_DATASIZE_16BIT 0x01 24786d7f5d3SJohn Marino #define EXCA_IOCTL_IO0_DATASIZE_8BIT 0x00 24886d7f5d3SJohn Marino 24986d7f5d3SJohn Marino #define EXCA_IOADDR0_START_LSB 0x08 25086d7f5d3SJohn Marino #define EXCA_IOADDR0_START_MSB 0x09 25186d7f5d3SJohn Marino #define EXCA_IOADDR0_STOP_LSB 0x0A 25286d7f5d3SJohn Marino #define EXCA_IOADDR0_STOP_MSB 0x0B 25386d7f5d3SJohn Marino #define EXCA_IOADDR1_START_LSB 0x0C 25486d7f5d3SJohn Marino #define EXCA_IOADDR1_START_MSB 0x0D 25586d7f5d3SJohn Marino #define EXCA_IOADDR1_STOP_LSB 0x0E 25686d7f5d3SJohn Marino #define EXCA_IOADDR1_STOP_MSB 0x0F 25786d7f5d3SJohn Marino 25886d7f5d3SJohn Marino /* memory registers */ 25986d7f5d3SJohn Marino 26086d7f5d3SJohn Marino /* 26186d7f5d3SJohn Marino * memory window addresses refer to bits A23-A12 of the ISA system memory 26286d7f5d3SJohn Marino * address. This is a shift of 12 bits. The LSB contains A19-A12, and the 26386d7f5d3SJohn Marino * MSB contains A23-A20, plus some other bits. 26486d7f5d3SJohn Marino */ 26586d7f5d3SJohn Marino 26686d7f5d3SJohn Marino #define EXCA_MEM_WINS 5 26786d7f5d3SJohn Marino 26886d7f5d3SJohn Marino #define EXCA_MEM_SHIFT 12 26986d7f5d3SJohn Marino #define EXCA_MEM_PAGESIZE (1<<EXCA_MEM_SHIFT) 27086d7f5d3SJohn Marino 27186d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_SHIFT EXCA_MEM_SHIFT 27286d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_START_MSB_DATASIZE_MASK 0x80 27386d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_START_MSB_DATASIZE_16BIT 0x80 27486d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_START_MSB_DATASIZE_8BIT 0x00 27586d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_START_MSB_ZEROWAIT 0x40 27686d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_START_MSB_SCRATCH_MASK 0x30 27786d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_START_MSB_ADDR_MASK 0x0F 27886d7f5d3SJohn Marino 27986d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT_MASK 0xC0 28086d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT0 0x00 28186d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT1 0x40 28286d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT2 0x80 28386d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_STOP_MSB_WAIT3 0xC0 28486d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDRX_STOP_MSB_ADDR_MASK 0x0F 28586d7f5d3SJohn Marino 28686d7f5d3SJohn Marino /* 28786d7f5d3SJohn Marino * The card side of a memory mapping consists of bits A19-A12 of the card 28886d7f5d3SJohn Marino * memory address in the LSB, and A25-A20 plus some other bits in the MSB. 28986d7f5d3SJohn Marino * Again, the shift is 12 bits. 29086d7f5d3SJohn Marino */ 29186d7f5d3SJohn Marino 29286d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDRX_SHIFT EXCA_MEM_SHIFT 29386d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDRX_MSB_WP 0x80 29486d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDRX_MSB_REGACTIVE_MASK 0x40 29586d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDRX_MSB_REGACTIVE_ATTR 0x40 29686d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDRX_MSB_REGACTIVE_COMMON 0x00 29786d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDRX_MSB_ADDR_MASK 0x3F 29886d7f5d3SJohn Marino 29986d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR0_START_LSB 0x10 30086d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR0_START_MSB 0x11 30186d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR0_STOP_LSB 0x12 30286d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR0_STOP_MSB 0x13 30386d7f5d3SJohn Marino 30486d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR0_LSB 0x14 30586d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR0_MSB 0x15 30686d7f5d3SJohn Marino 30786d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x17 */ 30886d7f5d3SJohn Marino 30986d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR1_START_LSB 0x18 31086d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR1_START_MSB 0x19 31186d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR1_STOP_LSB 0x1A 31286d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR1_STOP_MSB 0x1B 31386d7f5d3SJohn Marino 31486d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR1_LSB 0x1C 31586d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR1_MSB 0x1D 31686d7f5d3SJohn Marino 31786d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR2_START_LSB 0x20 31886d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR2_START_MSB 0x21 31986d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR2_STOP_LSB 0x22 32086d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR2_STOP_MSB 0x23 32186d7f5d3SJohn Marino 32286d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR2_LSB 0x24 32386d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR2_MSB 0x25 32486d7f5d3SJohn Marino 32586d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x26 */ 32686d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x27 */ 32786d7f5d3SJohn Marino 32886d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR3_START_LSB 0x28 32986d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR3_START_MSB 0x29 33086d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR3_STOP_LSB 0x2A 33186d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR3_STOP_MSB 0x2B 33286d7f5d3SJohn Marino 33386d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR3_LSB 0x2C 33486d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR3_MSB 0x2D 33586d7f5d3SJohn Marino 33686d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x2E */ 33786d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x2F */ 33886d7f5d3SJohn Marino 33986d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR4_START_LSB 0x30 34086d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR4_START_MSB 0x31 34186d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR4_STOP_LSB 0x32 34286d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR4_STOP_MSB 0x33 34386d7f5d3SJohn Marino 34486d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR4_LSB 0x34 34586d7f5d3SJohn Marino #define EXCA_CARDMEM_ADDR4_MSB 0x35 34686d7f5d3SJohn Marino 34786d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x36 */ 34886d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x37 */ 34986d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x38 */ 35086d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x39 */ 35186d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x3A */ 35286d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x3B */ 35386d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x3C */ 35486d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x3D */ 35586d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x3E */ 35686d7f5d3SJohn Marino /* #define EXCA_RESERVED 0x3F */ 35786d7f5d3SJohn Marino 35886d7f5d3SJohn Marino /* cardbus extensions - memory window page registers */ 35986d7f5d3SJohn Marino 36086d7f5d3SJohn Marino #define EXCA_MEMREG_WIN_SHIFT 24 36186d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR0_WIN 0x40 36286d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR1_WIN 0x41 36386d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR2_WIN 0x42 36486d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR3_WIN 0x43 36586d7f5d3SJohn Marino #define EXCA_SYSMEM_ADDR4_WIN 0x44 36686d7f5d3SJohn Marino 36786d7f5d3SJohn Marino /* vendor-specific registers */ 36886d7f5d3SJohn Marino 36986d7f5d3SJohn Marino #define EXCA_INTEL_GLOBAL_CTL 0x1E /* RW */ 37086d7f5d3SJohn Marino #define EXCA_INTEL_GLOBAL_CTL_RESERVED 0xF0 37186d7f5d3SJohn Marino #define EXCA_INTEL_GLOBAL_CTL_IRQ14PULSE_ENABLE 0x08 37286d7f5d3SJohn Marino #define EXCA_INTEL_GLOBAL_CTL_EXPLICIT_CSC_ACK 0x04 37386d7f5d3SJohn Marino #define EXCA_INTEL_GLOBAL_CTL_IRQLEVEL_ENABLE 0x02 37486d7f5d3SJohn Marino #define EXCA_INTEL_GLOBAL_CTL_POWERDOWN 0x01 37586d7f5d3SJohn Marino 37686d7f5d3SJohn Marino #define EXCA_CIRRUS_MISC_CTL_2 0x1E 37786d7f5d3SJohn Marino #define EXCA_CIRRUS_MISC_CTL_2_SUSPEND 0x04 37886d7f5d3SJohn Marino 37986d7f5d3SJohn Marino #define EXCA_CIRRUS_CHIP_INFO 0x1F 38086d7f5d3SJohn Marino #define EXCA_CIRRUS_CHIP_INFO_CHIP_ID 0xC0 38186d7f5d3SJohn Marino #define EXCA_CIRRUS_CHIP_INFO_SLOTS 0x20 38286d7f5d3SJohn Marino #define EXCA_CIRRUS_CHIP_INFO_REV 0x1F 38386d7f5d3SJohn Marino 38486d7f5d3SJohn Marino #define EXCA_CIRRUS_EXTENDED_INDEX 0x2E 38586d7f5d3SJohn Marino #define EXCA_CIRRUS_EXTENDED_DATA 0x2F 38686d7f5d3SJohn Marino #define EXCA_CIRRUS_EXT_CONTROL_1 0x03 38786d7f5d3SJohn Marino #define EXCA_CIRRUS_EXT_CONTROL_1_PCI_INTR_MASK 0x18 38886d7f5d3SJohn Marino 38986d7f5d3SJohn Marino #define EXCA_VADEM_VMISC 0x3a 39086d7f5d3SJohn Marino #define EXCA_VADEM_REV 0x40 39186d7f5d3SJohn Marino #define EXCA_VADEM_COOKIE1 0x0E 39286d7f5d3SJohn Marino #define EXCA_VADEM_COOKIE2 0x37 39386d7f5d3SJohn Marino 39486d7f5d3SJohn Marino #define EXCA_RICOH_ID 0x3a 39586d7f5d3SJohn Marino #define EXCA_RID_296 0x32 39686d7f5d3SJohn Marino #define EXCA_RID_396 0xb2 39786d7f5d3SJohn Marino 39886d7f5d3SJohn Marino /* 39986d7f5d3SJohn Marino * o2 micro specific registers 40086d7f5d3SJohn Marino */ 40186d7f5d3SJohn Marino #define EXCA_O2MICRO_CTRL_C 0x3a 40286d7f5d3SJohn Marino #define EXCA_O2CC_IREQ_INTC 0x80 40386d7f5d3SJohn Marino #define EXCA_O2CC_STSCHG_INTC 0x20 40486d7f5d3SJohn Marino 40586d7f5d3SJohn Marino /* Plug and play */ 40686d7f5d3SJohn Marino #define EXCA_PNP_ACTIONTEC 0x1802A904 /* AEI0218 */ 40786d7f5d3SJohn Marino #define EXCA_PNP_IBM3765 0x65374d24 /* IBM3765 */ 40886d7f5d3SJohn Marino #define EXCA_PNP_82365 0x000ED041 /* PNP0E00 */ 40986d7f5d3SJohn Marino #define EXCA_PNP_CL_PD6720 0x010ED041 /* PNP0E01 */ 41086d7f5d3SJohn Marino #define EXCA_PNP_VLSI_82C146 0x020ED041 /* PNP0E02 */ 41186d7f5d3SJohn Marino #define EXCA_PNP_82365_CARDBUS 0x030ED041 /* PNP0E03 */ 41286d7f5d3SJohn Marino #define EXCA_PNP_SCM_SWAPBOX 0x69046d4c /* SMC0469 */ 41386d7f5d3SJohn Marino 41486d7f5d3SJohn Marino /* 41586d7f5d3SJohn Marino * Mask of allowable interrupts. 41686d7f5d3SJohn Marino * 41786d7f5d3SJohn Marino * For IBM-AT machines, irqs 3, 4, 5, 7, 9, 10, 11, 12, 14, 15 are 41886d7f5d3SJohn Marino * allowed. Nearly all IBM-AT machines with pcic cards or bridges 41986d7f5d3SJohn Marino * wire these interrupts (or a subset thereof) to the corresponding 42086d7f5d3SJohn Marino * pins on the ISA bus. Some older laptops are reported to not route 42186d7f5d3SJohn Marino * all the interrupt pins to the bus because the designers knew that 42286d7f5d3SJohn Marino * some would conflict with builtin devices. Older versions of Windows 42386d7f5d3SJohn Marino * NT had a special device that would probe for conflicts early in the 42486d7f5d3SJohn Marino * boot process and formulate a mapping table. Maybe we should do 42586d7f5d3SJohn Marino * something similar. 42686d7f5d3SJohn Marino * 42786d7f5d3SJohn Marino * For NEC PC-98 machines, irq 3, 5, 6, 9, 10, 11, 12, 13 are allowed. 42886d7f5d3SJohn Marino * These correspond to the C-BUS signals INT 0, 1, 2, 3, 41, 42, 5, 6 42986d7f5d3SJohn Marino * respectively. 43086d7f5d3SJohn Marino * 43186d7f5d3SJohn Marino * Hiroshi TSUKADA-san writes in FreeBSD98-testers that CBUS INT 2 43286d7f5d3SJohn Marino * (mapped to IRQ 6) is routed to the IRQ 7 pin of the pcic in pc98 43386d7f5d3SJohn Marino * cbus add-in cards. He has confirmed this routing with a visual 43486d7f5d3SJohn Marino * inspection of his card or a VOM. 43586d7f5d3SJohn Marino */ 43686d7f5d3SJohn Marino #define EXCA_INT_MASK_ALLOWED 0xDEB8 /* AT */ 43786d7f5d3SJohn Marino 43886d7f5d3SJohn Marino #endif /* !_SYS_DEV_EXCA_EXCAREG_H */ 439