diff mbox series

[2/3] power: supply: axp288_charger: Lock axp288_chrg_info over axp288_charger_enable_charger()

Message ID 20240104183516.312044-2-hdegoede@redhat.com (mailing list archive)
State Handled Elsewhere, archived
Headers show
Series [1/3] power: supply: axp288_charger: Call power_supply_changed() after set_property() | expand

Commit Message

Hans de Goede Jan. 4, 2024, 6:35 p.m. UTC
Modify axp288_charger_extcon_evt_worker() to hold the axp288_chrg_info.lock
mutex when calling axp288_charger_enable_charger().

This is a preparation patch for adding charge-inhibit support.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/power/supply/axp288_charger.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/drivers/power/supply/axp288_charger.c b/drivers/power/supply/axp288_charger.c
index 3c442114d55b..a327933cfd6a 100644
--- a/drivers/power/supply/axp288_charger.c
+++ b/drivers/power/supply/axp288_charger.c
@@ -633,8 +633,8 @@  static void axp288_charger_extcon_evt_worker(struct work_struct *work)
 	/* Offline? Disable charging and bail */
 	if (!(val & PS_STAT_VBUS_VALID)) {
 		dev_dbg(&info->pdev->dev, "USB charger disconnected\n");
-		axp288_charger_enable_charger(info, false);
 		mutex_lock(&info->lock);
+		axp288_charger_enable_charger(info, false);
 		info->valid = false;
 		mutex_unlock(&info->lock);
 		power_supply_changed(info->psy_usb);
@@ -662,13 +662,13 @@  static void axp288_charger_extcon_evt_worker(struct work_struct *work)
 
 	/* Set vbus current limit first, then enable charger */
 	ret = axp288_charger_set_vbus_inlmt(info, current_limit);
-	if (ret == 0)
-		axp288_charger_enable_charger(info, true);
-	else
+	if (ret)
 		dev_err(&info->pdev->dev,
 			"error setting current limit (%d)\n", ret);
 
 	mutex_lock(&info->lock);
+	if (ret == 0)
+		axp288_charger_enable_charger(info, true);
 	info->valid = false;
 	mutex_unlock(&info->lock);
 	power_supply_changed(info->psy_usb);