diff options
author | H. Nikolaus Schaller <hns@goldelico.com> | 2012-03-26 20:55:28 +0200 |
---|---|---|
committer | H. Nikolaus Schaller <hns@goldelico.com> | 2012-03-26 20:55:28 +0200 |
commit | 92988a21ad4c4c9504295ccb580c9f806134471b (patch) | |
tree | 5effc9f14170112450de05c67dafbe8d5034d595 /include/usbdescriptors.h | |
parent | ca2b506783b676c95762c54ea24dcfdaae1947c9 (diff) | |
download | bootable_bootloader_goldelico_gta04-92988a21ad4c4c9504295ccb580c9f806134471b.zip bootable_bootloader_goldelico_gta04-92988a21ad4c4c9504295ccb580c9f806134471b.tar.gz bootable_bootloader_goldelico_gta04-92988a21ad4c4c9504295ccb580c9f806134471b.tar.bz2 |
added boot script files to repository
Diffstat (limited to 'include/usbdescriptors.h')
-rw-r--r-- | include/usbdescriptors.h | 533 |
1 files changed, 0 insertions, 533 deletions
diff --git a/include/usbdescriptors.h b/include/usbdescriptors.h deleted file mode 100644 index 2dec3b9..0000000 --- a/include/usbdescriptors.h +++ /dev/null @@ -1,533 +0,0 @@ -/* - * (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_CONTROL 0x02 -#define COMMUNICATIONS_INTERFACE_CLASS_DATA 0x0A -#define COMMUNICATIONS_INTERFACE_CLASS_VENDOR 0x0FF - -/* 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.4 Table 17 */ -#define COMMUNICATIONS_NO_PROTOCOL 0x00 -#define COMMUNICATIONS_V25TER_PROTOCOL 0x01 /*Common AT Hayes compatible*/ - -/* c.f. CDC 4.5 Table 18 */ -#define DATA_INTERFACE_CLASS 0x0a - -/* c.f. CDC 4.6 No Table */ -#define DATA_INTERFACE_SUBCLASS_NONE 0x00 /* No subclass pertinent */ - -/* c.f. CDC 4.7 Table 19 */ -#define DATA_INTERFACE_PROTOCOL_NONE 0x00 /* No class protcol required */ - - -/* 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]; */ - u8 bSlaveInterface0; -} __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)); - -#ifdef DEBUG -static inline void print_device_descriptor(struct usb_device_descriptor *d) -{ - serial_printf("usb device descriptor \n"); - serial_printf("\tbLength %2.2x\n", d->bLength); - serial_printf("\tbDescriptorType %2.2x\n", d->bDescriptorType); - serial_printf("\tbcdUSB %4.4x\n", d->bcdUSB); - serial_printf("\tbDeviceClass %2.2x\n", d->bDeviceClass); - serial_printf("\tbDeviceSubClass %2.2x\n", d->bDeviceSubClass); - serial_printf("\tbDeviceProtocol %2.2x\n", d->bDeviceProtocol); - serial_printf("\tbMaxPacketSize0 %2.2x\n", d->bMaxPacketSize0); - serial_printf("\tidVendor %4.4x\n", d->idVendor); - serial_printf("\tidProduct %4.4x\n", d->idProduct); - serial_printf("\tbcdDevice %4.4x\n", d->bcdDevice); - serial_printf("\tiManufacturer %2.2x\n", d->iManufacturer); - serial_printf("\tiProduct %2.2x\n", d->iProduct); - serial_printf("\tiSerialNumber %2.2x\n", d->iSerialNumber); - serial_printf("\tbNumConfigurations %2.2x\n", d->bNumConfigurations); -} - -#else - -/* stubs */ -#define print_device_descriptor(d) - -#endif /* DEBUG */ -#endif |