ULINK driver: Remove typedefs in OpenULINK firmware USB descriptor structures

Signed-off-by: Martin Schmölzer <martin.schmoelzer@student.tuwien.ac.at>
This commit is contained in:
Martin Schmölzer 2011-08-31 00:20:35 +02:00 committed by Øyvind Harboe
parent 355f183adb
commit ea7c87e5e7
2 changed files with 45 additions and 37 deletions

View File

@ -48,7 +48,7 @@
#define STR_DESCR(len,...) { len*2+2, DESCRIPTOR_TYPE_STRING, { __VA_ARGS__ } }
/** USB Device Descriptor. See USB 1.1 spec, pp. 196 - 198 */
typedef struct {
struct usb_device_descriptor {
u8 bLength; ///< Size of this descriptor in bytes.
u8 bDescriptorType; ///< DEVICE Descriptor Type.
u16 bcdUSB; ///< USB specification release number (BCD).
@ -63,10 +63,10 @@ typedef struct {
u8 iProduct; ///< Index of product string descriptor.
u8 iSerialNumber; ///< Index of string descriptor containing serial #.
u8 bNumConfigurations; ///< Number of possible configurations.
} usb_device_descriptor_t;
};
/** USB Configuration Descriptor. See USB 1.1 spec, pp. 199 - 200 */
typedef struct {
struct usb_config_descriptor {
u8 bLength; ///< Size of this descriptor in bytes.
u8 bDescriptorType; ///< CONFIGURATION descriptor type.
u16 wTotalLength; ///< Combined total length of all descriptors.
@ -75,10 +75,10 @@ typedef struct {
u8 iConfiguration; ///< Index of configuration string descriptor.
u8 bmAttributes; ///< Configuration characteristics.
u8 MaxPower; ///< Maximum power consumption in 2 mA units.
} usb_config_descriptor_t;
};
/** USB Interface Descriptor. See USB 1.1 spec, pp. 201 - 203 */
typedef struct {
struct usb_interface_descriptor {
u8 bLength; ///< Size of this descriptor in bytes.
u8 bDescriptorType; ///< INTERFACE descriptor type.
u8 bInterfaceNumber; ///< Interface number.
@ -88,48 +88,48 @@ typedef struct {
u8 bInterfaceSubclass; ///< Subclass code.
u8 bInterfaceProtocol; ///< Protocol code.
u8 iInterface; ///< Index of interface string descriptor.
} usb_interface_descriptor_t;
};
/** USB Endpoint Descriptor. See USB 1.1 spec, pp. 203 - 204 */
typedef struct {
struct usb_endpoint_descriptor {
u8 bLength; ///< Size of this descriptor in bytes.
u8 bDescriptorType; ///< ENDPOINT descriptor type.
u8 bEndpointAddress; ///< Endpoint Address: USB 1.1 spec, table 9-10.
u8 bmAttributes; ///< Endpoint Attributes: USB 1.1 spec, table 9-10.
u16 wMaxPacketSize; ///< Maximum packet size for this endpoint.
u8 bInterval; ///< Polling interval (in ms) for this endpoint.
} usb_endpoint_descriptor_t;
};
/** USB Language Descriptor. See USB 1.1 spec, pp. 204 - 205 */
typedef struct {
struct usb_language_descriptor {
u8 bLength; ///< Size of this descriptor in bytes.
u8 bDescriptorType; ///< STRING descriptor type.
u16 wLANGID[]; ///< LANGID codes.
} usb_language_descriptor_t;
};
/** USB String Descriptor. See USB 1.1 spec, pp. 204 - 205 */
typedef struct {
struct usb_string_descriptor {
u8 bLength; ///< Size of this descriptor in bytes.
u8 bDescriptorType; ///< STRING descriptor type.
u16 bString[]; ///< UNICODE encoded string.
} usb_string_descriptor_t;
};
/********************** USB Control Endpoint 0 related *********************/
/** USB Control Setup Data. See USB 1.1 spec, pp. 183 - 185 */
typedef struct {
struct setup_data {
u8 bmRequestType; ///< Characteristics of a request.
u8 bRequest; ///< Specific request.
u16 wValue; ///< Field that varies according to request.
u16 wIndex; ///< Field that varies according to request.
u16 wLength; ///< Number of bytes to transfer in data stage.
} setup_data_t;
};
/* External declarations for variables that need to be accessed outside of
* the USB module */
extern volatile bool EP2_out;
extern volatile bool EP2_in;
extern volatile __xdata __at 0x7FE8 setup_data_t setup_data;
extern volatile __xdata __at 0x7FE8 struct setup_data setup_data;
/*
* USB Request Types (bmRequestType): See USB 1.1 spec, page 183, table 9-2
@ -225,7 +225,7 @@ extern volatile __xdata __at 0x7FE8 setup_data_t setup_data;
/************************** EZ-USB specific stuff **************************/
/** USB Interrupts. See AN2131-TRM, page 9-4 for details */
typedef enum {
enum usb_isr {
SUDAV_ISR = 13,
SOF_ISR,
SUTOK_ISR,
@ -248,7 +248,7 @@ typedef enum {
EP6OUT_ISR,
EP7IN_ISR,
EP7OUT_ISR
} USB_ISR;
};
/*************************** Function Prototypes ***************************/

View File

@ -36,7 +36,7 @@
volatile bool EP2_out = 0;
volatile bool EP2_in = 0;
volatile __xdata __at 0x7FE8 setup_data_t setup_data;
volatile __xdata __at 0x7FE8 struct setup_data setup_data;
/* Define number of endpoints (except Control Endpoint 0) in a central place.
* Be sure to include the neccessary endpoint descriptors! */
@ -56,8 +56,8 @@ volatile __xdata __at 0x7FE8 setup_data_t setup_data;
* old-fashioned way...
*/
__code usb_device_descriptor_t device_descriptor = {
/* .bLength = */ sizeof(usb_device_descriptor_t),
__code struct usb_device_descriptor device_descriptor = {
/* .bLength = */ sizeof(struct usb_device_descriptor),
/* .bDescriptorType = */ DESCRIPTOR_TYPE_DEVICE,
/* .bcdUSB = */ 0x0110, /* BCD: 01.00 (Version 1.0 USB spec) */
/* .bDeviceClass = */ 0xFF, /* 0xFF = vendor-specific */
@ -75,12 +75,13 @@ __code usb_device_descriptor_t device_descriptor = {
/* WARNING: ALL config, interface and endpoint descriptors MUST be adjacent! */
__code usb_config_descriptor_t config_descriptor = {
/* .bLength = */ sizeof(usb_config_descriptor_t),
__code struct usb_config_descriptor config_descriptor = {
/* .bLength = */ sizeof(struct usb_config_descriptor),
/* .bDescriptorType = */ DESCRIPTOR_TYPE_CONFIGURATION,
/* .wTotalLength = */ sizeof(usb_config_descriptor_t) +
sizeof(usb_interface_descriptor_t) +
NUM_ENDPOINTS * sizeof(usb_endpoint_descriptor_t),
/* .wTotalLength = */ sizeof(struct usb_config_descriptor) +
sizeof(struct usb_interface_descriptor) +
(NUM_ENDPOINTS *
sizeof(struct usb_endpoint_descriptor)),
/* .bNumInterfaces = */ 1,
/* .bConfigurationValue = */ 1,
/* .iConfiguration = */ 4, /* String describing this configuration */
@ -88,8 +89,8 @@ __code usb_config_descriptor_t config_descriptor = {
/* .MaxPower = */ 50 /* 100 mA */
};
__code usb_interface_descriptor_t interface_descriptor00 = {
/* .bLength = */ sizeof(usb_interface_descriptor_t),
__code struct usb_interface_descriptor interface_descriptor00 = {
/* .bLength = */ sizeof(struct usb_interface_descriptor),
/* .bDescriptorType = */ DESCRIPTOR_TYPE_INTERFACE,
/* .bInterfaceNumber = */ 0,
/* .bAlternateSetting = */ 0,
@ -100,8 +101,8 @@ __code usb_interface_descriptor_t interface_descriptor00 = {
/* .iInterface = */ 0
};
__code usb_endpoint_descriptor_t Bulk_EP2_IN_Endpoint_Descriptor = {
/* .bLength = */ sizeof(usb_endpoint_descriptor_t),
__code struct usb_endpoint_descriptor Bulk_EP2_IN_Endpoint_Descriptor = {
/* .bLength = */ sizeof(struct usb_endpoint_descriptor),
/* .bDescriptorType = */ 0x05,
/* .bEndpointAddress = */ 2 | USB_DIR_IN,
/* .bmAttributes = */ 0x02,
@ -109,8 +110,8 @@ __code usb_endpoint_descriptor_t Bulk_EP2_IN_Endpoint_Descriptor = {
/* .bInterval = */ 0
};
__code usb_endpoint_descriptor_t Bulk_EP2_OUT_Endpoint_Descriptor = {
/* .bLength = */ sizeof(usb_endpoint_descriptor_t),
__code struct usb_endpoint_descriptor Bulk_EP2_OUT_Endpoint_Descriptor = {
/* .bLength = */ sizeof(struct usb_endpoint_descriptor),
/* .bDescriptorType = */ 0x05,
/* .bEndpointAddress = */ 2 | USB_DIR_OUT,
/* .bmAttributes = */ 0x02,
@ -118,19 +119,26 @@ __code usb_endpoint_descriptor_t Bulk_EP2_OUT_Endpoint_Descriptor = {
/* .bInterval = */ 0
};
__code usb_language_descriptor_t language_descriptor = {
__code struct usb_language_descriptor language_descriptor = {
/* .bLength = */ 4,
/* .bDescriptorType = */ DESCRIPTOR_TYPE_STRING,
/* .wLANGID = */ {0x0409 /* US English */}
};
__code usb_string_descriptor_t strManufacturer = STR_DESCR(9,'O','p','e','n','U','L','I','N','K');
__code usb_string_descriptor_t strProduct = STR_DESCR(9,'O','p','e','n','U','L','I','N','K');
__code usb_string_descriptor_t strSerialNumber = STR_DESCR(6, '0','0','0','0','0','1');
__code usb_string_descriptor_t strConfigDescr = STR_DESCR(12, 'J','T','A','G',' ','A','d','a','p','t','e','r');
__code struct usb_string_descriptor strManufacturer =
STR_DESCR(9,'O','p','e','n','U','L','I','N','K');
__code struct usb_string_descriptor strProduct =
STR_DESCR(9,'O','p','e','n','U','L','I','N','K');
__code struct usb_string_descriptor strSerialNumber =
STR_DESCR(6, '0','0','0','0','0','1');
__code struct usb_string_descriptor strConfigDescr =
STR_DESCR(12, 'J','T','A','G',' ','A','d','a','p','t','e','r');
/* Table containing pointers to string descriptors */
__code usb_string_descriptor_t* __code en_string_descriptors[4] = {
__code struct usb_string_descriptor* __code en_string_descriptors[4] = {
&strManufacturer,
&strProduct,
&strSerialNumber,