blob: 4d7e4f9c6f7feee842dde5d7f232a6d8395569c2 [file] [log] [blame]
Nicholas Flintham1e3d3112013-04-10 10:48:38 +01001
2#ifndef LINUX_MOD_DEVICETABLE_H
3#define LINUX_MOD_DEVICETABLE_H
4
5#ifdef __KERNEL__
6#include <linux/types.h>
7typedef unsigned long kernel_ulong_t;
8#endif
9
10#define PCI_ANY_ID (~0)
11
12struct pci_device_id {
13 __u32 vendor, device;
14 __u32 subvendor, subdevice;
15 __u32 class, class_mask;
16 kernel_ulong_t driver_data;
17};
18
19
20#define IEEE1394_MATCH_VENDOR_ID 0x0001
21#define IEEE1394_MATCH_MODEL_ID 0x0002
22#define IEEE1394_MATCH_SPECIFIER_ID 0x0004
23#define IEEE1394_MATCH_VERSION 0x0008
24
25struct ieee1394_device_id {
26 __u32 match_flags;
27 __u32 vendor_id;
28 __u32 model_id;
29 __u32 specifier_id;
30 __u32 version;
31 kernel_ulong_t driver_data
32 __attribute__((aligned(sizeof(kernel_ulong_t))));
33};
34
35
36
37struct usb_device_id {
38
39 __u16 match_flags;
40
41
42 __u16 idVendor;
43 __u16 idProduct;
44 __u16 bcdDevice_lo;
45 __u16 bcdDevice_hi;
46
47
48 __u8 bDeviceClass;
49 __u8 bDeviceSubClass;
50 __u8 bDeviceProtocol;
51
52
53 __u8 bInterfaceClass;
54 __u8 bInterfaceSubClass;
55 __u8 bInterfaceProtocol;
56
57
58 kernel_ulong_t driver_info;
59};
60
61#define USB_DEVICE_ID_MATCH_VENDOR 0x0001
62#define USB_DEVICE_ID_MATCH_PRODUCT 0x0002
63#define USB_DEVICE_ID_MATCH_DEV_LO 0x0004
64#define USB_DEVICE_ID_MATCH_DEV_HI 0x0008
65#define USB_DEVICE_ID_MATCH_DEV_CLASS 0x0010
66#define USB_DEVICE_ID_MATCH_DEV_SUBCLASS 0x0020
67#define USB_DEVICE_ID_MATCH_DEV_PROTOCOL 0x0040
68#define USB_DEVICE_ID_MATCH_INT_CLASS 0x0080
69#define USB_DEVICE_ID_MATCH_INT_SUBCLASS 0x0100
70#define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200
71
72#define HID_ANY_ID (~0)
73
74struct hid_device_id {
75 __u16 bus;
76 __u16 pad1;
77 __u32 vendor;
78 __u32 product;
79 kernel_ulong_t driver_data
80 __attribute__((aligned(sizeof(kernel_ulong_t))));
81};
82
83struct ccw_device_id {
84 __u16 match_flags;
85
86 __u16 cu_type;
87 __u16 dev_type;
88 __u8 cu_model;
89 __u8 dev_model;
90
91 kernel_ulong_t driver_info;
92};
93
94#define CCW_DEVICE_ID_MATCH_CU_TYPE 0x01
95#define CCW_DEVICE_ID_MATCH_CU_MODEL 0x02
96#define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
97#define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
98
99struct ap_device_id {
100 __u16 match_flags;
101 __u8 dev_type;
102 __u8 pad1;
103 __u32 pad2;
104 kernel_ulong_t driver_info;
105};
106
107#define AP_DEVICE_ID_MATCH_DEVICE_TYPE 0x01
108
109struct css_device_id {
110 __u8 match_flags;
111 __u8 type;
112 __u16 pad2;
113 __u32 pad3;
114 kernel_ulong_t driver_data;
115};
116
117#define ACPI_ID_LEN 16
118
119
120struct acpi_device_id {
121 __u8 id[ACPI_ID_LEN];
122 kernel_ulong_t driver_data;
123};
124
125#define PNP_ID_LEN 8
126#define PNP_MAX_DEVICES 8
127
128struct pnp_device_id {
129 __u8 id[PNP_ID_LEN];
130 kernel_ulong_t driver_data;
131};
132
133struct pnp_card_device_id {
134 __u8 id[PNP_ID_LEN];
135 kernel_ulong_t driver_data;
136 struct {
137 __u8 id[PNP_ID_LEN];
138 } devs[PNP_MAX_DEVICES];
139};
140
141
142#define SERIO_ANY 0xff
143
144struct serio_device_id {
145 __u8 type;
146 __u8 extra;
147 __u8 id;
148 __u8 proto;
149};
150
151struct of_device_id
152{
153 char name[32];
154 char type[32];
155 char compatible[128];
156#ifdef __KERNEL__
157 void *data;
158#else
159 kernel_ulong_t data;
160#endif
161};
162
163struct vio_device_id {
164 char type[32];
165 char compat[32];
166};
167
168
169struct pcmcia_device_id {
170 __u16 match_flags;
171
172 __u16 manf_id;
173 __u16 card_id;
174
175 __u8 func_id;
176
177
178 __u8 function;
179
180
181 __u8 device_no;
182
183 __u32 prod_id_hash[4]
184 __attribute__((aligned(sizeof(__u32))));
185
186
187#ifdef __KERNEL__
188 const char * prod_id[4];
189#else
190 kernel_ulong_t prod_id[4]
191 __attribute__((aligned(sizeof(kernel_ulong_t))));
192#endif
193
194
195 kernel_ulong_t driver_info;
196#ifdef __KERNEL__
197 char * cisfile;
198#else
199 kernel_ulong_t cisfile;
200#endif
201};
202
203#define PCMCIA_DEV_ID_MATCH_MANF_ID 0x0001
204#define PCMCIA_DEV_ID_MATCH_CARD_ID 0x0002
205#define PCMCIA_DEV_ID_MATCH_FUNC_ID 0x0004
206#define PCMCIA_DEV_ID_MATCH_FUNCTION 0x0008
207#define PCMCIA_DEV_ID_MATCH_PROD_ID1 0x0010
208#define PCMCIA_DEV_ID_MATCH_PROD_ID2 0x0020
209#define PCMCIA_DEV_ID_MATCH_PROD_ID3 0x0040
210#define PCMCIA_DEV_ID_MATCH_PROD_ID4 0x0080
211#define PCMCIA_DEV_ID_MATCH_DEVICE_NO 0x0100
212#define PCMCIA_DEV_ID_MATCH_FAKE_CIS 0x0200
213#define PCMCIA_DEV_ID_MATCH_ANONYMOUS 0x0400
214
215#define INPUT_DEVICE_ID_EV_MAX 0x1f
216#define INPUT_DEVICE_ID_KEY_MIN_INTERESTING 0x71
217#define INPUT_DEVICE_ID_KEY_MAX 0x2ff
218#define INPUT_DEVICE_ID_REL_MAX 0x0f
219#define INPUT_DEVICE_ID_ABS_MAX 0x3f
220#define INPUT_DEVICE_ID_MSC_MAX 0x07
221#define INPUT_DEVICE_ID_LED_MAX 0x0f
222#define INPUT_DEVICE_ID_SND_MAX 0x07
223#define INPUT_DEVICE_ID_FF_MAX 0x7f
224#define INPUT_DEVICE_ID_SW_MAX 0x20
225
226#define INPUT_DEVICE_ID_MATCH_BUS 1
227#define INPUT_DEVICE_ID_MATCH_VENDOR 2
228#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
229#define INPUT_DEVICE_ID_MATCH_VERSION 8
230
231#define INPUT_DEVICE_ID_MATCH_EVBIT 0x0010
232#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x0020
233#define INPUT_DEVICE_ID_MATCH_RELBIT 0x0040
234#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x0080
235#define INPUT_DEVICE_ID_MATCH_MSCIT 0x0100
236#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x0200
237#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400
238#define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800
239#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
240
241struct input_device_id {
242
243 kernel_ulong_t flags;
244
245 __u16 bustype;
246 __u16 vendor;
247 __u16 product;
248 __u16 version;
249
250 kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
251 kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
252 kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
253 kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
254 kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
255 kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
256 kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
257 kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
258 kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
259
260 kernel_ulong_t driver_info;
261};
262
263
264#define EISA_SIG_LEN 8
265
266struct eisa_device_id {
267 char sig[EISA_SIG_LEN];
268 kernel_ulong_t driver_data;
269};
270
271#define EISA_DEVICE_MODALIAS_FMT "eisa:s%s"
272
273struct parisc_device_id {
274 __u8 hw_type;
275 __u8 hversion_rev;
276 __u16 hversion;
277 __u32 sversion;
278};
279
280#define PA_HWTYPE_ANY_ID 0xff
281#define PA_HVERSION_REV_ANY_ID 0xff
282#define PA_HVERSION_ANY_ID 0xffff
283#define PA_SVERSION_ANY_ID 0xffffffff
284
285
286#define SDIO_ANY_ID (~0)
287
288struct sdio_device_id {
289 __u8 class;
290 __u16 vendor;
291 __u16 device;
292 kernel_ulong_t driver_data
293 __attribute__((aligned(sizeof(kernel_ulong_t))));
294};
295
296struct ssb_device_id {
297 __u16 vendor;
298 __u16 coreid;
299 __u8 revision;
300};
301#define SSB_DEVICE(_vendor, _coreid, _revision) \
302 { .vendor = _vendor, .coreid = _coreid, .revision = _revision, }
303#define SSB_DEVTABLE_END \
304 { 0, },
305
306#define SSB_ANY_VENDOR 0xFFFF
307#define SSB_ANY_ID 0xFFFF
308#define SSB_ANY_REV 0xFF
309
310struct bcma_device_id {
311 __u16 manuf;
312 __u16 id;
313 __u8 rev;
314 __u8 class;
315};
316#define BCMA_CORE(_manuf, _id, _rev, _class) \
317 { .manuf = _manuf, .id = _id, .rev = _rev, .class = _class, }
318#define BCMA_CORETABLE_END \
319 { 0, },
320
321#define BCMA_ANY_MANUF 0xFFFF
322#define BCMA_ANY_ID 0xFFFF
323#define BCMA_ANY_REV 0xFF
324#define BCMA_ANY_CLASS 0xFF
325
326struct virtio_device_id {
327 __u32 device;
328 __u32 vendor;
329};
330#define VIRTIO_DEV_ANY_ID 0xffffffff
331
332struct hv_vmbus_device_id {
333 __u8 guid[16];
334 kernel_ulong_t driver_data
335 __attribute__((aligned(sizeof(kernel_ulong_t))));
336};
337
338
339#define RPMSG_NAME_SIZE 32
340#define RPMSG_DEVICE_MODALIAS_FMT "rpmsg:%s"
341
342struct rpmsg_device_id {
343 char name[RPMSG_NAME_SIZE];
344};
345
346
347#define I2C_NAME_SIZE 20
348#define I2C_MODULE_PREFIX "i2c:"
349
350struct i2c_device_id {
351 char name[I2C_NAME_SIZE];
352 kernel_ulong_t driver_data
353 __attribute__((aligned(sizeof(kernel_ulong_t))));
354};
355
356
357#define SPI_NAME_SIZE 32
358#define SPI_MODULE_PREFIX "spi:"
359
360struct spi_device_id {
361 char name[SPI_NAME_SIZE];
362 kernel_ulong_t driver_data
363 __attribute__((aligned(sizeof(kernel_ulong_t))));
364};
365
366#define SLIMBUS_NAME_SIZE 32
367#define SLIMBUS_MODULE_PREFIX "slim:"
368
369struct slim_device_id {
370 char name[SLIMBUS_NAME_SIZE];
371 kernel_ulong_t driver_data
372 __attribute__((aligned(sizeof(kernel_ulong_t))));
373};
374
375#define SPMI_NAME_SIZE 32
376#define SPMI_MODULE_PREFIX "spmi:"
377
378struct spmi_device_id {
379 char name[SPMI_NAME_SIZE];
380 kernel_ulong_t driver_data
381 __attribute__((aligned(sizeof(kernel_ulong_t))));
382};
383
384enum dmi_field {
385 DMI_NONE,
386 DMI_BIOS_VENDOR,
387 DMI_BIOS_VERSION,
388 DMI_BIOS_DATE,
389 DMI_SYS_VENDOR,
390 DMI_PRODUCT_NAME,
391 DMI_PRODUCT_VERSION,
392 DMI_PRODUCT_SERIAL,
393 DMI_PRODUCT_UUID,
394 DMI_BOARD_VENDOR,
395 DMI_BOARD_NAME,
396 DMI_BOARD_VERSION,
397 DMI_BOARD_SERIAL,
398 DMI_BOARD_ASSET_TAG,
399 DMI_CHASSIS_VENDOR,
400 DMI_CHASSIS_TYPE,
401 DMI_CHASSIS_VERSION,
402 DMI_CHASSIS_SERIAL,
403 DMI_CHASSIS_ASSET_TAG,
404 DMI_STRING_MAX,
405};
406
407struct dmi_strmatch {
408 unsigned char slot;
409 char substr[79];
410};
411
412#ifndef __KERNEL__
413struct dmi_system_id {
414 kernel_ulong_t callback;
415 kernel_ulong_t ident;
416 struct dmi_strmatch matches[4];
417 kernel_ulong_t driver_data
418 __attribute__((aligned(sizeof(kernel_ulong_t))));
419};
420#else
421struct dmi_system_id {
422 int (*callback)(const struct dmi_system_id *);
423 const char *ident;
424 struct dmi_strmatch matches[4];
425 void *driver_data;
426};
427#define dmi_device_id dmi_system_id
428#endif
429
430#define DMI_MATCH(a, b) { a, b }
431
432#define PLATFORM_NAME_SIZE 20
433#define PLATFORM_MODULE_PREFIX "platform:"
434
435struct platform_device_id {
436 char name[PLATFORM_NAME_SIZE];
437 kernel_ulong_t driver_data
438 __attribute__((aligned(sizeof(kernel_ulong_t))));
439};
440
441#define MDIO_MODULE_PREFIX "mdio:"
442
443#define MDIO_ID_FMT "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
444#define MDIO_ID_ARGS(_id) \
445 (_id)>>31, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1, \
446 ((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \
447 ((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \
448 ((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \
449 ((_id)>>15) & 1, ((_id)>>14) & 1, ((_id)>>13) & 1, ((_id)>>12) & 1, \
450 ((_id)>>11) & 1, ((_id)>>10) & 1, ((_id)>>9) & 1, ((_id)>>8) & 1, \
451 ((_id)>>7) & 1, ((_id)>>6) & 1, ((_id)>>5) & 1, ((_id)>>4) & 1, \
452 ((_id)>>3) & 1, ((_id)>>2) & 1, ((_id)>>1) & 1, (_id) & 1
453
454struct mdio_device_id {
455 __u32 phy_id;
456 __u32 phy_id_mask;
457};
458
459struct zorro_device_id {
460 __u32 id;
461 kernel_ulong_t driver_data;
462};
463
464#define ZORRO_WILDCARD (0xffffffff)
465
466#define ZORRO_DEVICE_MODALIAS_FMT "zorro:i%08X"
467
468#define ISAPNP_ANY_ID 0xffff
469struct isapnp_device_id {
470 unsigned short card_vendor, card_device;
471 unsigned short vendor, function;
472 kernel_ulong_t driver_data;
473};
474
475struct amba_id {
476 unsigned int id;
477 unsigned int mask;
478#ifndef __KERNEL__
479 kernel_ulong_t data;
480#else
481 void *data;
482#endif
483};
484
485
486struct x86_cpu_id {
487 __u16 vendor;
488 __u16 family;
489 __u16 model;
490 __u16 feature;
491 kernel_ulong_t driver_data;
492};
493
494#define X86_FEATURE_MATCH(x) \
495 { X86_VENDOR_ANY, X86_FAMILY_ANY, X86_MODEL_ANY, x }
496
497#define X86_VENDOR_ANY 0xffff
498#define X86_FAMILY_ANY 0
499#define X86_MODEL_ANY 0
500#define X86_FEATURE_ANY 0
501
502#endif