Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | /* |
2 | * Device tables which are exported to userspace via |
||
3 | * scripts/table2alias.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 | }; |
||
38 | |||
39 | |||
40 | /* |
||
41 | * Device table entry for "new style" table-driven USB drivers. |
||
42 | * User mode code can read these tables to choose which modules to load. |
||
43 | * Declare the table as a MODULE_DEVICE_TABLE. |
||
44 | * |
||
45 | * A probe() parameter will point to a matching entry from this table. |
||
46 | * Use the driver_info field for each match to hold information tied |
||
47 | * to that match: device quirks, etc. |
||
48 | * |
||
49 | * Terminate the driver's table with an all-zeroes entry. |
||
50 | * Use the flag values to control which fields are compared. |
||
51 | */ |
||
52 | |||
53 | /** |
||
54 | * struct usb_device_id - identifies USB devices for probing and hotplugging |
||
55 | * @match_flags: Bit mask controlling of the other fields are used to match |
||
56 | * against new devices. Any field except for driver_info may be used, |
||
57 | * although some only make sense in conjunction with other fields. |
||
58 | * This is usually set by a USB_DEVICE_*() macro, which sets all |
||
59 | * other fields in this structure except for driver_info. |
||
60 | * @idVendor: USB vendor ID for a device; numbers are assigned |
||
61 | * by the USB forum to its members. |
||
62 | * @idProduct: Vendor-assigned product ID. |
||
63 | * @bcdDevice_lo: Low end of range of vendor-assigned product version numbers. |
||
64 | * This is also used to identify individual product versions, for |
||
65 | * a range consisting of a single device. |
||
66 | * @bcdDevice_hi: High end of version number range. The range of product |
||
67 | * versions is inclusive. |
||
68 | * @bDeviceClass: Class of device; numbers are assigned |
||
69 | * by the USB forum. Products may choose to implement classes, |
||
70 | * or be vendor-specific. Device classes specify behavior of all |
||
71 | * the interfaces on a devices. |
||
72 | * @bDeviceSubClass: Subclass of device; associated with bDeviceClass. |
||
73 | * @bDeviceProtocol: Protocol of device; associated with bDeviceClass. |
||
74 | * @bInterfaceClass: Class of interface; numbers are assigned |
||
75 | * by the USB forum. Products may choose to implement classes, |
||
76 | * or be vendor-specific. Interface classes specify behavior only |
||
77 | * of a given interface; other interfaces may support other classes. |
||
78 | * @bInterfaceSubClass: Subclass of interface; associated with bInterfaceClass. |
||
79 | * @bInterfaceProtocol: Protocol of interface; associated with bInterfaceClass. |
||
80 | * @driver_info: Holds information used by the driver. Usually it holds |
||
81 | * a pointer to a descriptor understood by the driver, or perhaps |
||
82 | * device flags. |
||
83 | * |
||
84 | * In most cases, drivers will create a table of device IDs by using |
||
85 | * USB_DEVICE(), or similar macros designed for that purpose. |
||
86 | * They will then export it to userspace using MODULE_DEVICE_TABLE(), |
||
87 | * and provide it to the USB core through their usb_driver structure. |
||
88 | * |
||
89 | * See the usb_match_id() function for information about how matches are |
||
90 | * performed. Briefly, you will normally use one of several macros to help |
||
91 | * construct these entries. Each entry you provide will either identify |
||
92 | * one or more specific products, or will identify a class of products |
||
93 | * which have agreed to behave the same. You should put the more specific |
||
94 | * matches towards the beginning of your table, so that driver_info can |
||
95 | * record quirks of specific products. |
||
96 | */ |
||
97 | struct usb_device_id { |
||
98 | /* which fields to match against? */ |
||
99 | __u16 match_flags; |
||
100 | |||
101 | /* Used for product specific matches; range is inclusive */ |
||
102 | __u16 idVendor; |
||
103 | __u16 idProduct; |
||
104 | __u16 bcdDevice_lo; |
||
105 | __u16 bcdDevice_hi; |
||
106 | |||
107 | /* Used for device class matches */ |
||
108 | __u8 bDeviceClass; |
||
109 | __u8 bDeviceSubClass; |
||
110 | __u8 bDeviceProtocol; |
||
111 | |||
112 | /* Used for interface class matches */ |
||
113 | __u8 bInterfaceClass; |
||
114 | __u8 bInterfaceSubClass; |
||
115 | __u8 bInterfaceProtocol; |
||
116 | |||
117 | /* not matched against */ |
||
118 | kernel_ulong_t driver_info; |
||
119 | }; |
||
120 | |||
121 | /* Some useful macros to use to create struct usb_device_id */ |
||
122 | #define USB_DEVICE_ID_MATCH_VENDOR 0x0001 |
||
123 | #define USB_DEVICE_ID_MATCH_PRODUCT 0x0002 |
||
124 | #define USB_DEVICE_ID_MATCH_DEV_LO 0x0004 |
||
125 | #define USB_DEVICE_ID_MATCH_DEV_HI 0x0008 |
||
126 | #define USB_DEVICE_ID_MATCH_DEV_CLASS 0x0010 |
||
127 | #define USB_DEVICE_ID_MATCH_DEV_SUBCLASS 0x0020 |
||
128 | #define USB_DEVICE_ID_MATCH_DEV_PROTOCOL 0x0040 |
||
129 | #define USB_DEVICE_ID_MATCH_INT_CLASS 0x0080 |
||
130 | #define USB_DEVICE_ID_MATCH_INT_SUBCLASS 0x0100 |
||
131 | #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 |
||
132 | |||
133 | /* s390 CCW devices */ |
||
134 | struct ccw_device_id { |
||
135 | __u16 match_flags; /* which fields to match against */ |
||
136 | |||
137 | __u16 cu_type; /* control unit type */ |
||
138 | __u16 dev_type; /* device type */ |
||
139 | __u8 cu_model; /* control unit model */ |
||
140 | __u8 dev_model; /* device model */ |
||
141 | |||
142 | kernel_ulong_t driver_info; |
||
143 | }; |
||
144 | |||
145 | #define CCW_DEVICE_ID_MATCH_CU_TYPE 0x01 |
||
146 | #define CCW_DEVICE_ID_MATCH_CU_MODEL 0x02 |
||
147 | #define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04 |
||
148 | #define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08 |
||
149 | |||
150 | |||
151 | #endif /* LINUX_MOD_DEVICETABLE_H */ |