usb: host: ehci: Add missed memory barrier in the hcd driver
authorJay Cheng <jacheng@nvidia.com>
Wed, 27 Oct 2010 15:45:19 +0000 (11:45 -0400)
committerBenoit Goby <benoit@android.com>
Thu, 28 Oct 2010 19:45:46 +0000 (12:45 -0700)
There is one wmb missing in the usb host controller driver after the queue head
update. Due to this data transaction is not happening on the bus after urb
submission by the hcd driver. Register updates/queue heads data in the memory
is not reflected on the AHB bus. After adding the wmb after queue head update
data transaction the USB bus started with out any delay.

originally fixed by Venkat Moganty <vmoganty@nvidia.com>

Change-Id: Ic834df5172ac2f2eb3bced317d38b4a2e7a44801
Signed-off-by: Jay Cheng <jacheng@nvidia.com>
drivers/usb/host/ehci-q.c

index 233c288e3f931ce4f9399d5b54f25471139f6dfb..760118370e733ad5da82ec4e01c70cfe7443ebb0 100644 (file)
@@ -1008,6 +1008,7 @@ static void qh_link_async (struct ehci_hcd *ehci, struct ehci_qh *qh)
        qh_get(qh);
        qh->xacterrs = 0;
        qh->qh_state = QH_STATE_LINKED;
+       wmb();
        /* qtd completions reported later by interrupt */
 }