[linux-yocto] [PATCH 29/52] Updated USB driver to not apply USB SW workarounds for 3500
Daniel Dragomir
daniel.dragomir at windriver.com
Wed Jan 28 09:18:43 PST 2015
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