OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [mod_devicetable.h] - Blame information for rev 82

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * Device tables which are exported to userspace via
3
 * scripts/mod/file2alias.c.  You must keep that file in sync with this
4
 * header.
5
 */
6
 
7
#ifndef LINUX_MOD_DEVICETABLE_H
8
#define LINUX_MOD_DEVICETABLE_H
9
 
10
#ifdef __KERNEL__
11
#include <linux/types.h>
12
typedef unsigned long kernel_ulong_t;
13
#endif
14
 
15
#define PCI_ANY_ID (~0)
16
 
17
struct pci_device_id {
18
        __u32 vendor, device;           /* Vendor and device ID or PCI_ANY_ID*/
19
        __u32 subvendor, subdevice;     /* Subsystem ID's or PCI_ANY_ID */
20
        __u32 class, class_mask;        /* (class,subclass,prog-if) triplet */
21
        kernel_ulong_t driver_data;     /* Data private to the driver */
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
 
30
struct 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
 * Device table entry for "new style" table-driven USB drivers.
43
 * User mode code can read these tables to choose which modules to load.
44
 * Declare the table as a MODULE_DEVICE_TABLE.
45
 *
46
 * A probe() parameter will point to a matching entry from this table.
47
 * Use the driver_info field for each match to hold information tied
48
 * to that match:  device quirks, etc.
49
 *
50
 * Terminate the driver's table with an all-zeroes entry.
51
 * Use the flag values to control which fields are compared.
52
 */
53
 
54
/**
55
 * struct usb_device_id - identifies USB devices for probing and hotplugging
56
 * @match_flags: Bit mask controlling of the other fields are used to match
57
 *      against new devices.  Any field except for driver_info may be used,
58
 *      although some only make sense in conjunction with other fields.
59
 *      This is usually set by a USB_DEVICE_*() macro, which sets all
60
 *      other fields in this structure except for driver_info.
61
 * @idVendor: USB vendor ID for a device; numbers are assigned
62
 *      by the USB forum to its members.
63
 * @idProduct: Vendor-assigned product ID.
64
 * @bcdDevice_lo: Low end of range of vendor-assigned product version numbers.
65
 *      This is also used to identify individual product versions, for
66
 *      a range consisting of a single device.
67
 * @bcdDevice_hi: High end of version number range.  The range of product
68
 *      versions is inclusive.
69
 * @bDeviceClass: Class of device; numbers are assigned
70
 *      by the USB forum.  Products may choose to implement classes,
71
 *      or be vendor-specific.  Device classes specify behavior of all
72
 *      the interfaces on a devices.
73
 * @bDeviceSubClass: Subclass of device; associated with bDeviceClass.
74
 * @bDeviceProtocol: Protocol of device; associated with bDeviceClass.
75
 * @bInterfaceClass: Class of interface; numbers are assigned
76
 *      by the USB forum.  Products may choose to implement classes,
77
 *      or be vendor-specific.  Interface classes specify behavior only
78
 *      of a given interface; other interfaces may support other classes.
79
 * @bInterfaceSubClass: Subclass of interface; associated with bInterfaceClass.
80
 * @bInterfaceProtocol: Protocol of interface; associated with bInterfaceClass.
81
 * @driver_info: Holds information used by the driver.  Usually it holds
82
 *      a pointer to a descriptor understood by the driver, or perhaps
83
 *      device flags.
84
 *
85
 * In most cases, drivers will create a table of device IDs by using
86
 * USB_DEVICE(), or similar macros designed for that purpose.
87
 * They will then export it to userspace using MODULE_DEVICE_TABLE(),
88
 * and provide it to the USB core through their usb_driver structure.
89
 *
90
 * See the usb_match_id() function for information about how matches are
91
 * performed.  Briefly, you will normally use one of several macros to help
92
 * construct these entries.  Each entry you provide will either identify
93
 * one or more specific products, or will identify a class of products
94
 * which have agreed to behave the same.  You should put the more specific
95
 * matches towards the beginning of your table, so that driver_info can
96
 * record quirks of specific products.
97
 */
98
struct usb_device_id {
99
        /* which fields to match against? */
100
        __u16           match_flags;
101
 
102
        /* Used for product specific matches; range is inclusive */
103
        __u16           idVendor;
104
        __u16           idProduct;
105
        __u16           bcdDevice_lo;
106
        __u16           bcdDevice_hi;
107
 
108
        /* Used for device class matches */
109
        __u8            bDeviceClass;
110
        __u8            bDeviceSubClass;
111
        __u8            bDeviceProtocol;
112
 
113
        /* Used for interface class matches */
114
        __u8            bInterfaceClass;
115
        __u8            bInterfaceSubClass;
116
        __u8            bInterfaceProtocol;
117
 
118
        /* not matched against */
119
        kernel_ulong_t  driver_info;
120
};
121
 
122
/* Some useful macros to use to create struct usb_device_id */
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
/* s390 CCW devices */
135
struct ccw_device_id {
136
        __u16   match_flags;    /* which fields to match against */
137
 
138
        __u16   cu_type;        /* control unit type     */
139
        __u16   dev_type;       /* device type           */
140
        __u8    cu_model;       /* control unit model    */
141
        __u8    dev_model;      /* device 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
/* s390 AP bus devices */
152
struct ap_device_id {
153
        __u16 match_flags;      /* which fields to match against */
154
        __u8 dev_type;          /* device 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 /* only 9 bytes needed here, 16 bytes are used */
163
                           /* to workaround crosscompile issues */
164
 
165
struct 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
 
173
struct pnp_device_id {
174
        __u8 id[PNP_ID_LEN];
175
        kernel_ulong_t driver_data;
176
};
177
 
178
struct 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
 
189
struct serio_device_id {
190
        __u8 type;
191
        __u8 extra;
192
        __u8 id;
193
        __u8 proto;
194
};
195
 
196
/*
197
 * Struct used for matching a device
198
 */
199
struct 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
/* VIO */
212
struct vio_device_id {
213
        char type[32];
214
        char compat[32];
215
};
216
 
217
/* PCMCIA */
218
 
219
struct pcmcia_device_id {
220
        __u16           match_flags;
221
 
222
        __u16           manf_id;
223
        __u16           card_id;
224
 
225
        __u8            func_id;
226
 
227
        /* for real multi-function devices */
228
        __u8            function;
229
 
230
        /* for pseudo multi-function devices */
231
        __u8            device_no;
232
 
233
        __u32           prod_id_hash[4]
234
                __attribute__((aligned(sizeof(__u32))));
235
 
236
        /* not matched against in kernelspace*/
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
        /* not matched against */
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
/* Input */
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
 
292
struct 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
/* EISA */
315
 
316
#define EISA_SIG_LEN   8
317
 
318
/* The EISA signature, in ASCII form, null terminated */
319
struct 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
 
326
struct parisc_device_id {
327
        __u8    hw_type;        /* 5 bits used */
328
        __u8    hversion_rev;   /* 4 bits */
329
        __u16   hversion;       /* 12 bits */
330
        __u32   sversion;       /* 20 bits */
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
/* SDIO */
339
 
340
#define SDIO_ANY_ID (~0)
341
 
342
struct sdio_device_id {
343
        __u8    class;                  /* Standard interface or SDIO_ANY_ID */
344
        __u16   vendor;                 /* Vendor or SDIO_ANY_ID */
345
        __u16   device;                 /* Device ID or SDIO_ANY_ID */
346
        kernel_ulong_t driver_data;     /* Data private to the driver */
347
};
348
 
349
/* SSB core, see drivers/ssb/ */
350
struct 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
 
364
struct virtio_device_id {
365
        __u32 device;
366
        __u32 vendor;
367
};
368
#define VIRTIO_DEV_ANY_ID       0xffffffff
369
 
370
#endif /* LINUX_MOD_DEVICETABLE_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.