?? usbd-func.h
字號(hào):
/* * 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;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)