Commit 271d2d6d authored by Felipe Balbi's avatar Felipe Balbi

tools: usb: ffs-test: add SS descriptors

Without SS descriptors, we have no possibility of running on SS
controllers such as DWC3.
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 5abb9b91
...@@ -110,16 +110,25 @@ static const struct { ...@@ -110,16 +110,25 @@ static const struct {
struct usb_functionfs_descs_head_v2 header; struct usb_functionfs_descs_head_v2 header;
__le32 fs_count; __le32 fs_count;
__le32 hs_count; __le32 hs_count;
__le32 ss_count;
struct { struct {
struct usb_interface_descriptor intf; struct usb_interface_descriptor intf;
struct usb_endpoint_descriptor_no_audio sink; struct usb_endpoint_descriptor_no_audio sink;
struct usb_endpoint_descriptor_no_audio source; struct usb_endpoint_descriptor_no_audio source;
} __attribute__((packed)) fs_descs, hs_descs; } __attribute__((packed)) fs_descs, hs_descs;
struct {
struct usb_interface_descriptor intf;
struct usb_endpoint_descriptor_no_audio sink;
struct usb_ss_ep_comp_descriptor sink_comp;
struct usb_endpoint_descriptor_no_audio source;
struct usb_ss_ep_comp_descriptor source_comp;
} ss_descs;
} __attribute__((packed)) descriptors = { } __attribute__((packed)) descriptors = {
.header = { .header = {
.magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC_V2), .magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC_V2),
.flags = cpu_to_le32(FUNCTIONFS_HAS_FS_DESC | .flags = cpu_to_le32(FUNCTIONFS_HAS_FS_DESC |
FUNCTIONFS_HAS_HS_DESC), FUNCTIONFS_HAS_HS_DESC |
FUNCTIONFS_HAS_SS_DESC),
.length = cpu_to_le32(sizeof descriptors), .length = cpu_to_le32(sizeof descriptors),
}, },
.fs_count = cpu_to_le32(3), .fs_count = cpu_to_le32(3),
...@@ -171,6 +180,45 @@ static const struct { ...@@ -171,6 +180,45 @@ static const struct {
.bInterval = 1, /* NAK every 1 uframe */ .bInterval = 1, /* NAK every 1 uframe */
}, },
}, },
.ss_count = cpu_to_le32(5),
.ss_descs = {
.intf = {
.bLength = sizeof descriptors.fs_descs.intf,
.bDescriptorType = USB_DT_INTERFACE,
.bNumEndpoints = 2,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.iInterface = 1,
},
.sink = {
.bLength = sizeof descriptors.hs_descs.sink,
.bDescriptorType = USB_DT_ENDPOINT,
.bEndpointAddress = 1 | USB_DIR_IN,
.bmAttributes = USB_ENDPOINT_XFER_BULK,
.wMaxPacketSize = cpu_to_le16(1024),
},
.sink_comp = {
.bLength = USB_DT_SS_EP_COMP_SIZE,
.bDescriptorType = USB_DT_SS_ENDPOINT_COMP,
.bMaxBurst = 0,
.bmAttributes = 0,
.wBytesPerInterval = 0,
},
.source = {
.bLength = sizeof descriptors.hs_descs.source,
.bDescriptorType = USB_DT_ENDPOINT,
.bEndpointAddress = 2 | USB_DIR_OUT,
.bmAttributes = USB_ENDPOINT_XFER_BULK,
.wMaxPacketSize = cpu_to_le16(1024),
.bInterval = 1, /* NAK every 1 uframe */
},
.source_comp = {
.bLength = USB_DT_SS_EP_COMP_SIZE,
.bDescriptorType = USB_DT_SS_ENDPOINT_COMP,
.bMaxBurst = 0,
.bmAttributes = 0,
.wBytesPerInterval = 0,
},
},
}; };
static size_t descs_to_legacy(void **legacy, const void *descriptors_v2) static size_t descs_to_legacy(void **legacy, const void *descriptors_v2)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment