diff mbox series

usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe

Message ID 20201123145719.1455849-1-zhangqilong3@huawei.com (mailing list archive)
State Accepted
Commit d6ff32478d7e95d6ca199b5c852710d6964d5811
Headers show
Series usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe | expand

Commit Message

Zhang Qilong Nov. 23, 2020, 2:57 p.m. UTC
The pm_runtime_enable will increase power disable depth. Imbalance
depth will resulted in enabling runtime PM of device fails later.
Thus a pairing decrement must be needed on the error handling path
to keep it balanced.

Fixes: 6c984b066d84b ("ARM: OMAP: USBHOST: Replace usbhs core driver APIs by Runtime pm APIs")
Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
---
 drivers/usb/host/ehci-omap.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Alan Stern Nov. 23, 2020, 3:15 p.m. UTC | #1
On Mon, Nov 23, 2020 at 10:57:19PM +0800, Zhang Qilong wrote:
> The pm_runtime_enable will increase power disable depth. Imbalance

That's backward.  pm_runtime_enable _decrements_ the power-disable 
depth.

> depth will resulted in enabling runtime PM of device fails later.
> Thus a pairing decrement must be needed on the error handling path
> to keep it balanced.
> 
> Fixes: 6c984b066d84b ("ARM: OMAP: USBHOST: Replace usbhs core driver APIs by Runtime pm APIs")
> Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
> ---
>  drivers/usb/host/ehci-omap.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
> index 8771a2ed6926..7f4a03e8647a 100644
> --- a/drivers/usb/host/ehci-omap.c
> +++ b/drivers/usb/host/ehci-omap.c
> @@ -220,6 +220,7 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev)
>  
>  err_pm_runtime:
>  	pm_runtime_put_sync(dev);
> +	pm_runtime_disable(dev);
>  
>  err_phy:
>  	for (i = 0; i < omap->nports; i++) {

Apart from that one typo,

Acked-by: Alan Stern <stern@rowland.harvard.edu>
diff mbox series

Patch

diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
index 8771a2ed6926..7f4a03e8647a 100644
--- a/drivers/usb/host/ehci-omap.c
+++ b/drivers/usb/host/ehci-omap.c
@@ -220,6 +220,7 @@  static int ehci_hcd_omap_probe(struct platform_device *pdev)
 
 err_pm_runtime:
 	pm_runtime_put_sync(dev);
+	pm_runtime_disable(dev);
 
 err_phy:
 	for (i = 0; i < omap->nports; i++) {