diff options
author | Li Jun <jun.li@nxp.com> | 2017-11-10 00:16:48 +0800 |
---|---|---|
committer | Jason Liu <jason.hui.liu@nxp.com> | 2018-10-29 11:10:38 +0800 |
commit | 3ae6f3e9217310c2488836e010eff25d8afeaca0 (patch) | |
tree | 7d82783c36e68e1158824a8a57e0af5ef69829e1 /drivers/usb/host | |
parent | 835da03f13ce6685a397dd1c37f8ce0760ef25f6 (diff) |
MLK-16775-2 usb: xhci: plat: only do high bus freq for runtime pm
Remove xhci_suspend and xhci_resume as i.MX8MQ dwc3 can't support it,
add high bus request and release, and enable runtime pm by default.
Acked-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Li Jun <jun.li@nxp.com>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r-- | drivers/usb/host/xhci-plat.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index 830dd0dbbce0..858f66fa11e3 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -20,6 +20,7 @@ #include <linux/usb/phy.h> #include <linux/slab.h> #include <linux/acpi.h> +#include <linux/busfreq-imx.h> #include "xhci.h" #include "xhci-plat.h" @@ -281,6 +282,8 @@ static int xhci_plat_probe(struct platform_device *pdev) goto put_usb3_hcd; } + request_bus_freq(BUS_FREQ_HIGH); + ret = usb_add_hcd(hcd, irq, IRQF_SHARED); if (ret) goto disable_usb_phy; @@ -295,12 +298,6 @@ static int xhci_plat_probe(struct platform_device *pdev) device_enable_async_suspend(&pdev->dev); pm_runtime_put_noidle(&pdev->dev); - /* - * Prevent runtime pm from being on as default, users should enable - * runtime pm using power/control in sysfs. - */ - pm_runtime_forbid(&pdev->dev); - return 0; @@ -309,6 +306,7 @@ dealloc_usb2_hcd: disable_usb_phy: usb_phy_shutdown(hcd->usb_phy); + release_bus_freq(BUS_FREQ_HIGH); put_usb3_hcd: usb_put_hcd(xhci->shared_hcd); @@ -347,6 +345,7 @@ static int xhci_plat_remove(struct platform_device *dev) pm_runtime_set_suspended(&dev->dev); pm_runtime_disable(&dev->dev); + release_bus_freq(BUS_FREQ_HIGH); return 0; } @@ -382,18 +381,14 @@ static int __maybe_unused xhci_plat_resume(struct device *dev) static int __maybe_unused xhci_plat_runtime_suspend(struct device *dev) { - struct usb_hcd *hcd = dev_get_drvdata(dev); - struct xhci_hcd *xhci = hcd_to_xhci(hcd); - - return xhci_suspend(xhci, true); + release_bus_freq(BUS_FREQ_HIGH); + return 0; } static int __maybe_unused xhci_plat_runtime_resume(struct device *dev) { - struct usb_hcd *hcd = dev_get_drvdata(dev); - struct xhci_hcd *xhci = hcd_to_xhci(hcd); - - return xhci_resume(xhci, 0); + request_bus_freq(BUS_FREQ_HIGH); + return 0; } static const struct dev_pm_ops xhci_plat_pm_ops = { |