Lines Matching refs:xhci

87 static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)  in xhci_plat_quirks()  argument
89 struct xhci_plat_priv *priv = xhci_to_priv(xhci); in xhci_plat_quirks()
96 xhci->quirks |= XHCI_PLAT | priv->quirks; in xhci_plat_quirks()
202 static int xhci_vendor_init(struct xhci_hcd *xhci) in xhci_vendor_init() argument
207 ops = xhci->vendor_ops = xhci_plat_vendor_overwrite.vendor_ops; in xhci_vendor_init()
210 return ops->vendor_init(xhci); in xhci_vendor_init()
214 static void xhci_vendor_cleanup(struct xhci_hcd *xhci) in xhci_vendor_cleanup() argument
216 struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); in xhci_vendor_cleanup()
219 ops->vendor_cleanup(xhci); in xhci_vendor_cleanup()
221 xhci->vendor_ops = NULL; in xhci_vendor_cleanup()
229 struct xhci_hcd *xhci; in xhci_plat_probe() local
301 xhci = hcd_to_xhci(hcd); in xhci_plat_probe()
307 xhci->reg_clk = devm_clk_get_optional(&pdev->dev, "reg"); in xhci_plat_probe()
308 if (IS_ERR(xhci->reg_clk)) { in xhci_plat_probe()
309 ret = PTR_ERR(xhci->reg_clk); in xhci_plat_probe()
313 ret = clk_prepare_enable(xhci->reg_clk); in xhci_plat_probe()
317 xhci->clk = devm_clk_get_optional(&pdev->dev, NULL); in xhci_plat_probe()
318 if (IS_ERR(xhci->clk)) { in xhci_plat_probe()
319 ret = PTR_ERR(xhci->clk); in xhci_plat_probe()
323 ret = clk_prepare_enable(xhci->clk); in xhci_plat_probe()
340 xhci->main_hcd = hcd; in xhci_plat_probe()
341 xhci->shared_hcd = __usb_create_hcd(driver, sysdev, &pdev->dev, in xhci_plat_probe()
343 if (!xhci->shared_hcd) { in xhci_plat_probe()
349 xhci->imod_interval = 40000; in xhci_plat_probe()
355 xhci->quirks |= XHCI_HW_LPM_DISABLE; in xhci_plat_probe()
358 xhci->quirks |= XHCI_LPM_SUPPORT; in xhci_plat_probe()
361 xhci->quirks |= XHCI_BROKEN_PORT_PED; in xhci_plat_probe()
364 xhci->quirks |= XHCI_SKIP_PHY_INIT; in xhci_plat_probe()
368 xhci->quirks |= XHCI_U2_BROKEN_SUSPEND; in xhci_plat_probe()
371 &xhci->imod_interval); in xhci_plat_probe()
386 ret = xhci_vendor_init(xhci); in xhci_plat_probe()
391 xhci->shared_hcd->tpl_support = hcd->tpl_support; in xhci_plat_probe()
399 if ((xhci->quirks & XHCI_SKIP_PHY_INIT) || (priv && (priv->quirks & XHCI_SKIP_PHY_INIT))) in xhci_plat_probe()
403 xhci->quirks |= XHCI_SG_TRB_CACHE_SIZE_QUIRK; in xhci_plat_probe()
409 if (HCC_MAX_PSA(xhci->hcc_params) >= 4) in xhci_plat_probe()
410 xhci->shared_hcd->can_do_streams = 1; in xhci_plat_probe()
412 ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED); in xhci_plat_probe()
435 usb_put_hcd(xhci->shared_hcd); in xhci_plat_probe()
438 clk_disable_unprepare(xhci->clk); in xhci_plat_probe()
441 clk_disable_unprepare(xhci->reg_clk); in xhci_plat_probe()
456 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_plat_remove() local
457 struct clk *clk = xhci->clk; in xhci_plat_remove()
458 struct clk *reg_clk = xhci->reg_clk; in xhci_plat_remove()
459 struct usb_hcd *shared_hcd = xhci->shared_hcd; in xhci_plat_remove()
462 xhci->xhc_state |= XHCI_STATE_REMOVING; in xhci_plat_remove()
465 xhci->shared_hcd = NULL; in xhci_plat_remove()
470 xhci_vendor_cleanup(xhci); in xhci_plat_remove()
487 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_plat_suspend() local
500 ret = xhci_suspend(xhci, device_may_wakeup(dev)); in xhci_plat_suspend()
504 if (!device_may_wakeup(dev) && (xhci->quirks & XHCI_SUSPEND_RESUME_CLKS)) { in xhci_plat_suspend()
505 clk_disable_unprepare(xhci->clk); in xhci_plat_suspend()
506 clk_disable_unprepare(xhci->reg_clk); in xhci_plat_suspend()
515 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_plat_resume() local
518 if (!device_may_wakeup(dev) && (xhci->quirks & XHCI_SUSPEND_RESUME_CLKS)) { in xhci_plat_resume()
519 clk_prepare_enable(xhci->clk); in xhci_plat_resume()
520 clk_prepare_enable(xhci->reg_clk); in xhci_plat_resume()
527 ret = xhci_resume(xhci, 0); in xhci_plat_resume()
541 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_plat_runtime_suspend() local
548 return xhci_suspend(xhci, true); in xhci_plat_runtime_suspend()
554 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_plat_runtime_resume() local
556 return xhci_resume(xhci, 0); in xhci_plat_runtime_resume()