summaryrefslogtreecommitdiff
path: root/usb-benchmark-project/usb_desc.c
diff options
context:
space:
mode:
Diffstat (limited to 'usb-benchmark-project/usb_desc.c')
-rw-r--r--usb-benchmark-project/usb_desc.c289
1 files changed, 289 insertions, 0 deletions
diff --git a/usb-benchmark-project/usb_desc.c b/usb-benchmark-project/usb_desc.c
new file mode 100644
index 0000000..a17afff
--- /dev/null
+++ b/usb-benchmark-project/usb_desc.c
@@ -0,0 +1,289 @@
+#include <stdlib.h>
+
+#include <board.h>
+
+#include <usb/common/core/USBGenericDescriptor.h>
+#include <usb/common/core/USBDeviceDescriptor.h>
+#include <usb/common/core/USBConfigurationDescriptor.h>
+#include <usb/common/core/USBInterfaceDescriptor.h>
+#include <usb/common/core/USBEndpointDescriptor.h>
+//#include <usb/common/core/USBStringDescriptor.h>
+
+#include <usb/device/core/USBDDriver.h>
+#include <usb/device/core/USBDDriverDescriptors.h>
+
+#define MIN(a, b) ((a < b) ? a : b)
+
+#define ISOCH
+
+struct perf_conf_descs {
+ USBConfigurationDescriptor configuration;
+ USBInterfaceDescriptor interface;
+ USBEndpointDescriptor bulkOut;
+ USBEndpointDescriptor bulkIn;
+ USBEndpointDescriptor bulkIn5;
+} __attribute__((packed));
+
+static const USBDeviceDescriptor dev_desc = {
+ .bLength = sizeof(USBDeviceDescriptor),
+ .bDescriptorType = USBGenericDescriptor_DEVICE,
+ .bcdUSB = USBDeviceDescriptor_USB2_00,
+ .bDeviceClass = 0xff,
+ .bDeviceSubClass = 0xff,
+ .bDeviceProtocol = 0xff,
+ .bMaxPacketSize0 = CHIP_USB_ENDPOINTS_MAXPACKETSIZE(0),
+ .idVendor = 0x16c0,
+ .idProduct = 0x0763,
+ .bcdDevice = 0x0100,
+ .iManufacturer = 0,
+ .iProduct = 0,
+ .iSerialNumber = 0,
+ .bNumConfigurations = 1,
+};
+
+static const USBDeviceQualifierDescriptor qual_desc = {
+ .bLength = sizeof(USBDeviceQualifierDescriptor),
+ .bDescriptorType = USBGenericDescriptor_DEVICEQUALIFIER,
+ .bcdUSB = USBDeviceDescriptor_USB2_00,
+ .bDeviceClass = 0xff,
+ .bDeviceSubClass = 0,
+ .bDeviceProtocol = 0xff,
+ .bMaxPacketSize0 = CHIP_USB_ENDPOINTS_MAXPACKETSIZE(0),
+ .bNumConfigurations = 1,
+ .bReserved = 0,
+};
+
+static const struct perf_conf_descs conf_desc = {
+ .configuration = {
+ .bLength = sizeof(USBConfigurationDescriptor),
+ .bDescriptorType = USBGenericDescriptor_CONFIGURATION,
+ .wTotalLength = sizeof(struct perf_conf_descs),
+ .bNumInterfaces = 1,
+ .bConfigurationValue = 1,
+ .iConfiguration = 0,
+ .bmAttributes = BOARD_USB_BMATTRIBUTES,
+ .bMaxPower = USBConfigurationDescriptor_POWER(100),
+ },
+ .interface = {
+ .bLength = sizeof(USBInterfaceDescriptor),
+ .bDescriptorType = USBGenericDescriptor_INTERFACE,
+ .bInterfaceNumber = 0,
+ .bAlternateSetting = 0,
+ .bNumEndpoints = 3,
+ .bInterfaceClass = 0xff,
+ .bInterfaceSubClass = 0,
+ .bInterfaceProtocol = 0xff,
+ .iInterface = 0,
+ },
+ .bulkOut = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_OUT, 1),
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(1), USBEndpointDescriptor_MAXBULKSIZE_FS),
+ .bInterval = 0,
+ },
+ .bulkIn = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, 2),
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(2), USBEndpointDescriptor_MAXBULKSIZE_FS),
+ .bInterval = 0,
+ },
+ .bulkIn5 = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, 5),
+#ifdef ISOCH
+ .bmAttributes = USBEndpointDescriptor_ISOCHRONOUS,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(5), USBEndpointDescriptor_MAXISOCHRONOUSSIZE_FS),
+ .bInterval = 0,
+#else
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(5), USBEndpointDescriptor_MAXBULKSIZE_FS),
+ .bInterval = 0x04,
+#endif
+ },
+};
+static const struct perf_conf_descs conf_desc_hs = {
+ .configuration = {
+ .bLength = sizeof(USBConfigurationDescriptor),
+ .bDescriptorType = USBGenericDescriptor_CONFIGURATION,
+ .wTotalLength = sizeof(struct perf_conf_descs),
+ .bNumInterfaces = 1,
+ .bConfigurationValue = 1,
+ .iConfiguration = 0,
+ .bmAttributes = BOARD_USB_BMATTRIBUTES,
+ .bMaxPower = USBConfigurationDescriptor_POWER(100),
+ },
+ .interface = {
+ .bLength = sizeof(USBInterfaceDescriptor),
+ .bDescriptorType = USBGenericDescriptor_INTERFACE,
+ .bInterfaceNumber = 0,
+ .bAlternateSetting = 0,
+ .bNumEndpoints = 3,
+ .bInterfaceClass = 0xff,
+ .bInterfaceSubClass = 0,
+ .bInterfaceProtocol = 0xff,
+ .iInterface = 0,
+ },
+ .bulkOut = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_OUT, 1),
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(1), USBEndpointDescriptor_MAXBULKSIZE_HS),
+ .bInterval = 0,
+ },
+ .bulkIn = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, 2),
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(2), USBEndpointDescriptor_MAXBULKSIZE_HS),
+ .bInterval = 0,
+ },
+ .bulkIn5 = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, 5),
+
+#ifdef ISOCH
+ .bmAttributes = USBEndpointDescriptor_ISOCHRONOUS,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(5), USBEndpointDescriptor_MAXISOCHRONOUSSIZE_HS),
+ .bInterval = 0,
+#else
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(5), USBEndpointDescriptor_MAXBULKSIZE_HS),
+ .bInterval = 0,
+#endif
+ },
+};
+
+static const struct perf_conf_descs conf_desc_other_fs = {
+ .configuration = {
+ .bLength = sizeof(USBConfigurationDescriptor),
+ .bDescriptorType = USBGenericDescriptor_OTHERSPEEDCONFIGURATION,
+ .wTotalLength = sizeof(struct perf_conf_descs),
+ .bNumInterfaces = 1,
+ .bConfigurationValue = 1,
+ .iConfiguration = 0,
+ .bmAttributes = BOARD_USB_BMATTRIBUTES,
+ .bMaxPower = USBConfigurationDescriptor_POWER(100),
+ },
+ .interface = {
+ .bLength = sizeof(USBInterfaceDescriptor),
+ .bDescriptorType = USBGenericDescriptor_INTERFACE,
+ .bInterfaceNumber = 0,
+ .bAlternateSetting = 0,
+ .bNumEndpoints = 3,
+ .bInterfaceClass = 0xff,
+ .bInterfaceSubClass = 0,
+ .bInterfaceProtocol = 0xff,
+ .iInterface = 0,
+ },
+ .bulkOut = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_OUT, 1),
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(1), USBEndpointDescriptor_MAXBULKSIZE_FS),
+ .bInterval = 0,
+ },
+ .bulkIn = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, 2),
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(2), USBEndpointDescriptor_MAXBULKSIZE_FS),
+ .bInterval = 0,
+ },
+ .bulkIn5 = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, 5),
+#ifdef ISOCH
+ .bmAttributes = USBEndpointDescriptor_ISOCHRONOUS,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(5), USBEndpointDescriptor_MAXISOCHRONOUSSIZE_FS),
+ .bInterval = 0x04,
+#else
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(5), USBEndpointDescriptor_MAXBULKSIZE_FS),
+ .bInterval = 0,
+#endif
+ },
+};
+static const struct perf_conf_descs conf_desc_other_hs = {
+ .configuration = {
+ .bLength = sizeof(USBConfigurationDescriptor),
+ .bDescriptorType = USBGenericDescriptor_OTHERSPEEDCONFIGURATION,
+ .wTotalLength = sizeof(struct perf_conf_descs),
+ .bNumInterfaces = 1,
+ .bConfigurationValue = 1,
+ .iConfiguration = 0,
+ .bmAttributes = BOARD_USB_BMATTRIBUTES,
+ .bMaxPower = USBConfigurationDescriptor_POWER(100),
+ },
+ .interface = {
+ .bLength = sizeof(USBInterfaceDescriptor),
+ .bDescriptorType = USBGenericDescriptor_INTERFACE,
+ .bInterfaceNumber = 0,
+ .bAlternateSetting = 0,
+ .bNumEndpoints = 3,
+ .bInterfaceClass = 0xff,
+ .bInterfaceSubClass = 0,
+ .bInterfaceProtocol = 0xff,
+ .iInterface = 0,
+ },
+ .bulkOut = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_OUT, 1),
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(1), USBEndpointDescriptor_MAXBULKSIZE_HS),
+ .bInterval = 0,
+ },
+ .bulkIn = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, 2),
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(2), USBEndpointDescriptor_MAXBULKSIZE_HS),
+ .bInterval = 0,
+ },
+ .bulkIn5 = {
+ .bLength = sizeof(USBEndpointDescriptor),
+ .bDescriptorType = USBGenericDescriptor_ENDPOINT,
+ .bEndpointAddress = USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, 5),
+#ifdef ISOCH
+ .bmAttributes = USBEndpointDescriptor_ISOCHRONOUS,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(5), USBEndpointDescriptor_MAXISOCHRONOUSSIZE_HS),
+ .bInterval = 0x04,
+#else
+ .bmAttributes = USBEndpointDescriptor_BULK,
+ .wMaxPacketSize = MIN(CHIP_USB_ENDPOINTS_MAXPACKETSIZE(5), USBEndpointDescriptor_MAXBULKSIZE_HS),
+ .bInterval = 0,
+#endif
+ },
+};
+
+const USBDDriverDescriptors usb_perf_driver_desc = {
+ .pFsDevice = &dev_desc,
+ .pFsConfiguration = &conf_desc,
+ .pFsQualifier = &qual_desc,
+ .pFsOtherSpeed = &conf_desc_other_fs,
+ .pHsDevice = &dev_desc,
+ .pHsConfiguration = &conf_desc_hs,
+ .pHsQualifier = &qual_desc,
+ .pHsOtherSpeed = &conf_desc_other_hs,
+ .pStrings = NULL,
+ .numStrings = 0,
+};
+
+#if 0
+static USBDDriver perftest_usbdriver = {
+ .pDescriptors = &driver_desc,
+ //.pInterfaces =
+};
+#endif
personal git repositories of Harald Welte. Your mileage may vary