[PATCH 2/3] usb/xhci-plat: Set PM runtime as active on resume
From: Qais Yousef
Date: Fri Apr 24 2020 - 09:48:31 EST
Follow suit of ohci-platform.c and perform pm_runtime_set_active() on
resume.
ohci-platform.c had a warning reported due to the missing
pm_runtime_set_active() [1].
[1] https://lore.kernel.org/lkml/20200323143857.db5zphxhq4hz3hmd@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
Signed-off-by: Qais Yousef <qais.yousef@xxxxxxx>
CC: Tony Prisk <linux@xxxxxxxxxxxxxxx>
CC: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
CC: Mathias Nyman <mathias.nyman@xxxxxxxxx>
CC: Oliver Neukum <oneukum@xxxxxxx>
CC: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
CC: linux-usb@xxxxxxxxxxxxxxx
CC: linux-kernel@xxxxxxxxxxxxxxx
---
xhci_resume() here could fail, I wasn't sure if we need to call
pm_runtime_set_active() unconditionally. I assumed not.
There was another function xhci_plat_resume(), I think we just care about the
PM runtime resume callback only.
Please have a closer look.
drivers/usb/host/xhci-plat.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 1d4f6f85f0fe..7c6fd138072c 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -422,8 +422,17 @@ 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);
+ int ret;
- return xhci_resume(xhci, 0);
+ ret = xhci_resume(xhci, 0);
+ if (ret)
+ return ret;
+
+ pm_runtime_disable(dev);
+ pm_runtime_set_active(dev);
+ pm_runtime_enable(dev);
+
+ return 0;
}
static const struct dev_pm_ops xhci_plat_pm_ops = {
--
2.17.1