• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * cs.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_CS_H
16 #define _LINUX_CS_H
17 
18 /* For AccessConfigurationRegister */
19 typedef struct conf_reg_t {
20     u_char	Function;
21     u_int	Action;
22     off_t	Offset;
23     u_int	Value;
24 } conf_reg_t;
25 
26 /* Actions */
27 #define CS_READ		1
28 #define CS_WRITE	2
29 
30 /* for AdjustResourceInfo */
31 /* Action field */
32 #define REMOVE_MANAGED_RESOURCE		1
33 #define ADD_MANAGED_RESOURCE		2
34 
35 
36 typedef struct event_callback_args_t {
37 	struct pcmcia_device	*client_handle;
38 	void			*client_data;
39 } event_callback_args_t;
40 
41 /* For CardValues field */
42 #define CV_OPTION_VALUE		0x01
43 #define CV_STATUS_VALUE		0x02
44 #define CV_PIN_REPLACEMENT	0x04
45 #define CV_COPY_VALUE		0x08
46 #define CV_EXT_STATUS		0x10
47 
48 /* For GetFirst/NextClient */
49 typedef struct client_req_t {
50     socket_t	Socket;
51     u_int	Attributes;
52 } client_req_t;
53 
54 #define CLIENT_THIS_SOCKET	0x01
55 
56 /* ModifyConfiguration */
57 typedef struct modconf_t {
58     u_int	Attributes;
59     u_int	Vcc, Vpp1, Vpp2;
60 } modconf_t;
61 
62 /* Attributes for ModifyConfiguration */
63 #define CONF_IRQ_CHANGE_VALID	0x0100
64 #define CONF_VCC_CHANGE_VALID	0x0200
65 #define CONF_VPP1_CHANGE_VALID	0x0400
66 #define CONF_VPP2_CHANGE_VALID	0x0800
67 #define CONF_IO_CHANGE_WIDTH	0x1000
68 
69 /* For RequestConfiguration */
70 typedef struct config_req_t {
71     u_int	Attributes;
72     u_int	Vpp; /* both Vpp1 and Vpp2 */
73     u_int	IntType;
74     u_int	ConfigBase;
75     u_char	Status, Pin, Copy, ExtStatus;
76     u_char	ConfigIndex;
77     u_int	Present;
78 } config_req_t;
79 
80 /* Attributes for RequestConfiguration */
81 #define CONF_ENABLE_IRQ		0x01
82 #define CONF_ENABLE_DMA		0x02
83 #define CONF_ENABLE_SPKR	0x04
84 #define CONF_VALID_CLIENT	0x100
85 
86 /* IntType field */
87 #define INT_MEMORY		0x01
88 #define INT_MEMORY_AND_IO	0x02
89 #define INT_CARDBUS		0x04
90 #define INT_ZOOMED_VIDEO	0x08
91 
92 /* For RequestIO and ReleaseIO */
93 typedef struct io_req_t {
94     u_int	BasePort1;
95     u_int	NumPorts1;
96     u_int	Attributes1;
97     u_int	BasePort2;
98     u_int	NumPorts2;
99     u_int	Attributes2;
100     u_int	IOAddrLines;
101 } io_req_t;
102 
103 /* Attributes for RequestIO and ReleaseIO */
104 #define IO_SHARED		0x01
105 #define IO_FIRST_SHARED		0x02
106 #define IO_FORCE_ALIAS_ACCESS	0x04
107 #define IO_DATA_PATH_WIDTH	0x18
108 #define IO_DATA_PATH_WIDTH_8	0x00
109 #define IO_DATA_PATH_WIDTH_16	0x08
110 #define IO_DATA_PATH_WIDTH_AUTO	0x10
111 
112 /* For RequestIRQ and ReleaseIRQ */
113 typedef struct irq_req_t {
114     u_int	Attributes;
115     u_int	AssignedIRQ;
116     u_int	IRQInfo1, IRQInfo2; /* IRQInfo2 is ignored */
117     void	*Handler;
118     void	*Instance;
119 } irq_req_t;
120 
121 /* Attributes for RequestIRQ and ReleaseIRQ */
122 #define IRQ_TYPE			0x03
123 #define IRQ_TYPE_EXCLUSIVE		0x00
124 #define IRQ_TYPE_TIME			0x01
125 #define IRQ_TYPE_DYNAMIC_SHARING	0x02
126 #define IRQ_FORCED_PULSE		0x04
127 #define IRQ_FIRST_SHARED		0x08
128 #define IRQ_HANDLE_PRESENT		0x10
129 #define IRQ_PULSE_ALLOCATED		0x100
130 
131 /* Bits in IRQInfo1 field */
132 #define IRQ_MASK		0x0f
133 #define IRQ_NMI_ID		0x01
134 #define IRQ_IOCK_ID		0x02
135 #define IRQ_BERR_ID		0x04
136 #define IRQ_VEND_ID		0x08
137 #define IRQ_INFO2_VALID		0x10
138 #define IRQ_LEVEL_ID		0x20
139 #define IRQ_PULSE_ID		0x40
140 #define IRQ_SHARE_ID		0x80
141 
142 typedef struct eventmask_t {
143     u_int	Attributes;
144     u_int	EventMask;
145 } eventmask_t;
146 
147 #define CONF_EVENT_MASK_VALID	0x01
148 
149 /* Configuration registers present */
150 #define PRESENT_OPTION		0x001
151 #define PRESENT_STATUS		0x002
152 #define PRESENT_PIN_REPLACE	0x004
153 #define PRESENT_COPY		0x008
154 #define PRESENT_EXT_STATUS	0x010
155 #define PRESENT_IOBASE_0	0x020
156 #define PRESENT_IOBASE_1	0x040
157 #define PRESENT_IOBASE_2	0x080
158 #define PRESENT_IOBASE_3	0x100
159 #define PRESENT_IOSIZE		0x200
160 
161 /* For GetMemPage, MapMemPage */
162 typedef struct memreq_t {
163     u_int	CardOffset;
164     page_t	Page;
165 } memreq_t;
166 
167 /* For ModifyWindow */
168 typedef struct modwin_t {
169     u_int	Attributes;
170     u_int	AccessSpeed;
171 } modwin_t;
172 
173 /* For RequestWindow */
174 typedef struct win_req_t {
175     u_int	Attributes;
176     u_long	Base;
177     u_int	Size;
178     u_int	AccessSpeed;
179 } win_req_t;
180 
181 /* Attributes for RequestWindow */
182 #define WIN_ADDR_SPACE		0x0001
183 #define WIN_ADDR_SPACE_MEM	0x0000
184 #define WIN_ADDR_SPACE_IO	0x0001
185 #define WIN_MEMORY_TYPE		0x0002
186 #define WIN_MEMORY_TYPE_CM	0x0000
187 #define WIN_MEMORY_TYPE_AM	0x0002
188 #define WIN_ENABLE		0x0004
189 #define WIN_DATA_WIDTH		0x0018
190 #define WIN_DATA_WIDTH_8	0x0000
191 #define WIN_DATA_WIDTH_16	0x0008
192 #define WIN_DATA_WIDTH_32	0x0010
193 #define WIN_PAGED		0x0020
194 #define WIN_SHARED		0x0040
195 #define WIN_FIRST_SHARED	0x0080
196 #define WIN_USE_WAIT		0x0100
197 #define WIN_STRICT_ALIGN	0x0200
198 #define WIN_MAP_BELOW_1MB	0x0400
199 #define WIN_PREFETCH		0x0800
200 #define WIN_CACHEABLE		0x1000
201 #define WIN_BAR_MASK		0xe000
202 #define WIN_BAR_SHIFT		13
203 
204 typedef struct error_info_t {
205     int		func;
206     int		retcode;
207 } error_info_t;
208 
209 /* Flag to bind to all functions */
210 #define BIND_FN_ALL	0xff
211 
212 /* Events */
213 #define CS_EVENT_PRI_LOW		0
214 #define CS_EVENT_PRI_HIGH		1
215 
216 #define CS_EVENT_WRITE_PROTECT		0x000001
217 #define CS_EVENT_CARD_LOCK		0x000002
218 #define CS_EVENT_CARD_INSERTION		0x000004
219 #define CS_EVENT_CARD_REMOVAL		0x000008
220 #define CS_EVENT_BATTERY_DEAD		0x000010
221 #define CS_EVENT_BATTERY_LOW		0x000020
222 #define CS_EVENT_READY_CHANGE		0x000040
223 #define CS_EVENT_CARD_DETECT		0x000080
224 #define CS_EVENT_RESET_REQUEST		0x000100
225 #define CS_EVENT_RESET_PHYSICAL		0x000200
226 #define CS_EVENT_CARD_RESET		0x000400
227 #define CS_EVENT_REGISTRATION_COMPLETE	0x000800
228 #define CS_EVENT_PM_SUSPEND		0x002000
229 #define CS_EVENT_PM_RESUME		0x004000
230 #define CS_EVENT_INSERTION_REQUEST	0x008000
231 #define CS_EVENT_EJECTION_REQUEST	0x010000
232 #define CS_EVENT_MTD_REQUEST		0x020000
233 #define CS_EVENT_ERASE_COMPLETE		0x040000
234 #define CS_EVENT_REQUEST_ATTENTION	0x080000
235 #define CS_EVENT_CB_DETECT		0x100000
236 #define CS_EVENT_3VCARD			0x200000
237 #define CS_EVENT_XVCARD			0x400000
238 
239 #endif /* _LINUX_CS_H */
240