[linux-yocto] [PATCH 34/35] Updated USB driver to not apply USB SW workarounds for 3500

Daniel Dragomir daniel.dragomir at windriver.com
Thu Nov 13 09:20:01 PST 2014


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

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

diff --git a/drivers/usb/host/ehci-ci13612.c b/drivers/usb/host/ehci-ci13612.c
index b20ec40..542a3de 100644
--- a/drivers/usb/host/ehci-ci13612.c
+++ b/drivers/usb/host/ehci-ci13612.c
@@ -42,6 +42,14 @@ static void ci13612_usb_setup(struct usb_hcd *hcd)
 	struct ehci_hcd *ehci = hcd_to_ehci(hcd);
 	u32 txfulltuning = 0;
 
+	if ((of_find_compatible_node(NULL, NULL, "lsi,acp3500")
+		!= NULL)
+		|| (of_find_compatible_node(NULL, NULL, "lsi,axxia35xx")
+		!= NULL)) {
+		writel(3, USB_SBUSCFG);
+		return;
+	}
+
 	/* Fix for HW errata 0002832: Settings of VUSB_HS_TX_BURST and
 	 * TXFILLTUNING.
 	 * TXFIFOTHRES should satisfy
@@ -134,6 +142,13 @@ static int
 ci13612_fixup_usbcmd_rs(struct ehci_hcd *ehci)
 {
 	u32 port_status;
+	/* This workaround is not applicable to 3500 */
+	if ((of_find_compatible_node(NULL, NULL, "lsi,acp3500")
+		!= NULL)
+		|| (of_find_compatible_node(NULL, NULL, "lsi,axxia35xx")
+		!= NULL)) {
+		return 0;
+	}
 
 	port_status = ehci_readl(ehci, &ehci->regs->port_status[0]);
 	pr_info("ehci-ci13612: port_status = 0x%x\n", port_status);
@@ -165,6 +180,14 @@ ci13612_fixup_txpburst(struct ehci_hcd *ehci)
 {
 	unsigned burst_size;
 
+	/* This workaround is not applicable to 3500 */
+	if ((of_find_compatible_node(NULL, NULL, "lsi,acp3500")
+		!= NULL)
+		|| (of_find_compatible_node(NULL, NULL, "lsi,axxia35xx")
+		!= NULL)) {
+		return;
+	}
+
 	burst_size = ehci_readl(ehci, &ehci->regs->reserved1[1]);
 	burst_size = (burst_size & 0xffff00ff) | 0x4000;	/* TXPBURST */
 	ehci_writel(ehci, burst_size, &ehci->regs->reserved1[1]);
-- 
1.8.1.4



More information about the linux-yocto mailing list