Lines Matching full:xhci
3 * MediaTek xHCI Host Controller Driver
22 #include "xhci.h"
23 #include "xhci-mtk.h"
372 static void xhci_mtk_quirks(struct device *dev, struct xhci_hcd *xhci) in xhci_mtk_quirks() argument
374 struct usb_hcd *hcd = xhci_to_hcd(xhci); in xhci_mtk_quirks()
382 xhci->quirks |= XHCI_PLAT; in xhci_mtk_quirks()
383 xhci->quirks |= XHCI_MTK_HOST; in xhci_mtk_quirks()
388 xhci->quirks |= XHCI_SPURIOUS_SUCCESS; in xhci_mtk_quirks()
390 xhci->quirks |= XHCI_LPM_SUPPORT; in xhci_mtk_quirks()
392 xhci->quirks |= XHCI_HW_LPM_DISABLE; in xhci_mtk_quirks()
395 * MTK xHCI 0.96: PSA is 1 by default even if doesn't support stream, in xhci_mtk_quirks()
398 if (xhci->hci_version < 0x100 && HCC_MAX_PSA(xhci->hcc_params) == 4) in xhci_mtk_quirks()
399 xhci->quirks |= XHCI_BROKEN_STREAMS; in xhci_mtk_quirks()
443 struct xhci_hcd *xhci; in xhci_mtk_probe() local
540 xhci = hcd_to_xhci(hcd); in xhci_mtk_probe()
541 xhci->main_hcd = hcd; in xhci_mtk_probe()
546 * the xHCI spec on MTK's controller. in xhci_mtk_probe()
548 xhci->imod_interval = 5000; in xhci_mtk_probe()
549 device_property_read_u32(dev, "imod-interval-ns", &xhci->imod_interval); in xhci_mtk_probe()
551 xhci->shared_hcd = usb_create_shared_hcd(driver, dev, in xhci_mtk_probe()
553 if (!xhci->shared_hcd) { in xhci_mtk_probe()
562 if (HCC_MAX_PSA(xhci->hcc_params) >= 4 && in xhci_mtk_probe()
563 !(xhci->quirks & XHCI_BROKEN_STREAMS)) in xhci_mtk_probe()
564 xhci->shared_hcd->can_do_streams = 1; in xhci_mtk_probe()
566 ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED); in xhci_mtk_probe()
577 usb_put_hcd(xhci->shared_hcd); in xhci_mtk_probe()
601 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_mtk_remove() local
602 struct usb_hcd *shared_hcd = xhci->shared_hcd; in xhci_mtk_remove()
608 xhci->shared_hcd = NULL; in xhci_mtk_remove()
632 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_mtk_suspend() local
634 xhci_dbg(xhci, "%s: stop port polling\n", __func__); in xhci_mtk_suspend()
637 clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags); in xhci_mtk_suspend()
638 del_timer_sync(&xhci->shared_hcd->rh_timer); in xhci_mtk_suspend()
650 struct xhci_hcd *xhci = hcd_to_xhci(hcd); in xhci_mtk_resume() local
656 xhci_dbg(xhci, "%s: restart port polling\n", __func__); in xhci_mtk_resume()
657 set_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags); in xhci_mtk_resume()
658 usb_hcd_poll_rh_status(xhci->shared_hcd); in xhci_mtk_resume()
671 { .compatible = "mediatek,mt8173-xhci"},
672 { .compatible = "mediatek,mtk-xhci"},
682 .name = "xhci-mtk",
687 MODULE_ALIAS("platform:xhci-mtk");
703 MODULE_DESCRIPTION("MediaTek xHCI Host Controller Driver");