diff options
Diffstat (limited to 'drivers/usb/host/xhci-plat.c')
| -rw-r--r-- | drivers/usb/host/xhci-plat.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index efe1924e0875..a0917a135c5d 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -208,7 +208,7 @@ static int xhci_plat_probe(struct platform_device *pdev) pm_runtime_set_autosuspend_delay(&pdev->dev, 1000); pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); - pm_runtime_get_sync(&pdev->dev); + pm_runtime_get_noresume(&pdev->dev); if (of_device_is_compatible(pdev->dev.of_node, "marvell,armada-375-xhci") || @@ -293,6 +293,8 @@ put_usb3_hcd: usb_put_hcd(xhci->shared_hcd); disable_clk: + pm_runtime_put_noidle(&pdev->dev); + pm_runtime_disable(&pdev->dev); if (!IS_ERR(clk)) clk_disable_unprepare(clk); @@ -308,8 +310,6 @@ static int xhci_plat_remove(struct platform_device *dev) struct xhci_hcd *xhci = hcd_to_xhci(hcd); struct clk *clk = xhci->clk; - pm_runtime_disable(&dev->dev); - device_remove_file(&dev->dev, &dev_attr_config_imod); xhci->xhc_state |= XHCI_STATE_REMOVING; usb_remove_hcd(xhci->shared_hcd); @@ -322,6 +322,9 @@ static int xhci_plat_remove(struct platform_device *dev) clk_disable_unprepare(clk); usb_put_hcd(hcd); + pm_runtime_set_suspended(&dev->dev); + pm_runtime_disable(&dev->dev); + return 0; } @@ -470,6 +473,7 @@ MODULE_DEVICE_TABLE(acpi, usb_xhci_acpi_match); static struct platform_driver usb_xhci_driver = { .probe = xhci_plat_probe, .remove = xhci_plat_remove, + .shutdown = usb_hcd_platform_shutdown, .driver = { .name = "xhci-hcd", .pm = DEV_PM_OPS, |
