summaryrefslogtreecommitdiffstats
path: root/hw/usb/host-libusb.c
diff options
context:
space:
mode:
authorPeter Maydell2021-01-23 15:40:45 +0100
committerPeter Maydell2021-01-23 15:40:45 +0100
commite93c65a6c64fa18b0c61fb9338d364cbea32b6ef (patch)
tree5f1c30bca7461c74fdb80ae941adae550aea8d1b /hw/usb/host-libusb.c
parentMerge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-6.0-pull-re... (diff)
parentusb-host: map LIBUSB_SPEED_SUPER_PLUS to USB_SPEED_SUPER (diff)
downloadqemu-e93c65a6c64fa18b0c61fb9338d364cbea32b6ef.tar.gz
qemu-e93c65a6c64fa18b0c61fb9338d364cbea32b6ef.tar.xz
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.c18
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;
}
}