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: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
5abb9b91e8
commit
271d2d6d94
|
@ -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 {
|
||||||
.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)
|
||||||
|
|
Loading…
Reference in New Issue