]> git.proxmox.com Git - qemu.git/commitdiff
xhci: add xhci_port_reset
authorGerd Hoffmann <kraxel@redhat.com>
Fri, 26 Oct 2012 08:22:37 +0000 (10:22 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 1 Nov 2012 12:10:09 +0000 (13:10 +0100)
Move port reset logic to its own function.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/usb/hcd-xhci.c

index 3af463986decd406e13ee308df84ff6c7410146b..1db803cda9c4ae05a90bc63fae503c73f11cee79 100644 (file)
@@ -2387,6 +2387,13 @@ static void xhci_port_update(XHCIPort *port, int is_detach)
     xhci_port_notify(port, PORTSC_CSC);
 }
 
+static void xhci_port_reset(XHCIPort *port)
+{
+    DPRINTF("xhci: port %d reset\n", port);
+    usb_device_reset(port->uport->dev);
+    port->portsc |= PORTSC_PRC | PORTSC_PED;
+}
+
 static void xhci_reset(DeviceState *dev)
 {
     XHCIState *xhci = DO_UPCAST(XHCIState, pci_dev.qdev, dev);
@@ -2549,13 +2556,11 @@ static void xhci_port_write(void *ptr, hwaddr reg,
         /* read/write bits */
         portsc &= ~(PORTSC_PP|PORTSC_WCE|PORTSC_WDE|PORTSC_WOE);
         portsc |= (val & (PORTSC_PP|PORTSC_WCE|PORTSC_WDE|PORTSC_WOE));
+        port->portsc = portsc;
         /* write-1-to-start bits */
         if (val & PORTSC_PR) {
-            DPRINTF("xhci: port %d reset\n", port);
-            usb_device_reset(port->uport->dev);
-            portsc |= PORTSC_PRC | PORTSC_PED;
+            xhci_port_reset(port);
         }
-        port->portsc = portsc;
         break;
     case 0x04: /* PORTPMSC */
     case 0x08: /* PORTLI */