Lines Matching defs:xhci
3 * xhci-plat.c - xHCI host controller driver platform Bus Glue.
23 #include "xhci.h"
24 #include "xhci-plat.h"
25 #include "xhci-mvebu.h"
26 #include "xhci-rcar.h"
87 static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
89 struct xhci_plat_priv *priv = xhci_to_priv(xhci);
96 xhci->quirks |= XHCI_PLAT | priv->quirks;
142 .compatible = "generic-xhci",
144 .compatible = "xhci-platform",
146 .compatible = "marvell,armada-375-xhci",
149 .compatible = "marvell,armada-380-xhci",
152 .compatible = "marvell,armada3700-xhci",
155 .compatible = "renesas,xhci-r8a7790",
158 .compatible = "renesas,xhci-r8a7791",
161 .compatible = "renesas,xhci-r8a7793",
164 .compatible = "renesas,xhci-r8a7795",
167 .compatible = "renesas,xhci-r8a7796",
170 .compatible = "renesas,rcar-gen2-xhci",
173 .compatible = "renesas,rcar-gen3-xhci",
176 .compatible = "brcm,xhci-brcm-v2",
179 .compatible = "brcm,bcm7445-xhci",
192 struct xhci_hcd *xhci;
264 xhci = hcd_to_xhci(hcd);
270 xhci->reg_clk = devm_clk_get_optional(&pdev->dev, "reg");
271 if (IS_ERR(xhci->reg_clk)) {
272 ret = PTR_ERR(xhci->reg_clk);
276 ret = clk_prepare_enable(xhci->reg_clk);
280 xhci->clk = devm_clk_get_optional(&pdev->dev, NULL);
281 if (IS_ERR(xhci->clk)) {
282 ret = PTR_ERR(xhci->clk);
286 ret = clk_prepare_enable(xhci->clk);
303 xhci->main_hcd = hcd;
304 xhci->shared_hcd = __usb_create_hcd(driver, sysdev, &pdev->dev,
306 if (!xhci->shared_hcd) {
312 xhci->imod_interval = 40000;
318 xhci->quirks |= XHCI_HW_LPM_DISABLE;
321 xhci->quirks |= XHCI_LPM_SUPPORT;
324 xhci->quirks |= XHCI_BROKEN_PORT_PED;
326 if (device_property_read_bool(tmpdev, "xhci-sg-trb-cache-size-quirk"))
327 xhci->quirks |= XHCI_SG_TRB_CACHE_SIZE_QUIRK;
330 &xhci->imod_interval);
346 xhci->shared_hcd->tpl_support = hcd->tpl_support;
354 if ((xhci->quirks & XHCI_SKIP_PHY_INIT) || (priv && (priv->quirks & XHCI_SKIP_PHY_INIT)))
358 xhci->quirks |= XHCI_SG_TRB_CACHE_SIZE_QUIRK;
364 if (HCC_MAX_PSA(xhci->hcc_params) >= 4)
365 xhci->shared_hcd->can_do_streams = 1;
367 ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED);
390 usb_put_hcd(xhci->shared_hcd);
393 clk_disable_unprepare(xhci->clk);
396 clk_disable_unprepare(xhci->reg_clk);
411 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
412 struct clk *clk = xhci->clk;
413 struct clk *reg_clk = xhci->reg_clk;
414 struct usb_hcd *shared_hcd = xhci->shared_hcd;
417 xhci->xhc_state |= XHCI_STATE_REMOVING;
420 xhci->shared_hcd = NULL;
440 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
453 ret = xhci_suspend(xhci, device_may_wakeup(dev));
457 if (!device_may_wakeup(dev) && (xhci->quirks & XHCI_SUSPEND_RESUME_CLKS)) {
458 clk_disable_unprepare(xhci->clk);
459 clk_disable_unprepare(xhci->reg_clk);
468 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
471 if (!device_may_wakeup(dev) && (xhci->quirks & XHCI_SUSPEND_RESUME_CLKS)) {
472 ret = clk_prepare_enable(xhci->clk);
476 ret = clk_prepare_enable(xhci->reg_clk);
478 clk_disable_unprepare(xhci->clk);
487 ret = xhci_resume(xhci, 0);
498 if (!device_may_wakeup(dev) && (xhci->quirks & XHCI_SUSPEND_RESUME_CLKS)) {
499 clk_disable_unprepare(xhci->clk);
500 clk_disable_unprepare(xhci->reg_clk);
509 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
516 return xhci_suspend(xhci, true);
522 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
524 return xhci_resume(xhci, 0);
549 .name = "xhci-hcd",
555 MODULE_ALIAS("platform:xhci-hcd");