[linux-yocto] [PATCH 78/94] drivers/usb: USB driver changes to improve performance on AXM55xx.

Paul Butler butler.paul at gmail.com
Thu Nov 7 17:13:32 PST 2013


From: SangeethaRao <sangeetha.rao at lsi.com>

Also, updated check for DTS compatible field to match the DTS

Signed-off-by: SangeethaRao <sangeetha.rao at lsi.com>
---
 drivers/usb/host/ehci-ci13612.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/host/ehci-ci13612.c b/drivers/usb/host/ehci-ci13612.c
index 02a6d29..c8a8a5d 100644
--- a/drivers/usb/host/ehci-ci13612.c
+++ b/drivers/usb/host/ehci-ci13612.c
@@ -125,6 +125,7 @@ static int ehci_run_fix(struct usb_hcd *hcd)
 #endif
 	unsigned burst_size;
 	int retval;
+	unsigned usb_cmd;
 
 #ifdef CONFIG_LSI_USB_SW_WORKAROUND
 	/* Fix HW errata 0003256: Do not enable USBCMD.RS for some time after
@@ -160,7 +161,6 @@ static int ehci_run_fix(struct usb_hcd *hcd)
 	ehci_writel(ehci, burst_size, &ehci->regs->reserved[1]);
 
 #else
-#if 1
     /* Fix for HW errata 9000373951: You can adjust the burst size and fill the
      * level to minimize under-run possibilities. In the failing case, the
      * transfer size was 96 bytes, the burst size was 16, and the fill
@@ -174,11 +174,19 @@ static int ehci_run_fix(struct usb_hcd *hcd)
 	burst_size = (burst_size & 0xffff00ff) | 0x4000;	/* TXPBURST */
 	ehci_writel(ehci, burst_size, &ehci->regs->reserved[1]);
 
+	/* Set the SBUSCFG[2:0] to 3 (AHBBRST3) */
+	writel(0x3, (void __iomem *)USB_SBUSCFG);
+
 	retval = ehci_run(hcd);
+
+	/* Performance tweaking */
+	/* Clear ITC field 23:16 to zero */
+	usb_cmd = inl(USB_USBCMD) & 0xFF00FFFF;
+	writel(usb_cmd, (void __iomem *)USB_USBCMD);
+
 	if (retval)
 		return retval;
 #endif
-#endif
 
 	return 0;
 }
@@ -331,7 +339,7 @@ MODULE_ALIAS("platform:ci13612-ehci");
 static struct of_device_id ci13612_match[] = {
 	{
 		.type	= "usb",
-		.compatible = "acp-usb",
+		.compatible = "lsi,acp-usb",
 	},
 	{},
 };
-- 
1.8.3.4




More information about the linux-yocto mailing list