aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/fx3/b200/b200_usb_descriptors.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/fx3/b200/b200_usb_descriptors.c')
-rw-r--r--firmware/fx3/b200/b200_usb_descriptors.c510
1 files changed, 510 insertions, 0 deletions
diff --git a/firmware/fx3/b200/b200_usb_descriptors.c b/firmware/fx3/b200/b200_usb_descriptors.c
new file mode 100644
index 000000000..e8a765b24
--- /dev/null
+++ b/firmware/fx3/b200/b200_usb_descriptors.c
@@ -0,0 +1,510 @@
+//
+// Copyright 2013-2014 Ettus Research LLC
+//
+
+/* Define the USB 2.0 and USB 3.0 enumeration descriptions for the USRP B200
+ * device. */
+
+
+#include "b200_main.h"
+
+
+/* Standard Device Descriptor for USB 2.0 */
+uint8_t b200_usb2_dev_desc[] __attribute__ ((aligned (32))) =
+{
+ 0x12, /* Descriptor size */
+ CY_U3P_USB_DEVICE_DESCR, /* Device descriptor type */
+ 0x10,0x02, /* USB 2.10 */
+ 0xFF, /* Device class */
+ 0x00, /* Device sub-class */
+ 0x00, /* Device protocol */
+ 0x40, /* Maxpacket size for EP0 : 64 bytes */
+ 0xB4,0x04, /* Vendor ID */
+ 0xF0,0x00, /* Product ID */
+ 0x00,0x00, /* Device release number */
+ 0x01, /* Manufacture string index */
+ 0x02, /* Product string index */
+ 0x03, /* Serial number string index */
+ 0x01 /* Number of configurations */
+};
+
+
+/* Standard Device Descriptor for USB 3.0 */
+uint8_t b200_usb3_dev_desc[] __attribute__ ((aligned (32))) =
+{
+ 0x12, /* Descriptor size */
+ CY_U3P_USB_DEVICE_DESCR, /* Device descriptor type */
+ 0x00,0x03, /* USB 3.0 */
+ 0xFF, /* Device class */
+ 0x00, /* Device sub-class */
+ 0x00, /* Device protocol */
+ 0x09, /* Maxpacket size for EP0 : 2^9 */
+ 0xB4,0x04, /* Vendor ID */
+ 0xF0,0x00, /* Product ID */
+ 0x00,0x00, /* Device release number */
+ 0x01, /* Manufacture string index */
+ 0x02, /* Product string index */
+ 0x03, /* Serial number string index */
+ 0x01 /* Number of configurations */
+};
+
+
+/* Binary Device Object Store Descriptor */
+const uint8_t b200_usb_bos_desc[] __attribute__ ((aligned (32))) =
+{
+ 0x05, /* Descriptor size */
+ CY_U3P_BOS_DESCR, /* Device descriptor type */
+ 0x16,0x00, /* Length of this descriptor and all sub descriptors */
+ 0x02, /* Number of device capability descriptors */
+
+ /* USB 2.0 extension */
+ 0x07, /* Descriptor size */
+ CY_U3P_DEVICE_CAPB_DESCR, /* Device capability type descriptor */
+ CY_U3P_USB2_EXTN_CAPB_TYPE, /* USB 2.0 extension capability type */
+ 0x02,0x00,0x00,0x00, /* Supported device level features: LPM support */
+
+ /* SuperSpeed device capability */
+ 0x0A, /* Descriptor size */
+ CY_U3P_DEVICE_CAPB_DESCR, /* Device capability type descriptor */
+ CY_U3P_SS_USB_CAPB_TYPE, /* SuperSpeed device capability type */
+ 0x00, /* Supported device level features */
+ 0x0E,0x00, /* Speeds supported by the device : SS, HS and FS */
+ 0x03, /* Functionality support */
+ 0x00, /* U1 Device Exit latency */
+ 0x00,0x00 /* U2 Device Exit latency */
+};
+
+
+/* Standard Device Qualifier Descriptor */
+const uint8_t b200_dev_qual_desc[] __attribute__ ((aligned (32))) =
+{
+ 0x0A, /* Descriptor size */
+ CY_U3P_USB_DEVQUAL_DESCR, /* Device qualifier descriptor type */
+ 0x00,0x02, /* USB 2.0 */
+ 0xFF, /* Device class */
+ 0x00, /* Device sub-class */
+ 0x00, /* Device protocol */
+ 0x40, /* Maxpacket size for EP0 : 64 bytes */
+ 0x01, /* Number of configurations */
+ 0x00 /* Reserved */
+};
+
+
+/* Standard Full Speed Configuration Descriptor */
+const uint8_t b200_usb_fs_config_desc[] __attribute__ ((aligned (32))) =
+{
+ /* Configuration descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_CONFIG_DESCR, /* Configuration descriptor type */
+ 0x52,0x00, /* Length of this descriptor and all sub descriptors */
+ 0x05, /* Number of interfaces */
+ 0x01, /* Configuration number */
+ 0x00, /* Configuration string index */
+ 0x80, /* Config characteristics - bus powered */
+ 0x01, /* Lie about the max power consumption (in 2mA unit) : 2mA */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
+ 0x00, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x00, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
+ 0x01, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for producer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ DATA_ENDPOINT_PRODUCER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x40,0x00, /* Max packet size = 64 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
+ 0x02, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for consumer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ DATA_ENDPOINT_CONSUMER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x40,0x00, /* Max packet size = 64 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
+ 0x03, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for producer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ CTRL_ENDPOINT_PRODUCER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x40,0x00, /* Max packet size = 64 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
+ 0x04, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for consumer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ CTRL_ENDPOINT_CONSUMER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x40,0x00, /* Max packet size = 64 bytes */
+ 0x00 /* Servicing interval for data transfers : 0 for bulk */
+};
+
+
+/* Standard High Speed Configuration Descriptor */
+const uint8_t b200_usb_hs_config_desc[] __attribute__ ((aligned (32))) =
+{
+ /* Configuration descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_CONFIG_DESCR, /* Configuration descriptor type */
+ 0x52,0x00, /* Length of this descriptor and all sub descriptors */
+ 0x05, /* Number of interfaces */
+ 0x01, /* Configuration number */
+ 0x00, /* COnfiguration string index */
+ 0x80, /* Config characteristics - bus powered */
+ 0x01, /* Lie about the max power consumption (in 2mA unit) : 2mA */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x00, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x00, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x01, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for producer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ DATA_ENDPOINT_PRODUCER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x00,0x02, /* Max packet size = 512 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x02, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for consumer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ DATA_ENDPOINT_CONSUMER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x00,0x02, /* Max packet size = 512 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x03, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for producer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ CTRL_ENDPOINT_PRODUCER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x00,0x02, /* Max packet size = 512 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x04, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of endpoints */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for consumer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ CTRL_ENDPOINT_CONSUMER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x00,0x02, /* Max packet size = 512 bytes */
+ 0x00 /* Servicing interval for data transfers : 0 for bulk */
+};
+
+
+/* Standard Super Speed Configuration Descriptor */
+const uint8_t b200_usb_ss_config_desc[] __attribute__ ((aligned (32))) =
+{
+ /* Configuration descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_CONFIG_DESCR, /* Configuration descriptor type */
+ 0x6A,0x00, /* Length of this descriptor and all sub descriptors */
+ 0x05, /* Number of interfaces */
+ 0x01, /* Configuration number */
+ 0x00, /* COnfiguration string index */
+ 0x80, /* Config characteristics - D6: Self power; D5: Remote wakeup */
+ 0x01, /* Lie about the max power consumption (in 8mA unit) : 8mA */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x00, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x00, /* Number of end points */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x01, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of end points */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for producer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ DATA_ENDPOINT_PRODUCER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x00,0x04, /* Max packet size = 1024 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for bulk */
+
+ /* Super speed endpoint companion descriptor for producer EP */
+ 0x06, /* Descriptor size */
+ CY_U3P_SS_EP_COMPN_DESCR, /* SS endpoint companion descriptor type */
+ (USB3_PACKETS_PER_BURST - 1), /* Max no. of packets in a burst : 0: burst 1 packet at a time */
+ 0x00, /* Max streams for bulk EP = 0 (No streams) */
+ 0x00,0x00, /* Service interval for the EP : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x02, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of end points */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for consumer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ DATA_ENDPOINT_CONSUMER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x00,0x04, /* Max packet size = 1024 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for Bulk */
+
+ /* Super speed endpoint companion descriptor for consumer EP */
+ 0x06, /* Descriptor size */
+ CY_U3P_SS_EP_COMPN_DESCR, /* SS endpoint companion descriptor type */
+ (USB3_PACKETS_PER_BURST - 1), /* Max no. of packets in a burst : 0: burst 1 packet at a time */
+ 0x00, /* Max streams for bulk EP = 0 (No streams) */
+ 0x00,0x00, /* Service interval for the EP : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x03, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of end points */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for producer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ CTRL_ENDPOINT_PRODUCER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x00,0x04, /* Max packet size = 1024 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for bulk */
+
+ /* Super speed endpoint companion descriptor for producer EP */
+ 0x06, /* Descriptor size */
+ CY_U3P_SS_EP_COMPN_DESCR, /* SS endpoint companion descriptor type */
+ (USB3_PACKETS_PER_BURST - 1), /* Max no. of packets in a burst : 0: burst 1 packet at a time */
+ 0x00, /* Max streams for bulk EP = 0 (No streams) */
+ 0x00,0x00, /* Service interval for the EP : 0 for bulk */
+
+ /* Interface descriptor */
+ 0x09, /* Descriptor size */
+ CY_U3P_USB_INTRFC_DESCR, /* Interface Descriptor type */
+ 0x04, /* Interface number */
+ 0x00, /* Alternate setting number */
+ 0x01, /* Number of end points */
+ 0xFF, /* Interface class */
+ 0x00, /* Interface sub class */
+ 0x00, /* Interface protocol code */
+ 0x02, /* Interface descriptor string index */
+
+ /* Endpoint descriptor for consumer EP */
+ 0x07, /* Descriptor size */
+ CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
+ CTRL_ENDPOINT_CONSUMER, /* Endpoint address and description */
+ CY_U3P_USB_EP_BULK, /* Bulk endpoint type */
+ 0x00,0x04, /* Max packet size = 1024 bytes */
+ 0x00, /* Servicing interval for data transfers : 0 for Bulk */
+
+ /* Super speed endpoint companion descriptor for consumer EP */
+ 0x06, /* Descriptor size */
+ CY_U3P_SS_EP_COMPN_DESCR, /* SS endpoint companion descriptor type */
+ (USB3_PACKETS_PER_BURST - 1), /* Max no. of packets in a burst : 0: burst 1 packet at a time */
+ 0x00, /* Max streams for bulk EP = 0 (No streams) */
+ 0x00,0x00 /* Service interval for the EP : 0 for bulk */
+};
+
+
+/* Standard Language ID String Descriptor */
+const uint8_t b200_string_lang_id_desc[] __attribute__ ((aligned (32))) =
+ {
+ 0x04, /* Descriptor Size */
+ CY_U3P_USB_STRING_DESCR, /* Device Descriptor Type */
+ 0x09,0x04 /* Language ID supported */
+ };
+
+
+/* Standard Manufacturer String Descriptor */
+const uint8_t b200_usb_manufacture_desc[] __attribute__ ((aligned (32))) =
+ {
+ 0x26, /* Descriptor Size */
+ CY_U3P_USB_STRING_DESCR, /* Device Descriptor Type */
+ 'E',0x00,
+ 't',0x00,
+ 't',0x00,
+ 'u',0x00,
+ 's',0x00,
+ ' ',0x00,
+ 'R',0x00,
+ 'e',0x00,
+ 's',0x00,
+ 'e',0x00,
+ 'a',0x00,
+ 'r',0x00,
+ 'c',0x00,
+ 'h',0x00,
+ ' ',0x00,
+ 'L',0x00,
+ 'L',0x00,
+ 'C',0x00
+ };
+
+
+/* Standard Product String Descriptor */
+const uint8_t b200_usb_product_desc[] __attribute__ ((aligned (32))) =
+ {
+ 0x14, /* Descriptor Size */
+ CY_U3P_USB_STRING_DESCR, /* Device Descriptor Type */
+ 'U',0x00,
+ 'S',0x00,
+ 'R',0x00,
+ 'P',0x00,
+ ' ',0x00,
+ 'B',0x00,
+ '2',0x00,
+ '0',0x00,
+ '0',0x00
+ };
+
+/* Microsoft OS Descriptor. */
+const uint8_t CyFxUsbOSDscr[] __attribute__ ((aligned (32))) =
+{
+ 0x10,
+ CY_U3P_USB_STRING_DESCR,
+ 'O', 0x00,
+ 'S', 0x00,
+ ' ', 0x00,
+ 'D', 0x00,
+ 'e', 0x00,
+ 's', 0x00,
+ 'c', 0x00
+};
+
+uint8_t dev_serial[20] __attribute__ ((aligned (32))) =
+{
+ 0x14,
+ CY_U3P_USB_STRING_DESCR,
+ '0', 0x00,
+ '0', 0x00,
+ '0', 0x00,
+ '0', 0x00,
+ '0', 0x00,
+ '0', 0x00,
+ '0', 0x00,
+ '0', 0x00,
+ '0', 0x00
+};
+
+/* Place this buffer as the last buffer so that no other variable / code shares
+ * the same cache line. Do not add any other variables / arrays in this file.
+ * This will lead to variables sharing the same cache line. */
+const uint8_t CyFxUsbDscrAlignBuffer[32] __attribute__ ((aligned (32)));