dcavalca / rpms / qemu

Forked from rpms/qemu a year ago
Clone

Blame 0119-usb-ehci-Clear-the-portstatus-powner-bit-on-device-d.patch

1b1995
From 959f57d34f11daf0da6f73541243934f39dfb2b2 Mon Sep 17 00:00:00 2001
1b1995
From: Hans de Goede <hdegoede@redhat.com>
1b1995
Date: Fri, 13 Jan 2012 14:26:26 +0100
1b1995
Subject: [PATCH 119/140] usb-ehci: Clear the portstatus powner bit on device
1b1995
 disconnect
1b1995
1b1995
According to the EHCI spec port ownerhsip should revert to the EHCI controller
1b1995
on device disconnect. This fixes the problem of a port getting stuck on USB 1
1b1995
when using redirection and plugging in a USB 2 device after a USB 1 device
1b1995
has been redirected.
1b1995
1b1995
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
1b1995
---
1b1995
 hw/usb-ehci.c |    5 +++++
1b1995
 1 file changed, 5 insertions(+)
1b1995
1b1995
diff --git a/hw/usb-ehci.c b/hw/usb-ehci.c
1b1995
index a946e1d..69bcc4b 100644
1b1995
--- a/hw/usb-ehci.c
1b1995
+++ b/hw/usb-ehci.c
1b1995
@@ -764,6 +764,11 @@ static void ehci_detach(USBPort *port)
1b1995
         USBPort *companion = s->companion_ports[port->index];
1b1995
         companion->ops->detach(companion);
1b1995
         companion->dev = NULL;
1b1995
+        /*
1b1995
+         * EHCI spec 4.2.2: "When a disconnect occurs... On the event,
1b1995
+         * the port ownership is returned immediately to the EHCI controller."
1b1995
+         */
1b1995
+        *portsc &= ~PORTSC_POWNER;
1b1995
         return;
1b1995
     }
1b1995
 
1b1995
-- 
1b1995
1.7.9.3
1b1995