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

📄 usbd-func.h

📁 linux嵌入式课程实践中的一个关于声卡驱动程序 。
💻 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. * *//* Mass Storage types */#define MS_INTERFACE_CLASS				0x08#define MS_INTERFACE_SUBCLASS_RBC		0x01#define MS_INTERFACE_SUBCLASS_CDROM		0x02#define MS_INTERFACE_SUBCLASS_SCSI		0x06#define MS_INTERFACE_PROTOCOL_BULK_ONLY 0x50// Local defines from the mass storage class spec#define SC_MASS_STORAGE_RESET       0xff#define SC_GET_MAX_LUN              0xfe#define CBW_TAG                     4#define CBW_DATA_TRANSFER_LEN_LSB   8#define CBW_DATA_TRANSFER_LEN_MSB   9#define CBW_FLAGS                   12#define CBW_FLAGS_DIR_BIT           0x80#define CBW_LUN                     13#define CBW_CBW_LEN                 14#define CBW_CBW_LEN_MASK            0xf#define CBW_DATA_START              15/* HID class types */#define HID_INTERFACE_CLASS				0x03#define HID_INTERFACE_SUBCLASS_NONE		0x00#define HID_INTERFACE_SUBCLASS_BOOT		0x01#define HID_INTERFACE_PROTOCOL_NONE		0x00#define HID_INTERFACE_PROTOCOL_KEYBOARD	0x01#define HID_INTERFACE_PROTOCOL_MOUSE	0x02/* * 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#define USB_ST_HID          0x21#define USB_ST_REP          0x22#define USB_ST_PID          0x23/* * 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};struct usb_hid_description {    __u16   bcdHID;    __u8    bCountryCode;    //__u8    bNumDescriptors;    __u8    bDescriptorType1;    __u16   wDescriptorLength1;};struct usb_class_description {    __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#define BMATTRIBUTE_REMOTE_WAKEUP       0x20/* OTG bmAttribute modifiers */#define BMATTRIBUTE_HNP_SUPPORT         0x2#define BMATTRIBUTE_SRP_SUPPORT         0x1/* * usb device description structures */ struct usb_otg_description {    __u8                bmAttributes;};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_otg_description *otg_description;};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;    struct usb_otg_description *otg_description;    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_otg_descriptor {    __u8                bLength;    __u8                bDescriptorType;    __u8                bmAttributes;} __attribute__((packed));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;

⌨️ 快捷键说明

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