|
@@ -511,18 +511,24 @@ static int count_configs(struct usb_composite_dev *cdev, unsigned type)
|
|
|
unsigned count = 0;
|
|
|
int hs = 0;
|
|
|
int ss = 0;
|
|
|
+ int ssp = 0;
|
|
|
|
|
|
if (gadget_is_dualspeed(gadget)) {
|
|
|
if (gadget->speed == USB_SPEED_HIGH)
|
|
|
hs = 1;
|
|
|
if (gadget->speed == USB_SPEED_SUPER)
|
|
|
ss = 1;
|
|
|
+ if (gadget->speed == USB_SPEED_SUPER_PLUS)
|
|
|
+ ssp = 1;
|
|
|
if (type == USB_DT_DEVICE_QUALIFIER)
|
|
|
hs = !hs;
|
|
|
}
|
|
|
list_for_each_entry(c, &cdev->configs, list) {
|
|
|
/* ignore configs that won't work at this speed */
|
|
|
- if (ss) {
|
|
|
+ if (ssp) {
|
|
|
+ if (!c->superspeed_plus)
|
|
|
+ continue;
|
|
|
+ } else if (ss) {
|
|
|
if (!c->superspeed)
|
|
|
continue;
|
|
|
} else if (hs) {
|