xref: /dflybsd-src/sys/dev/pccard/exca/excareg.h (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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