]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
usb: add device descriptor for usb 3.1 root hub
authorMathias Nyman <mathias.nyman@linux.intel.com>
Thu, 10 Dec 2015 07:59:28 +0000 (09:59 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Jan 2016 04:16:52 +0000 (20:16 -0800)
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/hcd.c

index ff3073d522a8684db7e9df4cf81eb4a1236a11d6..bca13a0e03260592a925f2658811eebe1c1c9c34 100644 (file)
@@ -128,6 +128,27 @@ static inline int is_root_hub(struct usb_device *udev)
 #define KERNEL_REL     bin2bcd(((LINUX_VERSION_CODE >> 16) & 0x0ff))
 #define KERNEL_VER     bin2bcd(((LINUX_VERSION_CODE >> 8) & 0x0ff))
 
+/* usb 3.1 root hub device descriptor */
+static const u8 usb31_rh_dev_descriptor[18] = {
+       0x12,       /*  __u8  bLength; */
+       USB_DT_DEVICE, /* __u8 bDescriptorType; Device */
+       0x10, 0x03, /*  __le16 bcdUSB; v3.1 */
+
+       0x09,       /*  __u8  bDeviceClass; HUB_CLASSCODE */
+       0x00,       /*  __u8  bDeviceSubClass; */
+       0x03,       /*  __u8  bDeviceProtocol; USB 3 hub */
+       0x09,       /*  __u8  bMaxPacketSize0; 2^9 = 512 Bytes */
+
+       0x6b, 0x1d, /*  __le16 idVendor; Linux Foundation 0x1d6b */
+       0x03, 0x00, /*  __le16 idProduct; device 0x0003 */
+       KERNEL_VER, KERNEL_REL, /*  __le16 bcdDevice */
+
+       0x03,       /*  __u8  iManufacturer; */
+       0x02,       /*  __u8  iProduct; */
+       0x01,       /*  __u8  iSerialNumber; */
+       0x01        /*  __u8  bNumConfigurations; */
+};
+
 /* usb 3.0 root hub device descriptor */
 static const u8 usb3_rh_dev_descriptor[18] = {
        0x12,       /*  __u8  bLength; */
@@ -557,6 +578,8 @@ static int rh_call_control (struct usb_hcd *hcd, struct urb *urb)
                case USB_DT_DEVICE << 8:
                        switch (hcd->speed) {
                        case HCD_USB31:
+                               bufp = usb31_rh_dev_descriptor;
+                               break;
                        case HCD_USB3:
                                bufp = usb3_rh_dev_descriptor;
                                break;