⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mod_devicetable.h

📁 blackfin 的 usb devise 的代码 很基础
💻 H
字号:
/* * Device tables which are exported to userspace via * scripts/mod/file2alias.c.  You must keep that file in sync with this * header. */#ifndef LINUX_MOD_DEVICETABLE_H#define LINUX_MOD_DEVICETABLE_H#ifdef __KERNEL__#include <types.h>typedef unsigned long kernel_ulong_t;#endif#define PCI_ANY_ID (~0)struct pci_device_id {	__u32 vendor, device;		/* Vendor and device ID or PCI_ANY_ID*/	__u32 subvendor, subdevice;	/* Subsystem ID's or PCI_ANY_ID */	__u32 class, class_mask;	/* (class,subclass,prog-if) triplet */	kernel_ulong_t driver_data;	/* Data private to the driver */};#define IEEE1394_MATCH_VENDOR_ID	0x0001#define IEEE1394_MATCH_MODEL_ID		0x0002#define IEEE1394_MATCH_SPECIFIER_ID	0x0004#define IEEE1394_MATCH_VERSION		0x0008struct ieee1394_device_id {	__u32 match_flags;	__u32 vendor_id;	__u32 model_id;	__u32 specifier_id;	__u32 version;	kernel_ulong_t driver_data		__attribute__((aligned(sizeof(kernel_ulong_t))));};/* * Device table entry for "new style" table-driven USB drivers. * User mode code can read these tables to choose which modules to load. * Declare the table as a MODULE_DEVICE_TABLE. * * A probe() parameter will point to a matching entry from this table. * Use the driver_info field for each match to hold information tied * to that match:  device quirks, etc. * * Terminate the driver's table with an all-zeroes entry. * Use the flag values to control which fields are compared. *//** * struct usb_device_id - identifies USB devices for probing and hotplugging * @match_flags: Bit mask controlling of the other fields are used to match *	against new devices.  Any field except for driver_info may be used, *	although some only make sense in conjunction with other fields. *	This is usually set by a USB_DEVICE_*() macro, which sets all *	other fields in this structure except for driver_info. * @idVendor: USB vendor ID for a device; numbers are assigned *	by the USB forum to its members. * @idProduct: Vendor-assigned product ID. * @bcdDevice_lo: Low end of range of vendor-assigned product version numbers. *	This is also used to identify individual product versions, for *	a range consisting of a single device. * @bcdDevice_hi: High end of version number range.  The range of product *	versions is inclusive. * @bDeviceClass: Class of device; numbers are assigned *	by the USB forum.  Products may choose to implement classes, *	or be vendor-specific.  Device classes specify behavior of all *	the interfaces on a devices. * @bDeviceSubClass: Subclass of device; associated with bDeviceClass. * @bDeviceProtocol: Protocol of device; associated with bDeviceClass. * @bInterfaceClass: Class of interface; numbers are assigned *	by the USB forum.  Products may choose to implement classes, *	or be vendor-specific.  Interface classes specify behavior only *	of a given interface; other interfaces may support other classes. * @bInterfaceSubClass: Subclass of interface; associated with bInterfaceClass. * @bInterfaceProtocol: Protocol of interface; associated with bInterfaceClass. * @driver_info: Holds information used by the driver.  Usually it holds *	a pointer to a descriptor understood by the driver, or perhaps *	device flags. * * In most cases, drivers will create a table of device IDs by using * USB_DEVICE(), or similar macros designed for that purpose. * They will then export it to userspace using MODULE_DEVICE_TABLE(), * and provide it to the USB core through their usb_driver structure. * * See the usb_match_id() function for information about how matches are * performed.  Briefly, you will normally use one of several macros to help * construct these entries.  Each entry you provide will either identify * one or more specific products, or will identify a class of products * which have agreed to behave the same.  You should put the more specific * matches towards the beginning of your table, so that driver_info can * record quirks of specific products. */struct usb_device_id {	/* which fields to match against? */	__u16		match_flags;	/* Used for product specific matches; range is inclusive */	__u16		idVendor;	__u16		idProduct;	__u16		bcdDevice_lo;	__u16		bcdDevice_hi;	/* Used for device class matches */	__u8		bDeviceClass;	__u8		bDeviceSubClass;	__u8		bDeviceProtocol;	/* Used for interface class matches */	__u8		bInterfaceClass;	__u8		bInterfaceSubClass;	__u8		bInterfaceProtocol;	/* not matched against */	kernel_ulong_t	driver_info;};/* Some useful macros to use to create struct usb_device_id */#define USB_DEVICE_ID_MATCH_VENDOR		0x0001#define USB_DEVICE_ID_MATCH_PRODUCT		0x0002#define USB_DEVICE_ID_MATCH_DEV_LO		0x0004#define USB_DEVICE_ID_MATCH_DEV_HI		0x0008#define USB_DEVICE_ID_MATCH_DEV_CLASS		0x0010#define USB_DEVICE_ID_MATCH_DEV_SUBCLASS	0x0020#define USB_DEVICE_ID_MATCH_DEV_PROTOCOL	0x0040#define USB_DEVICE_ID_MATCH_INT_CLASS		0x0080#define USB_DEVICE_ID_MATCH_INT_SUBCLASS	0x0100#define USB_DEVICE_ID_MATCH_INT_PROTOCOL	0x0200/* s390 CCW devices */struct ccw_device_id {	__u16	match_flags;	/* which fields to match against */	__u16	cu_type;	/* control unit type     */	__u16	dev_type;	/* device type           */	__u8	cu_model;	/* control unit model    */	__u8	dev_model;	/* device model          */	kernel_ulong_t driver_info;};#define CCW_DEVICE_ID_MATCH_CU_TYPE		0x01#define CCW_DEVICE_ID_MATCH_CU_MODEL		0x02#define CCW_DEVICE_ID_MATCH_DEVICE_TYPE		0x04#define CCW_DEVICE_ID_MATCH_DEVICE_MODEL	0x08/* s390 AP bus devices */struct ap_device_id {	__u16 match_flags;	/* which fields to match against */	__u8 dev_type;		/* device type */	__u8 pad1;	__u32 pad2;	kernel_ulong_t driver_info;};#define AP_DEVICE_ID_MATCH_DEVICE_TYPE		0x01#define PNP_ID_LEN	8#define PNP_MAX_DEVICES	8struct pnp_device_id {	__u8 id[PNP_ID_LEN];	kernel_ulong_t driver_data;};struct pnp_card_device_id {	__u8 id[PNP_ID_LEN];	kernel_ulong_t driver_data;	struct {		__u8 id[PNP_ID_LEN];	} devs[PNP_MAX_DEVICES];};#define SERIO_ANY	0xffstruct serio_device_id {	__u8 type;	__u8 extra;	__u8 id;	__u8 proto;};/* * Struct used for matching a device */struct of_device_id{	char	name[32];	char	type[32];	char	compatible[128];#ifdef __KERNEL__	void	*data;#else	kernel_ulong_t data;#endif};/* VIO */struct vio_device_id {	char type[32];	char compat[32];};/* PCMCIA */struct pcmcia_device_id {	__u16		match_flags;	__u16		manf_id;	__u16 		card_id;	__u8  		func_id;	/* for real multi-function devices */	__u8  		function;	/* for pseudo multi-function devices */	__u8  		device_no;	__u32 		prod_id_hash[4]		__attribute__((aligned(sizeof(__u32))));	/* not matched against in kernelspace*/#ifdef __KERNEL__	const char *	prod_id[4];#else	kernel_ulong_t	prod_id[4]		__attribute__((aligned(sizeof(kernel_ulong_t))));#endif	/* not matched against */	kernel_ulong_t	driver_info;#ifdef __KERNEL__	char *		cisfile;#else	kernel_ulong_t	cisfile;#endif};#define PCMCIA_DEV_ID_MATCH_MANF_ID	0x0001#define PCMCIA_DEV_ID_MATCH_CARD_ID	0x0002#define PCMCIA_DEV_ID_MATCH_FUNC_ID	0x0004#define PCMCIA_DEV_ID_MATCH_FUNCTION	0x0008#define PCMCIA_DEV_ID_MATCH_PROD_ID1	0x0010#define PCMCIA_DEV_ID_MATCH_PROD_ID2	0x0020#define PCMCIA_DEV_ID_MATCH_PROD_ID3	0x0040#define PCMCIA_DEV_ID_MATCH_PROD_ID4	0x0080#define PCMCIA_DEV_ID_MATCH_DEVICE_NO	0x0100#define PCMCIA_DEV_ID_MATCH_FAKE_CIS	0x0200#define PCMCIA_DEV_ID_MATCH_ANONYMOUS	0x0400/* I2C */struct i2c_device_id {	__u16 id;};/* Input */#define INPUT_DEVICE_ID_EV_MAX		0x1f#define INPUT_DEVICE_ID_KEY_MAX		0x1ff#define INPUT_DEVICE_ID_REL_MAX		0x0f#define INPUT_DEVICE_ID_ABS_MAX		0x3f#define INPUT_DEVICE_ID_MSC_MAX		0x07#define INPUT_DEVICE_ID_LED_MAX		0x0f#define INPUT_DEVICE_ID_SND_MAX		0x07#define INPUT_DEVICE_ID_FF_MAX		0x7f#define INPUT_DEVICE_ID_SW_MAX		0x0f#define INPUT_DEVICE_ID_MATCH_BUS	1#define INPUT_DEVICE_ID_MATCH_VENDOR	2#define INPUT_DEVICE_ID_MATCH_PRODUCT	4#define INPUT_DEVICE_ID_MATCH_VERSION	8#define INPUT_DEVICE_ID_MATCH_EVBIT	0x0010#define INPUT_DEVICE_ID_MATCH_KEYBIT	0x0020#define INPUT_DEVICE_ID_MATCH_RELBIT	0x0040#define INPUT_DEVICE_ID_MATCH_ABSBIT	0x0080#define INPUT_DEVICE_ID_MATCH_MSCIT	0x0100#define INPUT_DEVICE_ID_MATCH_LEDBIT	0x0200#define INPUT_DEVICE_ID_MATCH_SNDBIT	0x0400#define INPUT_DEVICE_ID_MATCH_FFBIT	0x0800#define INPUT_DEVICE_ID_MATCH_SWBIT	0x1000#if 0//motorstruct input_device_id {	kernel_ulong_t flags;	__u16 bustype;	__u16 vendor;	__u16 product;	__u16 version;	kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];	kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];	kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];	kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];	kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];	kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];	kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];	kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];	kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];	kernel_ulong_t driver_info;};#endif//motor/* EISA */#define EISA_SIG_LEN   8/* The EISA signature, in ASCII form, null terminated */struct eisa_device_id {	char          sig[EISA_SIG_LEN];	kernel_ulong_t driver_data;};#define EISA_DEVICE_MODALIAS_FMT "eisa:s%s"#endif /* LINUX_MOD_DEVICETABLE_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -