mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
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 <jhnikula@gmail.com> Cc: Felipe Balbi <balbi@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
02303f7337
commit
c3d6450e74
1 changed files with 2 additions and 1 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue