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

📄 usbd-func.h

📁 Linux2.4.20针对三星公司的s3c2440内核基础上的一些设备驱动代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * linux/drivers/usbd/usb-function.h - USB Function  * * Copyright (c) 2000, 2001, 2002 Lineo * Copyright (c) 2001 Hewlett Packard * * By:  *      Stuart Lynne <sl@lineo.com>,  *      Tom Rushworth <tbr@lineo.com>,  *      Bruce Balden <balden@lineo.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *//* * USB Function Driver structures * * Descriptors: *   struct usb_endpoint_description *   struct usb_interface_description  *   struct usb_configuration_description * * Driver description: *   struct usb_function_driver *   struct usb_function_operations * *//* USB Descriptors - Create a complete description of all of the * function driver capabilities. These map directly to the USB descriptors. * * This heirarchy is created by the functions drivers and is passed to the * usb-device driver when the function driver is registered. * *  device *      configuration *           interface *              alternate *                   class *                   class *              alternate *                   endpoint *                   endpoint *           interface *              alternate *                   endpoint *                   endpoint *      configuration *           interface *              alternate *                   endpoint *                   endpoint * * * The configuration structures refer to the USB Configurations that will be * made available to a USB HOST during the enumeration process.  * * The USB HOST will select a configuration and optionally an interface with * the usb set configuration and set interface commands. * * The selected interface (or the default interface if not specifically * selected) will define the list of endpoints that will be used. * * The configuration and interfaces are stored in an array that is indexed * by the specified configuratin or interface number minus one.  * * A configuration number of zero is used to specify a return to the unconfigured * state. * *//* * communications class types * * c.f. CDC  USB Class Definitions for Communications Devices  * c.f. WMCD USB CDC Subclass Specification for Wireless Mobile Communications Devices * */#define CLASS_BCD_VERSION		0x0110// c.f. CDC 4.1 Table 14#define COMMUNICATIONS_DEVICE_CLASS	0x02// c.f. CDC 4.2 Table 15#define COMMUNICATIONS_INTERFACE_CLASS	0x02// c.f. CDC 4.3 Table 16#define COMMUNICATIONS_NO_SUBCLASS	0x00#define COMMUNICATIONS_DLCM_SUBCLASS	0x01#define COMMUNICATIONS_ACM_SUBCLASS	0x02#define COMMUNICATIONS_TCM_SUBCLASS	0x03#define COMMUNICATIONS_MCCM_SUBCLASS	0x04#define COMMUNICATIONS_CCM_SUBCLASS	0x05#define COMMUNICATIONS_ENCM_SUBCLASS	0x06#define COMMUNICATIONS_ANCM_SUBCLASS	0x07// c.f. WMCD 5.1#define COMMUNICATIONS_WHCM_SUBCLASS	0x08#define COMMUNICATIONS_DMM_SUBCLASS	0x09#define COMMUNICATIONS_MDLM_SUBCLASS	0x0a#define COMMUNICATIONS_OBEX_SUBCLASS	0x0b// c.f. CDC 4.6 Table 18#define DATA_INTERFACE_CLASS		0x0a// c.f. CDC 4.7 Table 19#define COMMUNICATIONS_NO_PROTOCOL	0x00// c.f. CDC 5.2.3 Table 24#define CS_INTERFACE			0x24#define CS_ENDPOINT			0x25/* * bDescriptorSubtypes * * c.f. CDC 5.2.3 Table 25 * c.f. WMCD 5.3 Table 5.3 */#define USB_ST_HEADER			0x00#define USB_ST_CMF			0x01#define USB_ST_ACMF			0x02#define USB_ST_DLMF			0x03#define USB_ST_TRF			0x04#define USB_ST_TCLF			0x05#define USB_ST_UF			0x06#define USB_ST_CSF			0x07#define USB_ST_TOMF			0x08#define USB_ST_USBTF			0x09#define USB_ST_NCT			0x0a#define USB_ST_PUF			0x0b#define USB_ST_EUF			0x0c#define USB_ST_MCMF			0x0d#define USB_ST_CCMF			0x0e#define USB_ST_ENF			0x0f#define USB_ST_ATMNF			0x10#define USB_ST_WHCM			0x11#define USB_ST_MDLM			0x12#define USB_ST_MDLMD			0x13#define USB_ST_DMM			0x14#define USB_ST_OBEX			0x15#define USB_ST_CS			0x16#define USB_ST_CSD			0x17#define USB_ST_TCM			0x18/* * commuications class description structures * * c.f. CDC 5.1 * c.f. WCMC 6.7.2 * * XXX add the other dozen class descriptor description structures.... */struct usb_header_description {	__u8 bDescriptorSubtype;	__u16 bcdCDC;};struct usb_call_management_description {	__u8 bmCapabilities;	__u8 bDataInterface;};struct usb_abstract_control_description {	__u8 bmCapabilities;};struct usb_union_function_description {	__u8 bMasterInterface;	__u8 bSlaveInterface[1];	//__u8        bSlaveInterface[0];                    // XXX FIXME};struct usb_ethernet_networking_description {	char *iMACAddress;	__u8 bmEthernetStatistics;	__u16 wMaxSegmentSize;	__u16 wNumberMCFilters;	__u8 bNumberPowerFilters;};struct usb_mobile_direct_line_model_description {	__u16 bcdVersion;	__u8 bGUID[16];};struct usb_mobile_direct_line_model_detail_description {	__u8 bGuidDescriptorType;	__u8 bDetailData[2];	//__u8      bDetailData[0];                         // XXX FIXME};/* * HID class types * * c.f. USB Device Class Definitions for Human Interface Devices (HID) * */#define CLASS_HID_BCD_VERSION               0x0101/* * HID class description structures * * c.f. HID 6.2.1 * */struct usb_hid_description {	__u16       bcdCDC;	__u8        bCountryCode;	__u8        bDescriptorType;	__u16       wDescriptorLength;	/* optional descriptors are not supported. */	__u8 *reportDescriptor;	/* FIXME: more human readable structure... */};struct usb_class_description {	__u8 bDescriptorType;	__u8 bDescriptorSubtype;	__u8 elements;	union {		struct usb_header_description header;		struct usb_call_management_description call_management;		struct usb_abstract_control_description abstract_control;		struct usb_union_function_description union_function;		struct usb_ethernet_networking_description ethernet_networking;		struct usb_mobile_direct_line_model_description mobile_direct;		struct usb_mobile_direct_line_model_detail_description mobile_direct_detail;		struct usb_hid_description hid;	} description;};/* endpoint modifiers * static struct usb_endpoint_description function_default_A_1[] = { * *     {this_endpoint: 0, attributes: CONTROL,   max_size: 8,  polling_interval: 0 }, *     {this_endpoint: 1, attributes: BULK,      max_size: 64, polling_interval: 0, direction: IN}, *     {this_endpoint: 2, attributes: BULK,      max_size: 64, polling_interval: 0, direction: OUT}, *     {this_endpoint: 3, attributes: INTERRUPT, max_size: 8,  polling_interval: 0}, * * */#define OUT		0x00#define IN		0x80#define CONTROL		0x00#define ISOCHRONOUS	0x01#define BULK		0x02#define INTERRUPT	0x03/* configuration modifiers */#define BMATTRIBUTE_RESERVED		0x80#define BMATTRIBUTE_SELF_POWERED	0x40/* * usb device description structures */struct usb_endpoint_description {	__u8 bEndpointAddress;	__u8 bmAttributes;	__u16 wMaxPacketSize;	__u8 bInterval;	__u8 direction;	__u32 transferSize;	// maximum bulk transfer size};struct usb_alternate_description {	char *iInterface;	__u8 bAlternateSetting;	// list of CDC class descriptions for this alternate interface	__u8 classes;	struct usb_class_description *class_list;	// list of endpoint descriptions for this alternate interface	__u8 endpoints;	struct usb_endpoint_description *endpoint_list;};struct usb_interface_description {	__u8 bInterfaceClass;	__u8 bInterfaceSubClass;	__u8 bInterfaceProtocol;	char *iInterface;	// list of alternate interface descriptions for this interface	__u8 alternates;	struct usb_alternate_description *alternate_list;};struct usb_configuration_description {	char *iConfiguration;	__u8 bmAttributes;	__u8 bMaxPower;	// list of interface descriptons for this configuration	__u8 interfaces;	struct usb_interface_description *interface_list;	int configuration_type;};#define VENDOR  0xffstruct usb_device_description {	__u8 bDeviceClass;	__u8 bDeviceSubClass;	__u8 bDeviceProtocol;	__u16 idVendor;	__u16 idProduct;	char *iManufacturer;	char *iProduct;	char *iSerialNumber;};/*  * standard usb descriptor structures */struct usb_endpoint_descriptor {	__u8 bLength;	__u8 bDescriptorType;	// 0x5	__u8 bEndpointAddress;	__u8 bmAttributes;	__u16 wMaxPacketSize;	__u8 bInterval;} __attribute__ ((packed));struct usb_interface_descriptor {	__u8 bLength;	__u8 bDescriptorType;	// 0x04	__u8 bInterfaceNumber;	__u8 bAlternateSetting;	__u8 bNumEndpoints;	__u8 bInterfaceClass;	__u8 bInterfaceSubClass;	__u8 bInterfaceProtocol;	__u8 iInterface;} __attribute__ ((packed));struct usb_configuration_descriptor {	__u8 bLength;	__u8 bDescriptorType;	// 0x2	__u16 wTotalLength;	__u8 bNumInterfaces;	__u8 bConfigurationValue;	__u8 iConfiguration;	__u8 bmAttributes;	__u8 bMaxPower;} __attribute__ ((packed));struct usb_device_descriptor {	__u8 bLength;	__u8 bDescriptorType;	// 0x01	__u16 bcdUSB;	__u8 bDeviceClass;	__u8 bDeviceSubClass;	__u8 bDeviceProtocol;	__u8 bMaxPacketSize0;

⌨️ 快捷键说明

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