亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb.h

?? linux驅動開發代碼
?? H
?? 第 1 頁 / 共 3 頁
字號:
#ifndef __LINUX_USB_H#define __LINUX_USB_H/* USB constants *//* * Device and/or Interface Class codes */#define USB_CLASS_PER_INTERFACE		0	/* for DeviceClass */#define USB_CLASS_AUDIO			1#define USB_CLASS_COMM			2#define USB_CLASS_HID			3#define USB_CLASS_PHYSICAL		5#define USB_CLASS_STILL_IMAGE		6#define USB_CLASS_PRINTER		7#define USB_CLASS_MASS_STORAGE		8#define USB_CLASS_HUB			9#define USB_CLASS_CDC_DATA		0x0a#define USB_CLASS_CSCID			0x0b	/* chip+ smart card */#define USB_CLASS_CONTENT_SEC		0x0d	/* content security */#define USB_CLASS_APP_SPEC		0xfe#define USB_CLASS_VENDOR_SPEC		0xff/* * USB types */#define USB_TYPE_MASK			(0x03 << 5)#define USB_TYPE_STANDARD		(0x00 << 5)#define USB_TYPE_CLASS			(0x01 << 5)#define USB_TYPE_VENDOR			(0x02 << 5)#define USB_TYPE_RESERVED		(0x03 << 5)/* * USB recipients */#define USB_RECIP_MASK			0x1f#define USB_RECIP_DEVICE		0x00#define USB_RECIP_INTERFACE		0x01#define USB_RECIP_ENDPOINT		0x02#define USB_RECIP_OTHER			0x03/* * USB directions */#define USB_DIR_OUT			0		/* to device */#define USB_DIR_IN			0x80		/* to host *//* * Descriptor types */#define USB_DT_DEVICE			0x01#define USB_DT_CONFIG			0x02#define USB_DT_STRING			0x03#define USB_DT_INTERFACE		0x04#define USB_DT_ENDPOINT			0x05#define USB_DT_HID			(USB_TYPE_CLASS | 0x01)#define USB_DT_REPORT			(USB_TYPE_CLASS | 0x02)#define USB_DT_PHYSICAL			(USB_TYPE_CLASS | 0x03)#define USB_DT_HUB			(USB_TYPE_CLASS | 0x09)/* * Descriptor sizes per descriptor type */#define USB_DT_DEVICE_SIZE		18#define USB_DT_CONFIG_SIZE		9#define USB_DT_INTERFACE_SIZE		9#define USB_DT_ENDPOINT_SIZE		7#define USB_DT_ENDPOINT_AUDIO_SIZE	9	/* Audio extension */#define USB_DT_HUB_NONVAR_SIZE		7#define USB_DT_HID_SIZE			9/* * Endpoints */#define USB_ENDPOINT_NUMBER_MASK	0x0f	/* in bEndpointAddress */#define USB_ENDPOINT_DIR_MASK		0x80#define USB_ENDPOINT_XFERTYPE_MASK	0x03	/* in bmAttributes */#define USB_ENDPOINT_XFER_CONTROL	0#define USB_ENDPOINT_XFER_ISOC		1#define USB_ENDPOINT_XFER_BULK		2#define USB_ENDPOINT_XFER_INT		3/* * USB Packet IDs (PIDs) */#define USB_PID_UNDEF_0			0xf0#define USB_PID_OUT			0xe1#define USB_PID_ACK			0xd2#define USB_PID_DATA0			0xc3#define USB_PID_PING			0xb4	/* USB 2.0 */#define USB_PID_SOF			0xa5#define USB_PID_NYET			0x96	/* USB 2.0 */#define USB_PID_DATA2			0x87	/* USB 2.0 */#define USB_PID_SPLIT			0x78	/* USB 2.0 */#define USB_PID_IN			0x69#define USB_PID_NAK			0x5a#define USB_PID_DATA1			0x4b#define USB_PID_PREAMBLE		0x3c	/* Token mode */#define USB_PID_ERR			0x3c	/* USB 2.0: handshake mode */#define USB_PID_SETUP			0x2d#define USB_PID_STALL			0x1e#define USB_PID_MDATA			0x0f	/* USB 2.0 *//* * Standard requests */#define USB_REQ_GET_STATUS		0x00#define USB_REQ_CLEAR_FEATURE		0x01#define USB_REQ_SET_FEATURE		0x03#define USB_REQ_SET_ADDRESS		0x05#define USB_REQ_GET_DESCRIPTOR		0x06#define USB_REQ_SET_DESCRIPTOR		0x07#define USB_REQ_GET_CONFIGURATION	0x08#define USB_REQ_SET_CONFIGURATION	0x09#define USB_REQ_GET_INTERFACE		0x0A#define USB_REQ_SET_INTERFACE		0x0B#define USB_REQ_SYNCH_FRAME		0x0C/* * HID requests */#define USB_REQ_GET_REPORT		0x01#define USB_REQ_GET_IDLE		0x02#define USB_REQ_GET_PROTOCOL		0x03#define USB_REQ_SET_REPORT		0x09#define USB_REQ_SET_IDLE		0x0A#define USB_REQ_SET_PROTOCOL		0x0B#ifdef __KERNEL__#include <linux/types.h>#include <linux/ioctl.h>#include <linux/version.h>#include <linux/sched.h>#include <linux/delay.h>#include <linux/interrupt.h>	/* for in_interrupt() */#include <linux/config.h>#include <linux/list.h>#define USB_MAJOR 180static __inline__ void wait_ms(unsigned int ms){	if(!in_interrupt()) {		current->state = TASK_UNINTERRUPTIBLE;		schedule_timeout(1 + ms * HZ / 1000);	}	else		mdelay(ms);}/** * struct usb_ctrlrequest - structure used to make USB device control requests easier to create and decode * @bRequestType: matches the USB bmRequestType field * @bRequest: matches the USB bRequest field * @wValue: matches the USB wValue field * @wIndex: matches the USB wIndex field * @wLength: matches the USB wLength field * * This structure is used to send control requests to a USB device.  It matches * the different fields of the USB 2.0 Spec section 9.3, table 9-2.  See the * USB spec for a fuller description of the different fields, and what they are * used for. */struct usb_ctrlrequest {	__u8 bRequestType;	__u8 bRequest;	__u16 wValue;	__u16 wIndex;	__u16 wLength;} __attribute__ ((packed));/* * USB-status codes: * USB_ST* maps to -E* and should go away in the future */#define USB_ST_NOERROR		0#define USB_ST_CRC		(-EILSEQ)#define USB_ST_BITSTUFF		(-EPROTO)#define USB_ST_NORESPONSE	(-ETIMEDOUT)			/* device not responding/handshaking */#define USB_ST_DATAOVERRUN	(-EOVERFLOW)#define USB_ST_DATAUNDERRUN	(-EREMOTEIO)#define USB_ST_BUFFEROVERRUN	(-ECOMM)#define USB_ST_BUFFERUNDERRUN	(-ENOSR)#define USB_ST_INTERNALERROR	(-EPROTO) 			/* unknown error */#define USB_ST_SHORT_PACKET	(-EREMOTEIO)#define USB_ST_PARTIAL_ERROR	(-EXDEV)			/* ISO transfer only partially completed */#define USB_ST_URB_KILLED	(-ENOENT)			/* URB canceled by user */#define USB_ST_URB_PENDING	(-EINPROGRESS)#define USB_ST_REMOVED		(-ENODEV) 			/* device not existing or removed */#define USB_ST_TIMEOUT		(-ETIMEDOUT)			/* communication timed out, also in urb->status**/#define USB_ST_NOTSUPPORTED	(-ENOSYS)			#define USB_ST_BANDWIDTH_ERROR	(-ENOSPC)			/* too much bandwidth used */#define USB_ST_URB_INVALID_ERROR  (-EINVAL)			/* invalid value/transfer type */#define USB_ST_URB_REQUEST_ERROR  (-ENXIO)			/* invalid endpoint */#define USB_ST_STALL		(-EPIPE) 			/* pipe stalled, also in urb->status*//* * USB device number allocation bitmap. There's one bitmap * per USB tree. */struct usb_devmap {	unsigned long devicemap[128 / (8*sizeof(unsigned long))];};#define USB_MAXBUS		64struct usb_busmap {	unsigned long busmap[USB_MAXBUS / (8*sizeof(unsigned long))];};/* * This is a USB device descriptor. * * USB device information *//* Everything but the endpoint maximums are aribtrary */#define USB_MAXCONFIG		8#define USB_ALTSETTINGALLOC     4#define USB_MAXALTSETTING	128  /* Hard limit */#define USB_MAXINTERFACES	32#define USB_MAXENDPOINTS	32/* All standard descriptors have these 2 fields in common */struct usb_descriptor_header {	__u8  bLength;	__u8  bDescriptorType;} __attribute__ ((packed));/* Device descriptor */struct usb_device_descriptor {	__u8  bLength;	__u8  bDescriptorType;	__u16 bcdUSB;	__u8  bDeviceClass;	__u8  bDeviceSubClass;	__u8  bDeviceProtocol;	__u8  bMaxPacketSize0;	__u16 idVendor;	__u16 idProduct;	__u16 bcdDevice;	__u8  iManufacturer;	__u8  iProduct;	__u8  iSerialNumber;	__u8  bNumConfigurations;} __attribute__ ((packed));/* Endpoint descriptor */struct usb_endpoint_descriptor {	__u8  bLength		__attribute__ ((packed));	__u8  bDescriptorType	__attribute__ ((packed));	__u8  bEndpointAddress	__attribute__ ((packed));	__u8  bmAttributes	__attribute__ ((packed));	__u16 wMaxPacketSize	__attribute__ ((packed));	__u8  bInterval		__attribute__ ((packed));	__u8  bRefresh		__attribute__ ((packed));	__u8  bSynchAddress	__attribute__ ((packed));   	unsigned char *extra;   /* Extra descriptors */	int extralen;};/* Interface descriptor */struct usb_interface_descriptor {	__u8  bLength		__attribute__ ((packed));	__u8  bDescriptorType	__attribute__ ((packed));	__u8  bInterfaceNumber	__attribute__ ((packed));	__u8  bAlternateSetting	__attribute__ ((packed));	__u8  bNumEndpoints	__attribute__ ((packed));	__u8  bInterfaceClass	__attribute__ ((packed));	__u8  bInterfaceSubClass __attribute__ ((packed));	__u8  bInterfaceProtocol __attribute__ ((packed));	__u8  iInterface	__attribute__ ((packed));  	struct usb_endpoint_descriptor *endpoint;   	unsigned char *extra;   /* Extra descriptors */	int extralen;};struct usb_interface {	struct usb_interface_descriptor *altsetting;	int act_altsetting;		/* active alternate setting */	int num_altsetting;		/* number of alternate settings */	int max_altsetting;             /* total memory allocated */ 	struct usb_driver *driver;	/* driver */	void *private_data;};/* Configuration descriptor information.. */struct usb_config_descriptor {	__u8  bLength		__attribute__ ((packed));	__u8  bDescriptorType	__attribute__ ((packed));	__u16 wTotalLength	__attribute__ ((packed));	__u8  bNumInterfaces	__attribute__ ((packed));	__u8  bConfigurationValue __attribute__ ((packed));	__u8  iConfiguration	__attribute__ ((packed));	__u8  bmAttributes	__attribute__ ((packed));	__u8  MaxPower		__attribute__ ((packed));	struct usb_interface *interface;   	unsigned char *extra;   /* Extra descriptors */	int extralen;};/* String descriptor */struct usb_string_descriptor {	__u8  bLength;	__u8  bDescriptorType;	__u16 wData[1];} __attribute__ ((packed));struct usb_device;/* * 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 __devinitdata, and as a MODULE_DEVICE_TABLE. * * With a device table provide bind() instead of probe().  Then the * third bind() parameter will point to a matching entry from this * table.  (Null value reserved.) *  * Terminate the driver's table with an all-zeroes entry. * Init the fields you care about; zeroes are not used in comparisons. */#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#define USB_DEVICE_ID_MATCH_DEVICE		(USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT)#define USB_DEVICE_ID_MATCH_DEV_RANGE		(USB_DEVICE_ID_MATCH_DEV_LO | USB_DEVICE_ID_MATCH_DEV_HI)#define USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION	(USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_DEV_RANGE)#define USB_DEVICE_ID_MATCH_DEV_INFO \	(USB_DEVICE_ID_MATCH_DEV_CLASS | USB_DEVICE_ID_MATCH_DEV_SUBCLASS | USB_DEVICE_ID_MATCH_DEV_PROTOCOL)#define USB_DEVICE_ID_MATCH_INT_INFO \	(USB_DEVICE_ID_MATCH_INT_CLASS | USB_DEVICE_ID_MATCH_INT_SUBCLASS | USB_DEVICE_ID_MATCH_INT_PROTOCOL)/* Some useful macros */#define USB_DEVICE(vend,prod) \	match_flags: USB_DEVICE_ID_MATCH_DEVICE, idVendor: (vend), idProduct: (prod)#define USB_DEVICE_VER(vend,prod,lo,hi) \	match_flags: USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, idVendor: (vend), idProduct: (prod), bcdDevice_lo: (lo), bcdDevice_hi: (hi)#define USB_DEVICE_INFO(cl,sc,pr) \	match_flags: USB_DEVICE_ID_MATCH_DEV_INFO, bDeviceClass: (cl), bDeviceSubClass: (sc), bDeviceProtocol: (pr)#define USB_INTERFACE_INFO(cl,sc,pr) \	match_flags: USB_DEVICE_ID_MATCH_INT_INFO, bInterfaceClass: (cl), bInterfaceSubClass: (sc), bInterfaceProtocol: (pr)struct usb_device_id {	/* This bitmask is used to determine which of the following fields	 * are to be used for matching.	 */	__u16		match_flags;	/*	 * vendor/product codes are checked, if vendor is nonzero	 * Range is for device revision (bcdDevice), inclusive;	 * zero values here mean range isn't considered	 */	__u16		idVendor;	__u16		idProduct;	__u16		bcdDevice_lo, bcdDevice_hi;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美私模裸体表演在线观看| 久久66热re国产| 日本高清不卡视频| 有坂深雪av一区二区精品| 色噜噜狠狠成人中文综合| 亚洲乱码国产乱码精品精的特点| 91精品福利在线| 日韩黄色免费网站| 精品国产污污免费网站入口 | 欧美日韩一区二区在线观看视频 | 蜜桃视频在线观看一区| 久久久久久亚洲综合影院红桃| 毛片不卡一区二区| 久久综合久久综合久久| 972aa.com艺术欧美| 亚洲第一成年网| 精品奇米国产一区二区三区| 岛国精品在线观看| 亚洲一区二区黄色| 久久这里都是精品| 一本高清dvd不卡在线观看| 日本伊人色综合网| 国产欧美日韩精品一区| 欧美系列在线观看| 国产又黄又大久久| 一区二区三区在线观看欧美| 日韩欧美在线综合网| 99久久综合国产精品| 午夜精品aaa| 中文字幕免费不卡| 制服视频三区第一页精品| 高清国产一区二区| 人人狠狠综合久久亚洲| 久久精品人人爽人人爽| 欧美专区日韩专区| 国产精品18久久久久久久网站| 亚洲视频免费看| 精品国产乱码久久久久久1区2区| 91免费精品国自产拍在线不卡| 日韩电影在线一区二区| 中文字幕日韩欧美一区二区三区| 91精品国产麻豆国产自产在线| 成人综合在线观看| 麻豆91在线播放| 亚洲香肠在线观看| 国产精品久久久久永久免费观看| 91精品国产乱码久久蜜臀| 99久久er热在这里只有精品66| 六月丁香综合在线视频| 夜夜揉揉日日人人青青一国产精品| 日本一区二区三区高清不卡| 日韩女优毛片在线| 欧美日韩精品二区第二页| 91片黄在线观看| 国产91对白在线观看九色| 久久99精品久久久久久动态图| 亚洲成av人片在线| 亚洲黄一区二区三区| 国产精品久久久久久久久免费桃花| 欧美一级日韩免费不卡| 欧美久久一区二区| 欧亚洲嫩模精品一区三区| 成人免费观看男女羞羞视频| 国产精品99久久久久久久女警 | 国产成人精品三级| 久久精品国产一区二区三区免费看| 亚洲国产精品久久久男人的天堂 | 日本sm残虐另类| 亚洲国产精品天堂| 亚洲综合色视频| 亚洲一区二区成人在线观看| 一区二区三区在线视频播放| 国产精品久久久久久久久久免费看| 久久久亚洲精品石原莉奈| 精品久久久久久无| 久久综合九色综合欧美就去吻| 日韩一卡二卡三卡国产欧美| 欧美一级二级三级蜜桃| 欧美成人精品福利| 久久伊人中文字幕| 久久久精品黄色| 国产日韩一级二级三级| 国产午夜精品一区二区三区嫩草| 久久亚洲二区三区| 国产欧美1区2区3区| 欧美国产国产综合| 中文字幕在线视频一区| 国产精品传媒视频| 一区二区三区精品在线| 亚洲国产精品一区二区www| 视频一区二区中文字幕| 日本亚洲天堂网| 久久99国产精品免费| 国产精一品亚洲二区在线视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 一区二区三区在线视频免费| 亚洲福利国产精品| 免费人成黄页网站在线一区二区| 精品一区二区免费在线观看| 丁香婷婷深情五月亚洲| 91麻豆产精品久久久久久| 97久久超碰精品国产| 欧美日韩美少妇| 欧美不卡123| 1区2区3区精品视频| 亚洲成av人在线观看| 国产一区二区三区蝌蚪| 一本高清dvd不卡在线观看| 精品视频一区三区九区| 精品日韩在线观看| 久久蜜桃av一区二区天堂| 国产精品麻豆视频| 日韩激情视频网站| 粉嫩13p一区二区三区| 欧美三级视频在线| 国产午夜精品一区二区三区四区 | 午夜视频一区二区| 国产成人综合网站| 欧美性大战xxxxx久久久| 2021中文字幕一区亚洲| 一区二区三区中文字幕| 国产一区二区调教| 在线观看区一区二| 欧美国产日韩在线观看| 午夜精品久久久久久久蜜桃app| 国产精品一二三| 777xxx欧美| 国产精品国产a级| 另类综合日韩欧美亚洲| 在线免费观看日本欧美| 国产欧美日韩不卡免费| 日韩av在线发布| 99精品视频在线免费观看| 日韩欧美在线123| 亚洲线精品一区二区三区八戒| 国产乱色国产精品免费视频| 欧美日韩不卡在线| 亚洲丝袜另类动漫二区| 国产在线精品免费| 91.com视频| 一二三区精品福利视频| 国产v日产∨综合v精品视频| 国产精品丝袜黑色高跟| 午夜久久电影网| 欧美午夜精品理论片a级按摩| 中文字幕av一区二区三区高| 免费精品视频最新在线| 欧美日韩中文国产| 亚洲人精品午夜| jlzzjlzz国产精品久久| 337p粉嫩大胆色噜噜噜噜亚洲| 天使萌一区二区三区免费观看| 91在线小视频| 中文字幕中文在线不卡住| 国产盗摄精品一区二区三区在线 | 国产精品美女视频| 国产精品一区二区黑丝| 欧美va日韩va| 久久99久久99精品免视看婷婷| 欧美日韩在线播放一区| 一区二区三区美女| 91视视频在线直接观看在线看网页在线看| 精品99999| 国产成人亚洲综合色影视| 久久久午夜精品| 国产精品2024| 国产精品人人做人人爽人人添| 国产精品99久久久久久久女警| 91麻豆精品91久久久久同性| 日韩高清中文字幕一区| 91精品国产全国免费观看| 人人精品人人爱| 欧美区一区二区三区| 亚洲va国产va欧美va观看| 欧美日韩精品三区| 日本vs亚洲vs韩国一区三区二区 | 日韩色视频在线观看| 亚洲成人精品一区| 91精品国产综合久久久久久| 日韩精品视频网| 精品国产欧美一区二区| 国产另类ts人妖一区二区| 欧美国产1区2区| 日本二三区不卡| 天天操天天干天天综合网| 日韩三级在线观看| 国产一区二区免费看| |精品福利一区二区三区| 欧美最新大片在线看| 日本不卡1234视频| 国产亚洲一区字幕| 色综合天天做天天爱| 五月婷婷综合在线| 精品久久人人做人人爽| 高清成人在线观看| 亚洲成av人片在线观看无码| 久久奇米777| 日本丶国产丶欧美色综合| 午夜电影一区二区三区| 国产三级精品视频|