From: Tony Lindgren Date: Sun, 10 Jan 2021 19:53:51 +0000 (+0200) Subject: power: supply: cpcap-charger: Fix flakey reboot with charger connected X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=2828ffc2a276e73f8f3182b3385d7f1989178043;p=linux.git power: supply: cpcap-charger: Fix flakey reboot with charger connected If we have a USB charger connected, reboot is flakey and often fails to reboot the device with the charger LED staying on. Let's fix this by implementing .shutdown. Cc: Arthur Demchenkov Cc: Carl Philipp Klemm Cc: Merlijn Wajer Cc: Pavel Machek Signed-off-by: Tony Lindgren Signed-off-by: Sebastian Reichel --- diff --git a/drivers/power/supply/cpcap-charger.c b/drivers/power/supply/cpcap-charger.c index 2c5f2246c6eaa..4b0f62dd33f4e 100644 --- a/drivers/power/supply/cpcap-charger.c +++ b/drivers/power/supply/cpcap-charger.c @@ -886,7 +886,7 @@ static int cpcap_charger_probe(struct platform_device *pdev) return 0; } -static int cpcap_charger_remove(struct platform_device *pdev) +static void cpcap_charger_shutdown(struct platform_device *pdev) { struct cpcap_charger_ddata *ddata = platform_get_drvdata(pdev); int error; @@ -903,6 +903,11 @@ static int cpcap_charger_remove(struct platform_device *pdev) error); cancel_delayed_work_sync(&ddata->vbus_work); cancel_delayed_work_sync(&ddata->detect_work); +} + +static int cpcap_charger_remove(struct platform_device *pdev) +{ + cpcap_charger_shutdown(pdev); return 0; } @@ -913,6 +918,7 @@ static struct platform_driver cpcap_charger_driver = { .name = "cpcap-charger", .of_match_table = of_match_ptr(cpcap_charger_id_table), }, + .shutdown = cpcap_charger_shutdown, .remove = cpcap_charger_remove, }; module_platform_driver(cpcap_charger_driver);