1
2
3
4
5
6
7#ifndef LINUX_MOD_DEVICETABLE_H
8#define LINUX_MOD_DEVICETABLE_H
9
10#ifdef __KERNEL__
11#include <linux/types.h>
12typedef unsigned long kernel_ulong_t;
13#endif
14
15#define PCI_ANY_ID (~0)
16
17struct pci_device_id {
18 __u32 vendor, device;
19 __u32 subvendor, subdevice;
20 __u32 class, class_mask;
21 kernel_ulong_t driver_data;
22};
23
24
25#define IEEE1394_MATCH_VENDOR_ID 0x0001
26#define IEEE1394_MATCH_MODEL_ID 0x0002
27#define IEEE1394_MATCH_SPECIFIER_ID 0x0004
28#define IEEE1394_MATCH_VERSION 0x0008
29
30struct ieee1394_device_id {
31 __u32 match_flags;
32 __u32 vendor_id;
33 __u32 model_id;
34 __u32 specifier_id;
35 __u32 version;
36 kernel_ulong_t driver_data
37 __attribute__((aligned(sizeof(kernel_ulong_t))));
38};
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98struct usb_device_id {
99
100 __u16 match_flags;
101
102
103 __u16 idVendor;
104 __u16 idProduct;
105 __u16 bcdDevice_lo;
106 __u16 bcdDevice_hi;
107
108
109 __u8 bDeviceClass;
110 __u8 bDeviceSubClass;
111 __u8 bDeviceProtocol;
112
113
114 __u8 bInterfaceClass;
115 __u8 bInterfaceSubClass;
116 __u8 bInterfaceProtocol;
117
118
119 kernel_ulong_t driver_info;
120};
121
122
123#define USB_DEVICE_ID_MATCH_VENDOR 0x0001
124#define USB_DEVICE_ID_MATCH_PRODUCT 0x0002
125#define USB_DEVICE_ID_MATCH_DEV_LO 0x0004
126#define USB_DEVICE_ID_MATCH_DEV_HI 0x0008
127#define USB_DEVICE_ID_MATCH_DEV_CLASS 0x0010
128#define USB_DEVICE_ID_MATCH_DEV_SUBCLASS 0x0020
129#define USB_DEVICE_ID_MATCH_DEV_PROTOCOL 0x0040
130#define USB_DEVICE_ID_MATCH_INT_CLASS 0x0080
131#define USB_DEVICE_ID_MATCH_INT_SUBCLASS 0x0100
132#define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200
133
134
135struct ccw_device_id {
136 __u16 match_flags;
137
138 __u16 cu_type;
139 __u16 dev_type;
140 __u8 cu_model;
141 __u8 dev_model;
142
143 kernel_ulong_t driver_info;
144};
145
146#define CCW_DEVICE_ID_MATCH_CU_TYPE 0x01
147#define CCW_DEVICE_ID_MATCH_CU_MODEL 0x02
148#define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
149#define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
150
151
152struct ap_device_id {
153 __u16 match_flags;
154 __u8 dev_type;
155 __u8 pad1;
156 __u32 pad2;
157 kernel_ulong_t driver_info;
158};
159
160#define AP_DEVICE_ID_MATCH_DEVICE_TYPE 0x01
161
162#define ACPI_ID_LEN 16
163
164
165struct acpi_device_id {
166 __u8 id[ACPI_ID_LEN];
167 kernel_ulong_t driver_data;
168};
169
170#define PNP_ID_LEN 8
171#define PNP_MAX_DEVICES 8
172
173struct pnp_device_id {
174 __u8 id[PNP_ID_LEN];
175 kernel_ulong_t driver_data;
176};
177
178struct pnp_card_device_id {
179 __u8 id[PNP_ID_LEN];
180 kernel_ulong_t driver_data;
181 struct {
182 __u8 id[PNP_ID_LEN];
183 } devs[PNP_MAX_DEVICES];
184};
185
186
187#define SERIO_ANY 0xff
188
189struct serio_device_id {
190 __u8 type;
191 __u8 extra;
192 __u8 id;
193 __u8 proto;
194};
195
196
197
198
199struct of_device_id
200{
201 char name[32];
202 char type[32];
203 char compatible[128];
204#ifdef __KERNEL__
205 void *data;
206#else
207 kernel_ulong_t data;
208#endif
209};
210
211
212struct vio_device_id {
213 char type[32];
214 char compat[32];
215};
216
217
218
219struct pcmcia_device_id {
220 __u16 match_flags;
221
222 __u16 manf_id;
223 __u16 card_id;
224
225 __u8 func_id;
226
227
228 __u8 function;
229
230
231 __u8 device_no;
232
233 __u32 prod_id_hash[4]
234 __attribute__((aligned(sizeof(__u32))));
235
236
237#ifdef __KERNEL__
238 const char * prod_id[4];
239#else
240 kernel_ulong_t prod_id[4]
241 __attribute__((aligned(sizeof(kernel_ulong_t))));
242#endif
243
244
245 kernel_ulong_t driver_info;
246#ifdef __KERNEL__
247 char * cisfile;
248#else
249 kernel_ulong_t cisfile;
250#endif
251};
252
253#define PCMCIA_DEV_ID_MATCH_MANF_ID 0x0001
254#define PCMCIA_DEV_ID_MATCH_CARD_ID 0x0002
255#define PCMCIA_DEV_ID_MATCH_FUNC_ID 0x0004
256#define PCMCIA_DEV_ID_MATCH_FUNCTION 0x0008
257#define PCMCIA_DEV_ID_MATCH_PROD_ID1 0x0010
258#define PCMCIA_DEV_ID_MATCH_PROD_ID2 0x0020
259#define PCMCIA_DEV_ID_MATCH_PROD_ID3 0x0040
260#define PCMCIA_DEV_ID_MATCH_PROD_ID4 0x0080
261#define PCMCIA_DEV_ID_MATCH_DEVICE_NO 0x0100
262#define PCMCIA_DEV_ID_MATCH_FAKE_CIS 0x0200
263#define PCMCIA_DEV_ID_MATCH_ANONYMOUS 0x0400
264
265
266#define INPUT_DEVICE_ID_EV_MAX 0x1f
267#define INPUT_DEVICE_ID_KEY_MIN_INTERESTING 0x71
268#define INPUT_DEVICE_ID_KEY_MAX 0x1ff
269#define INPUT_DEVICE_ID_REL_MAX 0x0f
270#define INPUT_DEVICE_ID_ABS_MAX 0x3f
271#define INPUT_DEVICE_ID_MSC_MAX 0x07
272#define INPUT_DEVICE_ID_LED_MAX 0x0f
273#define INPUT_DEVICE_ID_SND_MAX 0x07
274#define INPUT_DEVICE_ID_FF_MAX 0x7f
275#define INPUT_DEVICE_ID_SW_MAX 0x0f
276
277#define INPUT_DEVICE_ID_MATCH_BUS 1
278#define INPUT_DEVICE_ID_MATCH_VENDOR 2
279#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
280#define INPUT_DEVICE_ID_MATCH_VERSION 8
281
282#define INPUT_DEVICE_ID_MATCH_EVBIT 0x0010
283#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x0020
284#define INPUT_DEVICE_ID_MATCH_RELBIT 0x0040
285#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x0080
286#define INPUT_DEVICE_ID_MATCH_MSCIT 0x0100
287#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x0200
288#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400
289#define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800
290#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
291
292struct input_device_id {
293
294 kernel_ulong_t flags;
295
296 __u16 bustype;
297 __u16 vendor;
298 __u16 product;
299 __u16 version;
300
301 kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
302 kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
303 kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
304 kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
305 kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
306 kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
307 kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
308 kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
309 kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
310
311 kernel_ulong_t driver_info;
312};
313
314
315
316#define EISA_SIG_LEN 8
317
318
319struct eisa_device_id {
320 char sig[EISA_SIG_LEN];
321 kernel_ulong_t driver_data;
322};
323
324#define EISA_DEVICE_MODALIAS_FMT "eisa:s%s"
325
326struct parisc_device_id {
327 __u8 hw_type;
328 __u8 hversion_rev;
329 __u16 hversion;
330 __u32 sversion;
331};
332
333#define PA_HWTYPE_ANY_ID 0xff
334#define PA_HVERSION_REV_ANY_ID 0xff
335#define PA_HVERSION_ANY_ID 0xffff
336#define PA_SVERSION_ANY_ID 0xffffffff
337
338
339
340#define SDIO_ANY_ID (~0)
341
342struct sdio_device_id {
343 __u8 class;
344 __u16 vendor;
345 __u16 device;
346 kernel_ulong_t driver_data;
347};
348
349
350struct ssb_device_id {
351 __u16 vendor;
352 __u16 coreid;
353 __u8 revision;
354};
355#define SSB_DEVICE(_vendor, _coreid, _revision) \
356 { .vendor = _vendor, .coreid = _coreid, .revision = _revision, }
357#define SSB_DEVTABLE_END \
358 { 0, },
359
360#define SSB_ANY_VENDOR 0xFFFF
361#define SSB_ANY_ID 0xFFFF
362#define SSB_ANY_REV 0xFF
363
364struct virtio_device_id {
365 __u32 device;
366 __u32 vendor;
367};
368#define VIRTIO_DEV_ANY_ID 0xffffffff
369
370#endif
371