diff options
Diffstat (limited to 'src/jtag/drivers/OpenULINK/include/usb.h')
-rw-r--r-- | src/jtag/drivers/OpenULINK/include/usb.h | 154 |
1 files changed, 77 insertions, 77 deletions
diff --git a/src/jtag/drivers/OpenULINK/include/usb.h b/src/jtag/drivers/OpenULINK/include/usb.h index 811d6bf1..3685f7d7 100644 --- a/src/jtag/drivers/OpenULINK/include/usb.h +++ b/src/jtag/drivers/OpenULINK/include/usb.h @@ -26,15 +26,15 @@ #include <stdint.h> #include <stdbool.h> -#define NULL (void*)0; +#define NULL (void *)0; /* High and Low byte of a word (uint16_t) */ #define HI8(word) (uint8_t)(((uint16_t)word >> 8) & 0xff) #define LO8(word) (uint8_t)((uint16_t)word & 0xff) /* Convenience functions */ -#define STALL_EP0() EP0CS |= EP0STALL -#define CLEAR_IRQ() EXIF &= ~USBINT +#define STALL_EP0() (EP0CS |= EP0STALL) +#define CLEAR_IRQ() (EXIF &= ~USBINT) /*********** USB descriptors. See section 9.5 of the USB 1.1 spec **********/ @@ -45,84 +45,84 @@ #define DESCRIPTOR_TYPE_INTERFACE 0x04 #define DESCRIPTOR_TYPE_ENDPOINT 0x05 -#define STR_DESCR(len,...) { len*2+2, DESCRIPTOR_TYPE_STRING, { __VA_ARGS__ } } +#define STR_DESCR(len, ...) { len * 2 + 2, DESCRIPTOR_TYPE_STRING, { __VA_ARGS__ } } /** USB Device Descriptor. See USB 1.1 spec, pp. 196 - 198 */ struct usb_device_descriptor { - uint8_t bLength; ///< Size of this descriptor in bytes. - uint8_t bDescriptorType; ///< DEVICE Descriptor Type. - uint16_t bcdUSB; ///< USB specification release number (BCD). - uint8_t bDeviceClass; ///< Class code. - uint8_t bDeviceSubClass; ///< Subclass code. - uint8_t bDeviceProtocol; ///< Protocol code. - uint8_t bMaxPacketSize0; ///< Maximum packet size for EP0 (8, 16, 32, 64). - uint16_t idVendor; ///< USB Vendor ID. - uint16_t idProduct; ///< USB Product ID. - uint16_t bcdDevice; ///< Device Release Number (BCD). - uint8_t iManufacturer; ///< Index of manufacturer string descriptor. - uint8_t iProduct; ///< Index of product string descriptor. - uint8_t iSerialNumber; ///< Index of string descriptor containing serial #. - uint8_t bNumConfigurations; ///< Number of possible configurations. + uint8_t bLength; /* /< Size of this descriptor in bytes. */ + uint8_t bDescriptorType;/* /< DEVICE Descriptor Type. */ + uint16_t bcdUSB; /* /< USB specification release number (BCD). */ + uint8_t bDeviceClass; /* /< Class code. */ + uint8_t bDeviceSubClass;/* /< Subclass code. */ + uint8_t bDeviceProtocol;/* /< Protocol code. */ + uint8_t bMaxPacketSize0;/* /< Maximum packet size for EP0 (8, 16, 32, 64). */ + uint16_t idVendor; /* /< USB Vendor ID. */ + uint16_t idProduct; /* /< USB Product ID. */ + uint16_t bcdDevice; /* /< Device Release Number (BCD). */ + uint8_t iManufacturer; /* /< Index of manufacturer string descriptor. */ + uint8_t iProduct; /* /< Index of product string descriptor. */ + uint8_t iSerialNumber; /* /< Index of string descriptor containing serial #. */ + uint8_t bNumConfigurations; /* /< Number of possible configurations. */ }; /** USB Configuration Descriptor. See USB 1.1 spec, pp. 199 - 200 */ struct usb_config_descriptor { - uint8_t bLength; ///< Size of this descriptor in bytes. - uint8_t bDescriptorType; ///< CONFIGURATION descriptor type. - uint16_t wTotalLength; ///< Combined total length of all descriptors. - uint8_t bNumInterfaces; ///< Number of interfaces in this configuration. - uint8_t bConfigurationValue;///< Value used to select this configuration. - uint8_t iConfiguration; ///< Index of configuration string descriptor. - uint8_t bmAttributes; ///< Configuration characteristics. - uint8_t MaxPower; ///< Maximum power consumption in 2 mA units. + uint8_t bLength; /* /< Size of this descriptor in bytes. */ + uint8_t bDescriptorType;/* /< CONFIGURATION descriptor type. */ + uint16_t wTotalLength; /* /< Combined total length of all descriptors. */ + uint8_t bNumInterfaces; /* /< Number of interfaces in this configuration. */ + uint8_t bConfigurationValue; /* /< Value used to select this configuration. */ + uint8_t iConfiguration; /* /< Index of configuration string descriptor. */ + uint8_t bmAttributes; /* /< Configuration characteristics. */ + uint8_t MaxPower; /* /< Maximum power consumption in 2 mA units. */ }; /** USB Interface Descriptor. See USB 1.1 spec, pp. 201 - 203 */ struct usb_interface_descriptor { - uint8_t bLength; ///< Size of this descriptor in bytes. - uint8_t bDescriptorType; ///< INTERFACE descriptor type. - uint8_t bInterfaceNumber; ///< Interface number. - uint8_t bAlternateSetting; ///< Value used to select alternate setting. - uint8_t bNumEndpoints; ///< Number of endpoints used by this interface. - uint8_t bInterfaceClass; ///< Class code. - uint8_t bInterfaceSubclass; ///< Subclass code. - uint8_t bInterfaceProtocol; ///< Protocol code. - uint8_t iInterface; ///< Index of interface string descriptor. + uint8_t bLength; /* /< Size of this descriptor in bytes. */ + uint8_t bDescriptorType;/* /< INTERFACE descriptor type. */ + uint8_t bInterfaceNumber; /* /< Interface number. */ + uint8_t bAlternateSetting; /* /< Value used to select alternate setting. */ + uint8_t bNumEndpoints; /* /< Number of endpoints used by this interface. */ + uint8_t bInterfaceClass;/* /< Class code. */ + uint8_t bInterfaceSubclass; /* /< Subclass code. */ + uint8_t bInterfaceProtocol; /* /< Protocol code. */ + uint8_t iInterface; /* /< Index of interface string descriptor. */ }; /** USB Endpoint Descriptor. See USB 1.1 spec, pp. 203 - 204 */ struct usb_endpoint_descriptor { - uint8_t bLength; ///< Size of this descriptor in bytes. - uint8_t bDescriptorType; ///< ENDPOINT descriptor type. - uint8_t bEndpointAddress; ///< Endpoint Address: USB 1.1 spec, table 9-10. - uint8_t bmAttributes; ///< Endpoint Attributes: USB 1.1 spec, table 9-10. - uint16_t wMaxPacketSize; ///< Maximum packet size for this endpoint. - uint8_t bInterval; ///< Polling interval (in ms) for this endpoint. + uint8_t bLength; /* /< Size of this descriptor in bytes. */ + uint8_t bDescriptorType;/* /< ENDPOINT descriptor type. */ + uint8_t bEndpointAddress; /* /< Endpoint Address: USB 1.1 spec, table 9-10. */ + uint8_t bmAttributes; /* /< Endpoint Attributes: USB 1.1 spec, table 9-10. */ + uint16_t wMaxPacketSize;/* /< Maximum packet size for this endpoint. */ + uint8_t bInterval; /* /< Polling interval (in ms) for this endpoint. */ }; /** USB Language Descriptor. See USB 1.1 spec, pp. 204 - 205 */ struct usb_language_descriptor { - uint8_t bLength; ///< Size of this descriptor in bytes. - uint8_t bDescriptorType; ///< STRING descriptor type. - uint16_t wLANGID[]; ///< LANGID codes. + uint8_t bLength; /* /< Size of this descriptor in bytes. */ + uint8_t bDescriptorType;/* /< STRING descriptor type. */ + uint16_t wLANGID[]; /* /< LANGID codes. */ }; /** USB String Descriptor. See USB 1.1 spec, pp. 204 - 205 */ struct usb_string_descriptor { - uint8_t bLength; ///< Size of this descriptor in bytes. - uint8_t bDescriptorType; ///< STRING descriptor type. - uint16_t bString[]; ///< UNICODE encoded string. + uint8_t bLength; /* /< Size of this descriptor in bytes. */ + uint8_t bDescriptorType;/* /< STRING descriptor type. */ + uint16_t bString[]; /* /< UNICODE encoded string. */ }; /********************** USB Control Endpoint 0 related *********************/ /** USB Control Setup Data. See USB 1.1 spec, pp. 183 - 185 */ struct setup_data { - uint8_t bmRequestType; ///< Characteristics of a request. - uint8_t bRequest; ///< Specific request. - uint16_t wValue; ///< Field that varies according to request. - uint16_t wIndex; ///< Field that varies according to request. - uint16_t wLength; ///< Number of bytes to transfer in data stage. + uint8_t bmRequestType; /* /< Characteristics of a request. */ + uint8_t bRequest; /* /< Specific request. */ + uint16_t wValue; /* /< Field that varies according to request. */ + uint16_t wIndex; /* /< Field that varies according to request. */ + uint16_t wLength; /* /< Number of bytes to transfer in data stage. */ }; /* External declarations for variables that need to be accessed outside of @@ -206,9 +206,9 @@ extern volatile __xdata __at 0x7FE8 struct setup_data setup_data; /* USB Requests (bRequest): See USB 1.1 spec, table 9-4 on page 187 */ #define GET_STATUS 0 #define CLEAR_FEATURE 1 -// Value '2' is reserved for future use +/* Value '2' is reserved for future use */ #define SET_FEATURE 3 -// Value '4' is reserved for future use +/* Value '4' is reserved for future use */ #define SET_ADDRESS 5 #define GET_DESCRIPTOR 6 #define SET_DESCRIPTOR 7 @@ -226,33 +226,33 @@ extern volatile __xdata __at 0x7FE8 struct setup_data setup_data; /** USB Interrupts. See AN2131-TRM, page 9-4 for details */ enum usb_isr { - SUDAV_ISR = 13, - SOF_ISR, - SUTOK_ISR, - SUSPEND_ISR, - USBRESET_ISR, - IBN_ISR, - EP0IN_ISR, - EP0OUT_ISR, - EP1IN_ISR, - EP1OUT_ISR, - EP2IN_ISR, - EP2OUT_ISR, - EP3IN_ISR, - EP3OUT_ISR, - EP4IN_ISR, - EP4OUT_ISR, - EP5IN_ISR, - EP5OUT_ISR, - EP6IN_ISR, - EP6OUT_ISR, - EP7IN_ISR, - EP7OUT_ISR + SUDAV_ISR = 13, + SOF_ISR, + SUTOK_ISR, + SUSPEND_ISR, + USBRESET_ISR, + IBN_ISR, + EP0IN_ISR, + EP0OUT_ISR, + EP1IN_ISR, + EP1OUT_ISR, + EP2IN_ISR, + EP2OUT_ISR, + EP3IN_ISR, + EP3OUT_ISR, + EP4IN_ISR, + EP4OUT_ISR, + EP5IN_ISR, + EP5OUT_ISR, + EP6IN_ISR, + EP6OUT_ISR, + EP7IN_ISR, + EP7OUT_ISR }; /*************************** Function Prototypes ***************************/ -__xdata uint8_t* usb_get_endpoint_cs_reg(uint8_t ep); +__xdata uint8_t *usb_get_endpoint_cs_reg(uint8_t ep); void usb_reset_data_toggle(uint8_t ep); bool usb_handle_get_status(void); |