xhci: add xhci_port_have_device
authorGerd Hoffmann <kraxel@redhat.com>
Fri, 26 Oct 2012 08:15:47 +0000 (10:15 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 1 Nov 2012 12:10:09 +0000 (13:10 +0100)
Factor out the code which checks whenever a usb device is attached
to the port in question.  No functional change.

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

index f5ab6928ae39ec1001462a57ea41b4c47c4addbd..62cca90a3c4ad0a6d8668d45a06fccc2fbf4bd5f 100644 (file)
@@ -2337,11 +2337,21 @@ static void xhci_process_commands(XHCIState *xhci)
     }
 }
 
+static bool xhci_port_have_device(XHCIPort *port)
+{
+    if (!port->uport->dev || !port->uport->dev->attached) {
+        return false; /* no device present */
+    }
+    if (!((1 << port->uport->dev->speed) & port->speedmask)) {
+        return false; /* speed mismatch */
+    }
+    return true;
+}
+
 static void xhci_port_update(XHCIPort *port, int is_detach)
 {
     port->portsc = PORTSC_PP;
-    if (port->uport->dev && port->uport->dev->attached && !is_detach &&
-        (1 << port->uport->dev->speed) & port->speedmask) {
+    if (!is_detach && xhci_port_have_device(port)) {
         port->portsc |= PORTSC_CCS;
         switch (port->uport->dev->speed) {
         case USB_SPEED_LOW: