diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2021-01-23 14:40:45 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2021-01-23 14:40:45 +0000 |
| commit | e93c65a6c64fa18b0c61fb9338d364cbea32b6ef (patch) | |
| tree | 5f1c30bca7461c74fdb80ae941adae550aea8d1b /hw/usb/host-libusb.c | |
| parent | 0e32462630687a18039464511bd0447ada5709c3 (diff) | |
| parent | 2980a316734c420e7398aec026909dcfc8614c1d (diff) | |
| download | focaccia-qemu-e93c65a6c64fa18b0c61fb9338d364cbea32b6ef.tar.gz focaccia-qemu-e93c65a6c64fa18b0c61fb9338d364cbea32b6ef.zip | |
Merge remote-tracking branch 'remotes/kraxel/tags/usb-20210122-pull-request' into staging
usb: cleanups and fixes. usb: add pcap support. # gpg: Signature made Fri 22 Jan 2021 17:48:35 GMT # gpg: using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full] # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" [full] # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full] # Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138 * remotes/kraxel/tags/usb-20210122-pull-request: usb-host: map LIBUSB_SPEED_SUPER_PLUS to USB_SPEED_SUPER usb: add pcap support. hw/usb/dev-uas: Report command additional adb length as unsupported scsi/utils: Add INVALID_PARAM_VALUE sense code definition hw/usb/hcd-xhci: Fix extraneous format-truncation error on 32-bit hosts hw/usb: Convert to qdev_realize() hw/usb: Fix bad printf format specifiers hw/usb/host-libusb.c: fix build with kernel < 5.0 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/usb/host-libusb.c')
| -rw-r--r-- | hw/usb/host-libusb.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index b950501d10..7dde3d1206 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -179,6 +179,9 @@ static void usb_host_attach_kernel(USBHostDevice *s); #if LIBUSB_API_VERSION >= 0x01000103 # define HAVE_STREAMS 1 #endif +#if LIBUSB_API_VERSION >= 0x01000106 +# define HAVE_SUPER_PLUS 1 +#endif static const char *speed_name[] = { [LIBUSB_SPEED_UNKNOWN] = "?", @@ -186,6 +189,9 @@ static const char *speed_name[] = { [LIBUSB_SPEED_FULL] = "12", [LIBUSB_SPEED_HIGH] = "480", [LIBUSB_SPEED_SUPER] = "5000", +#ifdef HAVE_SUPER_PLUS + [LIBUSB_SPEED_SUPER_PLUS] = "5000+", +#endif }; static const unsigned int speed_map[] = { @@ -193,6 +199,9 @@ static const unsigned int speed_map[] = { [LIBUSB_SPEED_FULL] = USB_SPEED_FULL, [LIBUSB_SPEED_HIGH] = USB_SPEED_HIGH, [LIBUSB_SPEED_SUPER] = USB_SPEED_SUPER, +#ifdef HAVE_SUPER_PLUS + [LIBUSB_SPEED_SUPER_PLUS] = USB_SPEED_SUPER, +#endif }; static const unsigned int status_map[] = { @@ -941,7 +950,8 @@ static int usb_host_open(USBHostDevice *s, libusb_device *dev, int hostfd) usb_host_ep_update(s); libusb_speed = libusb_get_device_speed(dev); -#if LIBUSB_API_VERSION >= 0x01000107 && defined(CONFIG_LINUX) +#if LIBUSB_API_VERSION >= 0x01000107 && defined(CONFIG_LINUX) && \ + defined(USBDEVFS_GET_SPEED) if (hostfd && libusb_speed == 0) { /* * Workaround libusb bug: libusb_get_device_speed() does not @@ -963,8 +973,14 @@ static int usb_host_open(USBHostDevice *s, libusb_device *dev, int hostfd) libusb_speed = LIBUSB_SPEED_HIGH; break; case 5: /* super */ + libusb_speed = LIBUSB_SPEED_SUPER; + break; case 6: /* super plus */ +#ifdef HAVE_SUPER_PLUS + libusb_speed = LIBUSB_SPEED_SUPER_PLUS; +#else libusb_speed = LIBUSB_SPEED_SUPER; +#endif break; } } |