]> xenbits.xensource.com Git - seabios.git/commitdiff
ehci: Fix bug in hub port assignment
authorKevin O'Connor <kevin@koconnor.net>
Fri, 12 Sep 2014 15:59:23 +0000 (11:59 -0400)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 10 Nov 2014 10:30:45 +0000 (11:30 +0100)
The usbdev->port field is zero indexed, while the USB spec expects the
port values to start at one.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
(cherry picked from commit 67d1fbef0f630e1e823f137d1bae7fa5790bcf4e)

src/hw/usb-ehci.c

index 9d9427b6c41c13331c83ae5b8728fdf3b6941859..17a7e8b28d2e2f411dc9b6db838e1ee6b5cb7450 100644 (file)
@@ -372,7 +372,7 @@ ehci_desc2pipe(struct ehci_pipe *pipe, struct usbdevice_s *usbdev
         struct ehci_pipe *hpipe = container_of(
             hubdev->defpipe, struct ehci_pipe, pipe);
         if (hpipe->pipe.speed == USB_HIGHSPEED)
-            pipe->qh.info2 |= ((usbdev->port << QH_HUBPORT_SHIFT)
+            pipe->qh.info2 |= (((usbdev->port+1) << QH_HUBPORT_SHIFT)
                                | (hpipe->pipe.devaddr << QH_HUBADDR_SHIFT));
         else
             pipe->qh.info2 = hpipe->qh.info2;