]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ACPI: AC: Properly notify powermanagement core about changes
authorThomas Weißschuh <linux@weissschuh.net>
Sun, 26 May 2024 21:40:01 +0000 (23:40 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 28 May 2024 19:56:40 +0000 (21:56 +0200)
The powermanagement core does various actions when a powersupply changes.
It calls into notifiers, LED triggers, other power supplies and emits an uevent.

To make sure that all these actions happen properly call power_supply_changed().

Reported-by: Rajas Paranjpe <paranjperajas@gmail.com>
Closes: https://github.com/MrChromebox/firmware/issues/420#issuecomment-2132251318
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/ac.c
drivers/acpi/sbs.c

index 2d4a35e6dd18d55c1ce1127ee81dbfd080a15653..09a87fa222c78fee2e4c40987d07c725e37aa5ff 100644 (file)
@@ -145,7 +145,7 @@ static void acpi_ac_notify(acpi_handle handle, u32 event, void *data)
                                                  dev_name(&adev->dev), event,
                                                  (u32) ac->state);
                acpi_notifier_call_chain(adev, event, (u32) ac->state);
-               kobject_uevent(&ac->charger->dev.kobj, KOBJ_CHANGE);
+               power_supply_changed(ac->charger);
        }
 }
 
@@ -268,7 +268,7 @@ static int acpi_ac_resume(struct device *dev)
        if (acpi_ac_get_state(ac))
                return 0;
        if (old_state != ac->state)
-               kobject_uevent(&ac->charger->dev.kobj, KOBJ_CHANGE);
+               power_supply_changed(ac->charger);
 
        return 0;
 }
index 94e3c000df2e164824a95157715a204fd3f74526..dc8164b182dccf3fa12fd59f0430d08468ba63a1 100644 (file)
@@ -610,7 +610,7 @@ static void acpi_sbs_callback(void *context)
        if (sbs->charger_exists) {
                acpi_ac_get_present(sbs);
                if (sbs->charger_present != saved_charger_state)
-                       kobject_uevent(&sbs->charger->dev.kobj, KOBJ_CHANGE);
+                       power_supply_changed(sbs->charger);
        }
 
        if (sbs->manager_present) {
@@ -622,7 +622,7 @@ static void acpi_sbs_callback(void *context)
                        acpi_battery_read(bat);
                        if (saved_battery_state == bat->present)
                                continue;
-                       kobject_uevent(&bat->bat->dev.kobj, KOBJ_CHANGE);
+                       power_supply_changed(bat->bat);
                }
        }
 }