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

📄 usbd-func.h

📁 Linux2.4.20针对三星公司的s3c2440内核基础上的一些设备驱动代码
💻 H
📖 第 1 页 / 共 2 页
字号:
	__u16 idVendor;	__u16 idProduct;	__u16 bcdDevice;	__u8 iManufacturer;	__u8 iProduct;	__u8 iSerialNumber;	__u8 bNumConfigurations;} __attribute__ ((packed));struct usb_string_descriptor {	__u8 bLength;	__u8 bDescriptorType;	// 0x03	__u16 wData[0];} __attribute__ ((packed));struct usb_generic_descriptor {	__u8 bLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;} __attribute__ ((packed));/*  * communications class descriptor structures * * c.f. CDC 5.2 Table 25c */struct usb_class_function_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;} __attribute__ ((packed));struct usb_class_function_descriptor_generic {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	__u8 bmCapabilities;} __attribute__ ((packed));struct usb_class_header_function_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x00	__u16 bcdCDC;} __attribute__ ((packed));struct usb_class_call_management_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x01	__u8 bmCapabilities;	__u8 bDataInterface;} __attribute__ ((packed));struct usb_class_abstract_control_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x02	__u8 bmCapabilities;} __attribute__ ((packed));struct usb_class_direct_line_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x03} __attribute__ ((packed));struct usb_class_telephone_ringer_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x04	__u8 bRingerVolSeps;	__u8 bNumRingerPatterns;} __attribute__ ((packed));struct usb_class_telephone_call_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x05	__u8 bmCapabilities;} __attribute__ ((packed));struct usb_class_union_function_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x06	__u8 bMasterInterface;	__u8 bSlaveInterface0[0];} __attribute__ ((packed));struct usb_class_country_selection_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x07	__u8 iCountryCodeRelDate;	__u16 wCountryCode0[0];} __attribute__ ((packed));struct usb_class_telephone_operational_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x08	__u8 bmCapabilities;} __attribute__ ((packed));struct usb_class_usb_terminal_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x09	__u8 bEntityId;	__u8 bInterfaceNo;	__u8 bOutInterfaceNo;	__u8 bmOptions;	__u8 bChild0[0];} __attribute__ ((packed));struct usb_class_network_channel_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x0a	__u8 bEntityId;	__u8 iName;	__u8 bChannelIndex;	__u8 bPhysicalInterface;} __attribute__ ((packed));struct usb_class_protocol_unit_function_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x0b	__u8 bEntityId;	__u8 bProtocol;	__u8 bChild0[0];} __attribute__ ((packed));struct usb_class_extension_unit_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x0c	__u8 bEntityId;	__u8 bExtensionCode;	__u8 iName;	__u8 bChild0[0];} __attribute__ ((packed));struct usb_class_multi_channel_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x0d	__u8 bmCapabilities;} __attribute__ ((packed));struct usb_class_capi_control_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x0e	__u8 bmCapabilities;} __attribute__ ((packed));struct usb_class_ethernet_networking_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x0f	__u8 iMACAddress;	__u32 bmEthernetStatistics;	__u16 wMaxSegmentSize;	__u16 wNumberMCFilters;	__u8 bNumberPowerFilters;} __attribute__ ((packed));struct usb_class_atm_networking_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x10	__u8 iEndSystermIdentifier;	__u8 bmDataCapabilities;	__u8 bmATMDeviceStatistics;	__u16 wType2MaxSegmentSize;	__u16 wType3MaxSegmentSize;	__u16 wMaxVC;} __attribute__ ((packed));struct usb_class_mdlm_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x12	__u16 bcdVersion;	__u8 bGUID[16];} __attribute__ ((packed));struct usb_class_mdlmd_descriptor {	__u8 bFunctionLength;	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	// 0x13	__u8 bGuidDescriptorType;	__u8 bDetailData[0];} __attribute__ ((packed));/*  * HID class descriptor structures * * c.f. HID 6.2.1 */struct usb_class_hid_descriptor {    __u8        bLength;    __u8        bDescriptorType;    __u16       bcdCDC;    __u8        bCountryCode;    __u8        bNumDescriptors;	// 0x01    __u8        bDescriptorType0;    __u16       wDescriptorLength0;    /* optional descriptors are not supported. */} __attribute__((packed));struct usb_class_report_descriptor {    __u8        bLength;	// dummy    __u8        bDescriptorType;    __u16       wLength;    __u8	bData[0];} __attribute__((packed));/*  * descriptor union structures */struct usb_descriptor {	union {		struct usb_generic_descriptor generic;		struct usb_endpoint_descriptor endpoint;		struct usb_interface_descriptor interface;		struct usb_configuration_descriptor configuration;		struct usb_device_descriptor device;		struct usb_string_descriptor string;	} descriptor;} __attribute__ ((packed));struct usb_class_descriptor {	union {		struct usb_class_function_descriptor function;		struct usb_class_function_descriptor_generic generic;		struct usb_class_header_function_descriptor header_function;		struct usb_class_call_management_descriptor call_management;		struct usb_class_abstract_control_descriptor abstract_control;		struct usb_class_direct_line_descriptor direct_line;		struct usb_class_telephone_ringer_descriptor telephone_ringer;		struct usb_class_telephone_operational_descriptor telephone_operational;		struct usb_class_telephone_call_descriptor telephone_call;		struct usb_class_union_function_descriptor union_function;		struct usb_class_country_selection_descriptor country_selection;		struct usb_class_usb_terminal_descriptor usb_terminal;		struct usb_class_network_channel_descriptor network_channel;		struct usb_class_extension_unit_descriptor extension_unit;		struct usb_class_multi_channel_descriptor multi_channel;		struct usb_class_capi_control_descriptor capi_control;		struct usb_class_ethernet_networking_descriptor ethernet_networking;		struct usb_class_atm_networking_descriptor atm_networking;		struct usb_class_mdlm_descriptor mobile_direct;		struct usb_class_mdlmd_descriptor mobile_direct_detail;		struct usb_class_hid_descriptor hid;	} descriptor;} __attribute__ ((packed));struct usb_alternate_instance {	struct usb_interface_descriptor *interface_descriptor;	int classes;	struct usb_class_descriptor **classes_descriptor_array;	int endpoints;	int *endpoint_transfersize_array;	struct usb_endpoint_descriptor **endpoints_descriptor_array;	struct usb_class_report_descriptor **reports_descriptor_array;};struct usb_interface_instance {	int alternates;	//struct usb_interface_descriptor **alternates_descriptor_array;	struct usb_alternate_instance *alternates_instance_array;};/* Operations that the bus interface driver can use to interact with a * function driver.  * * Typically these are called to deal with either specific changes of state * to an endpoint: * reset, suspend, resume; or to process received data.  * * The default endpoint 0 driver will use the configure entry point to tell * a function driver that it has been configured for use. * * The urb sent callback is specified in the urb structure so that specific * completion routines can be specified for each type of data being * transmitted. * * The receive urb function is called when there is data to be processed. * * The receive setup function is called when there is an endpoint zero * setup packet to be processed. * * The alloc urb data function is called to allocate urb data buffers. * */struct usb_function_operations {	void (*event) (struct usb_device_instance *, usb_device_event_t, int);	int (*urb_sent) (struct urb *, int);	int (*recv_urb) (struct urb *);	int (*recv_setup) (struct urb *);	int (*alloc_urb_data) (struct urb *, int);	void (*dealloc_urb_data) (struct urb *);	void (*function_init) (struct usb_bus_instance *, struct usb_device_instance *,			       struct usb_function_driver *);	void (*function_exit) (struct usb_device_instance *);};struct usb_configuration_instance {	int interfaces;	struct usb_configuration_descriptor *configuration_descriptor;	struct usb_interface_instance *interface_instance_array;	struct usb_function_driver *function_driver;};/* Function Driver data structure * * Function driver and its configuration descriptors.  * * This is passed to the usb-device layer when registering. It contains all * required information about the function driver for the usb-device layer * to use the function drivers configuration data and to configure this * function driver an active configuration. * * Note that each function driver registers itself on a speculative basis. * Whether a function driver is actually configured will depend on the USB * HOST selecting one of the function drivers configurations.  * * This may be done multiple times WRT to either a single bus interface * instance or WRT to multiple bus interface instances. In other words a * multiple configurations may be selected for a specific bus interface. Or * the same configuration may be selected for multiple bus interfaces.  * */struct usb_function_driver {	const char *name;	struct usb_function_operations *ops;	// functions 	// device & configuration descriptions 	struct usb_device_description *device_description;	struct usb_configuration_description *configuration_description;	int configurations;	// constructed descriptors	struct usb_device_descriptor *device_descriptor;	struct usb_configuration_instance *configuration_instance_array;	struct list_head drivers;	// linked list 	struct module *this_module;	// manage inc use counts to prevent unload races};void usbd_function_init (struct usb_bus_instance *, struct usb_device_instance *,			 struct usb_function_driver *);void usbd_function_close (struct usb_device_instance *);

⌨️ 快捷键说明

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