1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Device tables which are exported to userspace via 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * scripts/mod/file2alias.c. You must keep that file in sync with this 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * header. 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef LINUX_MOD_DEVICETABLE_H 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define LINUX_MOD_DEVICETABLE_H 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__ 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/types.h> 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned long kernel_ulong_t; 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCI_ANY_ID (~0) 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct pci_device_id { 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */ 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 class, class_mask; /* (class,subclass,prog-if) triplet */ 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t driver_data; /* Data private to the driver */ 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define IEEE1394_MATCH_VENDOR_ID 0x0001 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define IEEE1394_MATCH_MODEL_ID 0x0002 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define IEEE1394_MATCH_SPECIFIER_ID 0x0004 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define IEEE1394_MATCH_VERSION 0x0008 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct ieee1394_device_id { 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 match_flags; 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 vendor_id; 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 model_id; 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 specifier_id; 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 version; 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t driver_data 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __attribute__((aligned(sizeof(kernel_ulong_t)))); 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Device table entry for "new style" table-driven USB drivers. 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * User mode code can read these tables to choose which modules to load. 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Declare the table as a MODULE_DEVICE_TABLE. 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * A probe() parameter will point to a matching entry from this table. 47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Use the driver_info field for each match to hold information tied 48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * to that match: device quirks, etc. 49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Terminate the driver's table with an all-zeroes entry. 51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Use the flag values to control which fields are compared. 52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/** 55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * struct usb_device_id - identifies USB devices for probing and hotplugging 56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @match_flags: Bit mask controlling of the other fields are used to match 57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * against new devices. Any field except for driver_info may be used, 58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * although some only make sense in conjunction with other fields. 59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This is usually set by a USB_DEVICE_*() macro, which sets all 60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * other fields in this structure except for driver_info. 61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @idVendor: USB vendor ID for a device; numbers are assigned 62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * by the USB forum to its members. 63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @idProduct: Vendor-assigned product ID. 64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @bcdDevice_lo: Low end of range of vendor-assigned product version numbers. 65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This is also used to identify individual product versions, for 66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * a range consisting of a single device. 67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @bcdDevice_hi: High end of version number range. The range of product 68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * versions is inclusive. 69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @bDeviceClass: Class of device; numbers are assigned 70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * by the USB forum. Products may choose to implement classes, 71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * or be vendor-specific. Device classes specify behavior of all 72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * the interfaces on a devices. 73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @bDeviceSubClass: Subclass of device; associated with bDeviceClass. 74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @bDeviceProtocol: Protocol of device; associated with bDeviceClass. 75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @bInterfaceClass: Class of interface; numbers are assigned 76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * by the USB forum. Products may choose to implement classes, 77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * or be vendor-specific. Interface classes specify behavior only 78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * of a given interface; other interfaces may support other classes. 79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @bInterfaceSubClass: Subclass of interface; associated with bInterfaceClass. 80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @bInterfaceProtocol: Protocol of interface; associated with bInterfaceClass. 81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * @driver_info: Holds information used by the driver. Usually it holds 82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * a pointer to a descriptor understood by the driver, or perhaps 83c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * device flags. 84c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 85c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * In most cases, drivers will create a table of device IDs by using 86c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * USB_DEVICE(), or similar macros designed for that purpose. 87c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * They will then export it to userspace using MODULE_DEVICE_TABLE(), 88c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * and provide it to the USB core through their usb_driver structure. 89c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 90c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * See the usb_match_id() function for information about how matches are 91c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * performed. Briefly, you will normally use one of several macros to help 92c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * construct these entries. Each entry you provide will either identify 93c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * one or more specific products, or will identify a class of products 94c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * which have agreed to behave the same. You should put the more specific 95c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * matches towards the beginning of your table, so that driver_info can 96c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * record quirks of specific products. 97c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 98c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct usb_device_id { 99c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* which fields to match against? */ 100c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 match_flags; 101c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 102c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* Used for product specific matches; range is inclusive */ 103c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 idVendor; 104c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 idProduct; 105c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 bcdDevice_lo; 106c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 bcdDevice_hi; 107c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 108c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* Used for device class matches */ 109c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 bDeviceClass; 110c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 bDeviceSubClass; 111c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 bDeviceProtocol; 112c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 113c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* Used for interface class matches */ 114c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 bInterfaceClass; 115c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 bInterfaceSubClass; 116c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 bInterfaceProtocol; 117c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 118c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* not matched against */ 119c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t driver_info; 120c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 121c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 122c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Some useful macros to use to create struct usb_device_id */ 123c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_VENDOR 0x0001 124c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_PRODUCT 0x0002 125c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_DEV_LO 0x0004 126c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_DEV_HI 0x0008 127c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_DEV_CLASS 0x0010 128c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_DEV_SUBCLASS 0x0020 129c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_DEV_PROTOCOL 0x0040 130c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_INT_CLASS 0x0080 131c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_INT_SUBCLASS 0x0100 132c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 133c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 134c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* s390 CCW devices */ 135c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct ccw_device_id { 136c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 match_flags; /* which fields to match against */ 137c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 138c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 cu_type; /* control unit type */ 139c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 dev_type; /* device type */ 140c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 cu_model; /* control unit model */ 141c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 dev_model; /* device model */ 142c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 143c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t driver_info; 144c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 145c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 146c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CCW_DEVICE_ID_MATCH_CU_TYPE 0x01 147c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CCW_DEVICE_ID_MATCH_CU_MODEL 0x02 148c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04 149c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08 150c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 151c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 152c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PNP_ID_LEN 8 153c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PNP_MAX_DEVICES 8 154c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 155c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct pnp_device_id { 156c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 id[PNP_ID_LEN]; 157c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t driver_data; 158c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 159c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 160c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct pnp_card_device_id { 161c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 id[PNP_ID_LEN]; 162c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t driver_data; 163c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct { 164c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 id[PNP_ID_LEN]; 165c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } devs[PNP_MAX_DEVICES]; 166c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 167c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 168c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 169c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SERIO_ANY 0xff 170c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 171c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct serio_device_id { 172c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 type; 173c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 extra; 174c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 id; 175c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 proto; 176c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 177c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 178c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 179c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Struct used for matching a device 180c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 181c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct of_device_id 182c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 183c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char name[32]; 184c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char type[32]; 185c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char compatible[128]; 186c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__ 187c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru void *data; 188c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else 189c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t data; 190c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 191c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 192c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 193c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* VIO */ 194c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct vio_device_id { 195c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char type[32]; 196c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char compat[32]; 197c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 198c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 199c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* PCMCIA */ 200c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 201c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct pcmcia_device_id { 202c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 match_flags; 203c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 204c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 manf_id; 205c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 card_id; 206c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 207c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 func_id; 208c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 209c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* for real multi-function devices */ 210c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 function; 211c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 212c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* for pseudo multi-function devices */ 213c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 device_no; 214c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 215c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 prod_id_hash[4] 216c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __attribute__((aligned(sizeof(__u32)))); 217c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 218c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* not matched against in kernelspace*/ 219c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__ 220c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * prod_id[4]; 221c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else 222c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t prod_id[4] 223c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __attribute__((aligned(sizeof(kernel_ulong_t)))); 224c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 225c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 226c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* not matched against */ 227c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t driver_info; 228c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__ 229c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char * cisfile; 230c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else 231c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t cisfile; 232c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 233c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 234c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 235c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_MANF_ID 0x0001 236c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_CARD_ID 0x0002 237c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_FUNC_ID 0x0004 238c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_FUNCTION 0x0008 239c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_PROD_ID1 0x0010 240c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_PROD_ID2 0x0020 241c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_PROD_ID3 0x0040 242c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_PROD_ID4 0x0080 243c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_DEVICE_NO 0x0100 244c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_FAKE_CIS 0x0200 245c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PCMCIA_DEV_ID_MATCH_ANONYMOUS 0x0400 246c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 247c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* I2C */ 248c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct i2c_device_id { 249c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 id; 250c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 251c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 252c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Input */ 253c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_EV_MAX 0x1f 254c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_KEY_MAX 0x1ff 255c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_REL_MAX 0x0f 256c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_ABS_MAX 0x3f 257c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MSC_MAX 0x07 258c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_LED_MAX 0x0f 259c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_SND_MAX 0x07 260c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_FF_MAX 0x7f 261c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_SW_MAX 0x0f 262c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 263c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_BUS 1 264c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_VENDOR 2 265c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_PRODUCT 4 266c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_VERSION 8 267c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 268c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_EVBIT 0x0010 269c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x0020 270c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_RELBIT 0x0040 271c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x0080 272c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_MSCIT 0x0100 273c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x0200 274c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400 275c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800 276c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 277c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 278c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct input_device_id { 279c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 280c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t flags; 281c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 282c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 bustype; 283c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 vendor; 284c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 product; 285c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 version; 286c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 287c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1]; 288c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1]; 289c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1]; 290c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1]; 291c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1]; 292c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1]; 293c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1]; 294c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1]; 295c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1]; 296c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 297c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru kernel_ulong_t driver_info; 298c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 299c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 300c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* LINUX_MOD_DEVICETABLE_H */ 301