From: Jarkko Nikula Date: Tue, 30 Nov 2010 15:58:25 +0000 (+0200) Subject: usb: otg: twl4030-usb: Fix unbalanced regulator disables at module removal X-Git-Tag: firefly_0821_release~7613^2~3111^2~11^2~40 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=c3d6450e741da08c3bc2e2ba06d743c27540abac;p=firefly-linux-kernel-4.4.55.git usb: otg: twl4030-usb: Fix unbalanced regulator disables at module removal Function twl4030_usb_remove can cause unbalanced regulator disables in twl4030_phy_power if the cable is not connected. Regulator enable/disable calls are in balance only if the twl4030_phy_resume was called prior the twl4030_usb_remove, that is, the cable was connected. Fix this by checking the 'asleep' variable in twl4030_usb_remove since that variable is used to check state in other functions. Signed-off-by: Jarkko Nikula Cc: Felipe Balbi Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c index d335f484fcd8..6ca505f333e4 100644 --- a/drivers/usb/otg/twl4030-usb.c +++ b/drivers/usb/otg/twl4030-usb.c @@ -678,7 +678,8 @@ static int __exit twl4030_usb_remove(struct platform_device *pdev) /* disable complete OTG block */ twl4030_usb_clear_bits(twl, POWER_CTRL, POWER_CTRL_OTG_ENAB); - twl4030_phy_power(twl, 0); + if (!twl->asleep) + twl4030_phy_power(twl, 0); regulator_put(twl->usb1v5); regulator_put(twl->usb1v8); regulator_put(twl->usb3v1);