Lines Matching full:ehci
3 * Generic platform ehci driver
12 * Derived from the EHCI-PCI driver
39 #include "ehci.h"
41 #define DRIVER_DESC "EHCI generic platform driver"
60 struct ehci_hcd *ehci = hcd_to_ehci(hcd); in ehci_platform_reset() local
63 ehci->has_synopsys_hc_bug = pdata->has_synopsys_hc_bug; in ehci_platform_reset()
71 ehci->caps = hcd->regs + pdata->caps_offset; in ehci_platform_reset()
77 ehci->need_io_watchdog = 0; in ehci_platform_reset()
79 if (of_device_is_compatible(pdev->dev.of_node, "brcm,xgs-iproc-ehci")) in ehci_platform_reset()
80 ehci_writel(ehci, BCM_USB_FIFO_THRESHOLD, in ehci_platform_reset()
81 &ehci->regs->brcm_insnreg[1]); in ehci_platform_reset()
133 * @ehci: the ehci hcd pointer
135 * Since EHCI/OHCI controllers on R-Car Gen3 SoCs are possible to be getting
138 * the EHCI PORTSC register.
142 static bool quirk_poll_check_port_status(struct ehci_hcd *ehci) in quirk_poll_check_port_status() argument
144 u32 port_status = ehci_readl(ehci, &ehci->regs->port_status[0]); in quirk_poll_check_port_status()
157 * @ehci: the ehci hcd pointer
159 * Since EHCI/OHCI controllers on R-Car Gen3 SoCs are possible to be getting
164 static void quirk_poll_rebind_companion(struct ehci_hcd *ehci) in quirk_poll_rebind_companion() argument
167 struct usb_hcd *hcd = ehci_to_hcd(ehci); in quirk_poll_rebind_companion()
175 ehci_err(ehci, "%s: failed\n", __func__); in quirk_poll_rebind_companion()
185 struct ehci_hcd *ehci = container_of((void *)priv, struct ehci_hcd, in quirk_poll_work() local
189 if (!quirk_poll_check_port_status(ehci)) in quirk_poll_work()
192 if (!quirk_poll_check_port_status(ehci)) in quirk_poll_work()
195 ehci_dbg(ehci, "%s: detected getting stuck. rebind now!\n", __func__); in quirk_poll_work()
196 quirk_poll_rebind_companion(ehci); in quirk_poll_work()
202 struct ehci_hcd *ehci = container_of((void *)priv, struct ehci_hcd, in quirk_poll_timer() local
205 if (quirk_poll_check_port_status(ehci)) { in quirk_poll_timer()
242 struct ehci_hcd *ehci; in ehci_platform_probe() local
274 ehci = hcd_to_ehci(hcd); in ehci_platform_probe()
278 ehci->big_endian_mmio = 1; in ehci_platform_probe()
281 ehci->big_endian_desc = 1; in ehci_platform_probe()
284 ehci->big_endian_mmio = ehci->big_endian_desc = 1; in ehci_platform_probe()
287 ehci->spurious_oc = 1; in ehci_platform_probe()
298 "aspeed,ast2500-ehci") || in ehci_platform_probe()
300 "aspeed,ast2600-ehci")) in ehci_platform_probe()
301 ehci->is_aspeed = 1; in ehci_platform_probe()
329 ehci->big_endian_desc = 1; in ehci_platform_probe()
331 ehci->big_endian_mmio = 1; in ehci_platform_probe()
337 ehci->spurious_oc = 1; in ehci_platform_probe()
340 if (ehci->big_endian_mmio) { in ehci_platform_probe()
348 if (ehci->big_endian_desc) { in ehci_platform_probe()
483 { .compatible = "via,vt8500-ehci", },
484 { .compatible = "wm,prizm-ehci", },
485 { .compatible = "generic-ehci", },
486 { .compatible = "cavium,octeon-6335-ehci", },
493 { "PNP0D20", 0 }, /* EHCI controller without debug */
500 { "ehci-platform", 0 },
514 .name = "ehci-platform",