]> git.hungrycats.org Git - linux/commitdiff
usb: Add USB 3.1 Precision time measurement capability descriptor support
authorMathias Nyman <mathias.nyman@linux.intel.com>
Fri, 12 Feb 2016 14:40:14 +0000 (16:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 9 Dec 2017 17:42:43 +0000 (18:42 +0100)
commit faee822c5a7ab99de25cd34fcde3f8d37b6b9923 upstream.

USB 3.1 devices that support precision time measurement have an
additional PTM cabaility descriptor as part of the full BOS descriptor

Look for this descriptor while parsing the BOS descriptor, and store it in
struct usb_hub_bos if it exists.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/config.c
include/linux/usb.h
include/uapi/linux/usb/ch9.h

index 5172bec612eb76c586ba6df3696e5aee55f96716..b568a1c442ff60eaf0cf3c7ae4dff089c8ee7102 100644 (file)
@@ -959,6 +959,9 @@ int usb_get_bos_descriptor(struct usb_device *dev)
                        dev->bos->ss_id =
                                (struct usb_ss_container_id_descriptor *)buffer;
                        break;
+               case USB_PTM_CAP_TYPE:
+                       dev->bos->ptm_cap =
+                               (struct usb_ptm_cap_descriptor *)buffer;
                default:
                        break;
                }
index 8c75af6b7d5b45481a4a2dab6650ac6fc8fa2dcb..092b5658b9c3cdac1a39a7c9f66cbcfa8c3c626e 100644 (file)
@@ -330,6 +330,7 @@ struct usb_host_bos {
        struct usb_ss_cap_descriptor    *ss_cap;
        struct usb_ssp_cap_descriptor   *ssp_cap;
        struct usb_ss_container_id_descriptor   *ss_id;
+       struct usb_ptm_cap_descriptor   *ptm_cap;
 };
 
 int __usb_get_extra_descriptor(char *buffer, unsigned size,
index 91ab75c1013c82697caa68f67791e9990a323e64..0ae800f600210b3d0322c98cb326a5e457867034 100644 (file)
@@ -895,6 +895,16 @@ struct usb_ssp_cap_descriptor {
 #define USB_SSP_SUBLINK_SPEED_LSM      (0xff << 16)    /* Lanespeed mantissa */
 } __attribute__((packed));
 
+/*
+ * Precision time measurement capability descriptor: advertised by devices and
+ * hubs that support PTM
+ */
+#define        USB_PTM_CAP_TYPE        0xb
+struct usb_ptm_cap_descriptor {
+       __u8  bLength;
+       __u8  bDescriptorType;
+       __u8  bDevCapabilityType;
+} __attribute__((packed));
 
 /*-------------------------------------------------------------------------*/