| From 35d0596f28a30f945dafa65ca2103154231a683e Mon Sep 17 00:00:00 2001 |
| From: Torleiv Sundre <torleiv@kubicam.com> |
| Date: Fri, 29 Apr 2016 15:36:56 +0200 |
| Subject: [PATCH 3/7] Added support for Platform Device Capability descriptor |
| |
| Signed-off by: Torleiv Sundre <torleiv@kubicam.com> |
| |
| (cherry picked from commit 8623cb5741e149e0f4087ea01b520902190e8b90) |
| --- |
| lsusb.c | 27 ++++++++++++++++++++++++++- |
| 1 file changed, 26 insertions(+), 1 deletion(-) |
| |
| diff --git a/lsusb.c b/lsusb.c |
| index b7334d7..98808e6 100644 |
| --- a/lsusb.c |
| +++ b/lsusb.c |
| @@ -69,6 +69,7 @@ |
| #define USB_DC_20_EXTENSION 0x02 |
| #define USB_DC_SUPERSPEED 0x03 |
| #define USB_DC_CONTAINER_ID 0x04 |
| +#define USB_DC_PLATFORM 0x05 |
| #define USB_DC_SUPERSPEEDPLUS 0x0a |
| #define USB_DC_BILLBOARD 0x0d |
| |
| @@ -677,7 +678,7 @@ static void dump_pipe_desc(const unsigned char *buf) |
| [0xE0 ... 0xEF] = "Vendor specific", |
| [0xF0 ... 0xFF] = "Reserved", |
| }; |
| - |
| + |
| if (buf[0] == 4 && buf[1] == 0x24) { |
| printf(" %s (0x%02x)\n", pipe_name[buf[2]], buf[2]); |
| } else { |
| @@ -3775,6 +3776,27 @@ static void dump_container_id_device_capability_desc(unsigned char *buf) |
| get_guid(&buf[4])); |
| } |
| |
| +static void dump_platform_device_capability_desc(unsigned char *buf) |
| +{ |
| + unsigned char desc_len = buf[0]; |
| + unsigned char cap_data_len = desc_len - 20; |
| + if (desc_len < 20) { |
| + fprintf(stderr, " Bad Platform Device Capability descriptor.\n"); |
| + return; |
| + } |
| + printf(" Platform Device Capability:\n" |
| + " bLength %5u\n" |
| + " bDescriptorType %5u\n" |
| + " bDevCapabilityType %5u\n" |
| + " bReserved %5u\n", |
| + buf[0], buf[1], buf[2], buf[3]); |
| + printf(" PlatformCapabilityUUID %s\n", |
| + get_guid(&buf[4])); |
| + for (unsigned char i = 0; i < cap_data_len; i++) { |
| + printf(" CapabilityData[%u] 0x%02x\n", i, buf[20 + i]); |
| + } |
| +} |
| + |
| static void dump_billboard_device_capability_desc(libusb_device_handle *dev, unsigned char *buf) |
| { |
| char *url, *alt_mode_str; |
| @@ -3930,6 +3952,9 @@ static void dump_bos_descriptor(libusb_device_handle *fd) |
| case USB_DC_CONTAINER_ID: |
| dump_container_id_device_capability_desc(buf); |
| break; |
| + case USB_DC_PLATFORM: |
| + dump_platform_device_capability_desc(buf); |
| + break; |
| case USB_DC_BILLBOARD: |
| dump_billboard_device_capability_desc(fd, buf); |
| break; |
| -- |
| 2.12.2 |
| |