usb: gadget: composite: Write SuperSpeedPlus config descriptors
authorJohn Youn <John.Youn@synopsys.com>
Sat, 6 Feb 2016 01:07:17 +0000 (17:07 -0800)
committerFelipe Balbi <balbi@kernel.org>
Fri, 4 Mar 2016 13:14:25 +0000 (15:14 +0200)
Enable writing of SuperSpeedPlus descriptors for any SuperSpeedPlus
capable configuration when connected in SuperSpeedPlus.

Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
drivers/usb/gadget/composite.c

index 1d4f324e4bac5e80947144a8ef5ada5c33714baa..b938fcfee235e4f59832c374bbfa8bc43b7f5812 100644 (file)
@@ -473,7 +473,7 @@ static int config_desc(struct usb_composite_dev *cdev, unsigned w_value)
        u8                              type = w_value >> 8;
        enum usb_device_speed           speed = USB_SPEED_UNKNOWN;
 
-       if (gadget->speed == USB_SPEED_SUPER)
+       if (gadget->speed >= USB_SPEED_SUPER)
                speed = gadget->speed;
        else if (gadget_is_dualspeed(gadget)) {
                int     hs = 0;
@@ -504,6 +504,10 @@ static int config_desc(struct usb_composite_dev *cdev, unsigned w_value)
 check_config:
                /* ignore configs that won't work at this speed */
                switch (speed) {
+               case USB_SPEED_SUPER_PLUS:
+                       if (!c->superspeed_plus)
+                               continue;
+                       break;
                case USB_SPEED_SUPER:
                        if (!c->superspeed)
                                continue;