xref: /freebsd/sys/dev/cardbus/cardbusreg.h (revision daf1cffce2e07931f27c6c6998652e90df6ba87e)
1 /*
2  * Copyright (c) 1998 HAYAKAWA Koichi.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  * 3. All advertising materials mentioning features or use of this software
13  *    must display the following acknowledgement:
14  *	This product includes software developed by the author.
15  * 4. The name of the author may not be used to endorse or promote products
16  *    derived from this software without specific prior written permission.
17  *
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
23  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 /* $FreeBSD$ */
32 
33 typedef u_int32_t cardbusreg_t;
34 typedef int cardbus_intr_line_t;
35 
36 typedef void *cardbus_chipset_tag_t;
37 typedef int cardbus_intr_handle_t;
38 
39 typedef u_int16_t cardbus_vendor_id_t;
40 typedef u_int16_t cardbus_product_id_t;
41 
42 #define	CARDBUS_ID_REG			0x00
43 
44 #  define CARDBUS_VENDOR_SHIFT  0
45 #  define CARDBUS_VENDOR_MASK   0xffff
46 #  define CARDBUS_VENDOR(id) \
47 	    (((id) >> CARDBUS_VENDOR_SHIFT) & CARDBUS_VENDOR_MASK)
48 
49 #  define CARDBUS_PRODUCT_SHIFT  16
50 #  define CARDBUS_PRODUCT_MASK   0xffff
51 #  define CARDBUS_PRODUCT(id) \
52 	    (((id) >> CARDBUS_PRODUCT_SHIFT) & CARDBUS_PRODUCT_MASK)
53 
54 
55 #define	CARDBUS_COMMAND_STATUS_REG  0x04
56 
57 #  define CARDBUS_COMMAND_IO_ENABLE     0x00000001
58 #  define CARDBUS_COMMAND_MEM_ENABLE    0x00000002
59 #  define CARDBUS_COMMAND_MASTER_ENABLE 0x00000004
60 
61 
62 #define CARDBUS_CLASS_REG       0x08
63 
64 /* BIST, Header Type, Latency Timer, Cache Line Size */
65 #define CARDBUS_BHLC_REG        0x0c
66 
67 #define	CARDBUS_BIST_SHIFT        24
68 #define	CARDBUS_BIST_MASK       0xff
69 #define	CARDBUS_BIST(bhlcr) \
70 	    (((bhlcr) >> CARDBUS_BIST_SHIFT) & CARDBUS_BIST_MASK)
71 
72 #define	CARDBUS_HDRTYPE_SHIFT     16
73 #define	CARDBUS_HDRTYPE_MASK    0xff
74 #define	CARDBUS_HDRTYPE(bhlcr) \
75 	    (((bhlcr) >> CARDBUS_HDRTYPE_SHIFT) & CARDBUS_HDRTYPE_MASK)
76 
77 #define	CARDBUS_HDRTYPE_TYPE(bhlcr) \
78 	    (CARDBUS_HDRTYPE(bhlcr) & 0x7f)
79 #define	CARDBUS_HDRTYPE_MULTIFN(bhlcr) \
80 	    ((CARDBUS_HDRTYPE(bhlcr) & 0x80) != 0)
81 
82 #define	CARDBUS_LATTIMER_SHIFT      8
83 #define	CARDBUS_LATTIMER_MASK    0xff
84 #define	CARDBUS_LATTIMER(bhlcr) \
85 	    (((bhlcr) >> CARDBUS_LATTIMER_SHIFT) & CARDBUS_LATTIMER_MASK)
86 
87 #define	CARDBUS_CACHELINE_SHIFT     0
88 #define	CARDBUS_CACHELINE_MASK   0xff
89 #define	CARDBUS_CACHELINE(bhlcr) \
90 	    (((bhlcr) >> CARDBUS_CACHELINE_SHIFT) & CARDBUS_CACHELINE_MASK)
91 
92 
93 /* Base Resisters */
94 #define CARDBUS_BASE0_REG  0x10
95 #define CARDBUS_BASE1_REG  0x14
96 #define CARDBUS_BASE2_REG  0x18
97 #define CARDBUS_BASE3_REG  0x1C
98 #define CARDBUS_BASE4_REG  0x20
99 #define CARDBUS_BASE5_REG  0x24
100 #define CARDBUS_CIS_REG    0x28
101 #  define CARDBUS_CIS_ASIMASK 0x07
102 #  define CARDBUS_CIS_ADDRMASK 0x0ffffff8
103 
104 #define	CARDBUS_INTERRUPT_REG   0x3c
105 
106