1 /*
2  * cisreg.h
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * The initial developer of the original code is David A. Hinds
9  * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
10  * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
11  *
12  * (C) 1999             David A. Hinds
13  */
14 
15 #ifndef _LINUX_CISREG_H
16 #define _LINUX_CISREG_H
17 
18 /*
19  * Offsets from ConfigBase for CIS registers
20  */
21 #define CISREG_COR		0x00
22 #define CISREG_CCSR		0x02
23 #define CISREG_PRR		0x04
24 #define CISREG_SCR		0x06
25 #define CISREG_ESR		0x08
26 #define CISREG_IOBASE_0		0x0a
27 #define CISREG_IOBASE_1		0x0c
28 #define CISREG_IOBASE_2		0x0e
29 #define CISREG_IOBASE_3		0x10
30 #define CISREG_IOSIZE		0x12
31 
32 /*
33  * Configuration Option Register
34  */
35 #define COR_CONFIG_MASK		0x3f
36 #define COR_MFC_CONFIG_MASK	0x38
37 #define COR_FUNC_ENA		0x01
38 #define COR_ADDR_DECODE		0x02
39 #define COR_IREQ_ENA		0x04
40 #define COR_LEVEL_REQ		0x40
41 #define COR_SOFT_RESET		0x80
42 
43 /*
44  * Card Configuration and Status Register
45  */
46 #define CCSR_INTR_ACK		0x01
47 #define CCSR_INTR_PENDING	0x02
48 #define CCSR_POWER_DOWN		0x04
49 #define CCSR_AUDIO_ENA		0x08
50 #define CCSR_IOIS8		0x20
51 #define CCSR_SIGCHG_ENA		0x40
52 #define CCSR_CHANGED		0x80
53 
54 /*
55  * Pin Replacement Register
56  */
57 #define PRR_WP_STATUS		0x01
58 #define PRR_READY_STATUS	0x02
59 #define PRR_BVD2_STATUS		0x04
60 #define PRR_BVD1_STATUS		0x08
61 #define PRR_WP_EVENT		0x10
62 #define PRR_READY_EVENT		0x20
63 #define PRR_BVD2_EVENT		0x40
64 #define PRR_BVD1_EVENT		0x80
65 
66 /*
67  * Socket and Copy Register
68  */
69 #define SCR_SOCKET_NUM		0x0f
70 #define SCR_COPY_NUM		0x70
71 
72 /*
73  * Extended Status Register
74  */
75 #define ESR_REQ_ATTN_ENA	0x01
76 #define ESR_REQ_ATTN		0x10
77 
78 /*
79  * CardBus Function Status Registers
80  */
81 #define CBFN_EVENT		0x00
82 #define CBFN_MASK		0x04
83 #define CBFN_STATE		0x08
84 #define CBFN_FORCE		0x0c
85 
86 /*
87  * These apply to all the CardBus function registers
88  */
89 #define CBFN_WP			0x0001
90 #define CBFN_READY		0x0002
91 #define CBFN_BVD2		0x0004
92 #define CBFN_BVD1		0x0008
93 #define CBFN_GWAKE		0x0010
94 #define CBFN_INTR		0x8000
95 
96 /*
97  * Extra bits in the Function Event Mask Register
98  */
99 #define FEMR_BAM_ENA		0x0020
100 #define FEMR_PWM_ENA		0x0040
101 #define FEMR_WKUP_MASK		0x4000
102 
103 /*
104  * Indirect Addressing Registers for Zoomed Video: these are addresses
105  * in common memory space
106  */
107 #define CISREG_ICTRL0		0x02	/* control registers */
108 #define CISREG_ICTRL1		0x03
109 #define CISREG_IADDR0		0x04	/* address registers */
110 #define CISREG_IADDR1		0x05
111 #define CISREG_IADDR2		0x06
112 #define CISREG_IADDR3		0x07
113 #define CISREG_IDATA0		0x08	/* data registers */
114 #define CISREG_IDATA1		0x09
115 
116 #define ICTRL0_COMMON		0x01
117 #define ICTRL0_AUTOINC		0x02
118 #define ICTRL0_BYTEGRAN		0x04
119 
120 #endif /* _LINUX_CISREG_H */
121