Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3d6450e authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Greg Kroah-Hartman
Browse files

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: default avatarJarkko Nikula <jhnikula@gmail.com>
Cc: Felipe Balbi <balbi@ti.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 02303f73
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -678,6 +678,7 @@ 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);

	if (!twl->asleep)
		twl4030_phy_power(twl, 0);
	regulator_put(twl->usb1v5);
	regulator_put(twl->usb1v8);