mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 18:14:07 +08: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
@ -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 New Issue
Block a user