From 485409d4ee7959bcc682e357691c3f477beddd10 Mon Sep 17 00:00:00 2001 From: Grond Date: Tue, 20 Dec 2016 10:59:30 -0800 Subject: [PATCH] twl4030_charger: remember to clean up USB regulator This was causing issues when the driver was modularized. Removing and re-inserting the driver with modprobe would cause noisy breakage because the regulator wasn't released when the driver exited. --- drivers/power/twl4030_charger.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/power/twl4030_charger.c b/drivers/power/twl4030_charger.c index 9488b37cbde8..575407a03024 100644 --- a/drivers/power/twl4030_charger.c +++ b/drivers/power/twl4030_charger.c @@ -895,6 +895,13 @@ fail_chg_irq: power_supply_unregister(&bci->usb); fail_register_usb: power_supply_unregister(&bci->ac); + + if (bci->usb_reg) { + if (bci->usb_enabled) + regulator_disable(bci->usb_reg); + regulator_put(bci->usb_reg); + } + fail_register_ac: led_trigger_unregister_simple(bci->charging_any_trig); platform_set_drvdata(pdev, NULL); @@ -927,6 +934,13 @@ static int __exit twl4030_bci_remove(struct platform_device *pdev) free_irq(bci->irq_chg, bci); power_supply_unregister(&bci->usb); power_supply_unregister(&bci->ac); + + if (bci->usb_reg) { + if (bci->usb_enabled) + regulator_disable(bci->usb_reg); + regulator_put(bci->usb_reg); + } + led_trigger_unregister_simple(bci->charging_any_trig); platform_set_drvdata(pdev, NULL); kfree(bci); -- 2.39.2