Lines Matching full:ehci
3 * Generic platform ehci driver
12 * Derived from the EHCI-PCI driver
40 #include "ehci.h"
42 #define DRIVER_DESC "EHCI generic platform driver"
58 static const char hcd_name[] = "ehci-platform";
62 struct ehci_hcd *ehci = hcd_to_ehci(hcd); in ehci_rockchip_relinquish_port() local
63 u32 __iomem *status_reg = &ehci->regs->port_status[--portnum]; in ehci_rockchip_relinquish_port()
66 portsc = ehci_readl(ehci, status_reg); in ehci_rockchip_relinquish_port()
69 ehci_writel(ehci, portsc, status_reg); in ehci_rockchip_relinquish_port()
81 struct ehci_hcd *ehci = hcd_to_ehci(hcd); in ehci_usic_init() local
83 ehci_writel(ehci, USIC_ENABLE, in ehci_usic_init()
85 ehci_writel(ehci, USIC_MICROFRAME_COUNT, in ehci_usic_init()
87 ehci_writel(ehci, USIC_SCALE_DOWN, in ehci_usic_init()
95 struct ehci_hcd *ehci = hcd_to_ehci(hcd); in ehci_platform_reset() local
98 ehci->has_synopsys_hc_bug = pdata->has_synopsys_hc_bug; in ehci_platform_reset()
106 ehci->caps = hcd->regs + pdata->caps_offset; in ehci_platform_reset()
112 ehci->need_io_watchdog = 0; in ehci_platform_reset()
114 if (of_device_is_compatible(pdev->dev.of_node, "brcm,xgs-iproc-ehci")) in ehci_platform_reset()
115 ehci_writel(ehci, BCM_USB_FIFO_THRESHOLD, in ehci_platform_reset()
116 &ehci->regs->bcm_iproc_insnreg01); in ehci_platform_reset()
168 * @ehci: the ehci hcd pointer
170 * Since EHCI/OHCI controllers on R-Car Gen3 SoCs are possible to be getting
173 * the EHCI PORTSC register.
177 static bool quirk_poll_check_port_status(struct ehci_hcd *ehci) in quirk_poll_check_port_status() argument
179 u32 port_status = ehci_readl(ehci, &ehci->regs->port_status[0]); in quirk_poll_check_port_status()
192 * @ehci: the ehci hcd pointer
194 * Since EHCI/OHCI controllers on R-Car Gen3 SoCs are possible to be getting
199 static void quirk_poll_rebind_companion(struct ehci_hcd *ehci) in quirk_poll_rebind_companion() argument
202 struct usb_hcd *hcd = ehci_to_hcd(ehci); in quirk_poll_rebind_companion()
210 ehci_err(ehci, "%s: failed\n", __func__); in quirk_poll_rebind_companion()
220 struct ehci_hcd *ehci = container_of((void *)priv, struct ehci_hcd, in quirk_poll_work() local
224 if (!quirk_poll_check_port_status(ehci)) in quirk_poll_work()
227 if (!quirk_poll_check_port_status(ehci)) in quirk_poll_work()
230 ehci_dbg(ehci, "%s: detected getting stuck. rebind now!\n", __func__); in quirk_poll_work()
231 quirk_poll_rebind_companion(ehci); in quirk_poll_work()
237 struct ehci_hcd *ehci = container_of((void *)priv, struct ehci_hcd, in quirk_poll_timer() local
240 if (quirk_poll_check_port_status(ehci)) { in quirk_poll_timer()
277 struct ehci_hcd *ehci; in ehci_platform_probe() local
311 ehci = hcd_to_ehci(hcd); in ehci_platform_probe()
315 ehci->big_endian_mmio = 1; in ehci_platform_probe()
318 ehci->big_endian_desc = 1; in ehci_platform_probe()
321 ehci->big_endian_mmio = ehci->big_endian_desc = 1; in ehci_platform_probe()
332 "aspeed,ast2500-ehci") || in ehci_platform_probe()
334 "aspeed,ast2600-ehci")) in ehci_platform_probe()
335 ehci->is_aspeed = 1; in ehci_platform_probe()
369 ehci->big_endian_desc = 1; in ehci_platform_probe()
371 ehci->big_endian_mmio = 1; in ehci_platform_probe()
378 if (ehci->big_endian_mmio) { in ehci_platform_probe()
386 if (ehci->big_endian_desc) { in ehci_platform_probe()
420 "rockchip,rk3588-ehci")) { in ehci_platform_probe()
475 "rockchip,rk3588-ehci")) { in ehci_platform_remove()
560 { .compatible = "via,vt8500-ehci", },
561 { .compatible = "wm,prizm-ehci", },
562 { .compatible = "generic-ehci", },
563 { .compatible = "cavium,octeon-6335-ehci", },
570 { "PNP0D20", 0 }, /* EHCI controller without debug */
577 { "ehci-platform", 0 },
591 .name = "ehci-platform",