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