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

📄 usbdescriptors.h

📁 F:worksip2440a board可启动u-boot-like.tar.gz F:worksip2440a board可启动u-boot-like.tar.gz
💻 H
字号:
/* * (C) Copyright 2003 * Gerry Hamel, geh@ti.com, Texas Instruments * * Based on * 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 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. * */#ifndef __USBDESCRIPTORS_H__#define __USBDESCRIPTORS_H__#include <asm/types.h>/* * 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/* 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/* * 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;	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));#endif

⌨️ 快捷键说明

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