x86/amd-iommu: Add per IOMMU reference counting
[linux/fpc-iii.git] / include / pcmcia / cs.h
blob904468a191ef43c46c8a7fa091967a4f9f09e1c5
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 /* 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;
26 /* Actions */
27 #define CS_READ 1
28 #define CS_WRITE 2
30 /* for AdjustResourceInfo */
31 /* Action field */
32 #define REMOVE_MANAGED_RESOURCE 1
33 #define ADD_MANAGED_RESOURCE 2
36 typedef struct event_callback_args_t {
37 struct pcmcia_device *client_handle;
38 void *client_data;
39 } event_callback_args_t;
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
48 /* For GetFirst/NextClient */
49 typedef struct client_req_t {
50 socket_t Socket;
51 u_int Attributes;
52 } client_req_t;
54 #define CLIENT_THIS_SOCKET 0x01
56 /* ModifyConfiguration */
57 typedef struct modconf_t {
58 u_int Attributes;
59 u_int Vcc, Vpp1, Vpp2;
60 } modconf_t;
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
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;
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
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
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;
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
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;
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
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
142 typedef struct eventmask_t {
143 u_int Attributes;
144 u_int EventMask;
145 } eventmask_t;
147 #define CONF_EVENT_MASK_VALID 0x01
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
161 /* For GetMemPage, MapMemPage */
162 typedef struct memreq_t {
163 u_int CardOffset;
164 page_t Page;
165 } memreq_t;
167 /* For ModifyWindow */
168 typedef struct modwin_t {
169 u_int Attributes;
170 u_int AccessSpeed;
171 } modwin_t;
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;
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
204 typedef struct error_info_t {
205 int func;
206 int retcode;
207 } error_info_t;
209 /* Flag to bind to all functions */
210 #define BIND_FN_ALL 0xff
212 /* Events */
213 #define CS_EVENT_PRI_LOW 0
214 #define CS_EVENT_PRI_HIGH 1
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
239 #endif /* _LINUX_CS_H */