linux/drivers/power/supply
Fenglin Wu 13276961ae power: supply: qcom_battmgr: handle charging state change notifications
[ Upstream commit 41307ec7df ]

The X1E80100 battery management firmware sends a notification with
code 0x83 when the battery charging state changes, such as switching
between fast charge, taper charge, end of charge, or any other error
charging states.

The same notification code is used with bit[8] set when charging stops
because the charge control end threshold is reached. Additionally,
a 2-bit value is included in bit[10:9] with the same code to indicate
the charging source capability, which is determined by the calculated
power from voltage and current readings from PDOs: 2 means a strong
charger over 60W, 1 indicates a weak charger, and 0 means there is no
charging source.

These 3-MSB [10:8] in the notification code is not much useful for now,
hence just ignore them and trigger a power supply change event whenever
0x83 notification code is received. This helps to eliminate the unknown
notification error messages.

Reported-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Closes: https://lore.kernel.org/all/r65idyc4of5obo6untebw4iqfj2zteiggnnzabrqtlcinvtddx@xc4aig5abesu/
Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-11-13 15:34:06 -05:00
..
88pm860x_battery.c power: supply: 88pm860x_battery: fix the return value handle for platform_get_irq() 2023-09-12 20:44:52 +02:00
88pm860x_charger.c power: supply: 88pm860x: simplify using devm 2022-11-17 23:47:23 +01:00
ab8500-bm.h power: supply: ab8500: Standardize BTI resistance 2022-02-28 11:34:31 +01:00
ab8500-chargalg.h power: supply: ab8500: Drop external charger leftovers 2022-07-17 00:51:35 +02:00
ab8500_bmdata.c power: supply: ab8500: Standardize BTI resistance 2022-02-28 11:34:31 +01:00
ab8500_btemp.c power: supply: core: add power_supply_for_each_device() 2024-03-06 00:21:34 +01:00
ab8500_chargalg.c power: supply: samsung-sdi-battery: Constify struct power_supply_maintenance_charge_table 2024-06-26 17:32:00 +02:00
ab8500_charger.c power: supply: ab8500: Clean some error messages 2024-06-26 15:00:53 +02:00
ab8500_fg.c power: supply: ab8500: Constify struct kobj_type 2024-09-05 16:30:44 +02:00
acer_a500_battery.c power: supply: acer_a500_battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
act8945a_charger.c power: supply: act8945a_charger: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
adp5061.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
apm_power.c power: supply: core: add power_supply_for_each_device() 2024-03-06 00:21:34 +01:00
axp20x_ac_power.c power: supply: axp20x_ac_power: Annotate struct axp20x_ac_power with __counted_by 2023-09-22 22:54:36 +02:00
axp20x_battery.c power: supply: axp20x_battery: Update temp sensor for AXP717 from device tree 2025-05-29 11:02:43 +02:00
axp20x_usb_power.c power: supply: axp20x_usb_power: Add support for AXP717 2024-09-03 23:53:34 +02:00
axp288_charger.c power: supply: axp288_charger: Round constant_charge_voltage writes down 2024-07-27 00:16:15 +02:00
axp288_fuel_gauge.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
bd99954-charger.c power: supply: bd99954: remove unused struct 'battery_data' 2024-06-03 01:29:46 +02:00
bd99954-charger.h power: supply: Support ROHM bd99954 charger 2020-05-10 02:35:49 +02:00
bq27xxx_battery.c power: supply: bq27xxx: restrict no-battery detection to bq27000 2025-09-25 11:13:45 +02:00
bq27xxx_battery_hdq.c power supply and reset changes for the v5.10 series 2020-10-20 10:56:34 -07:00
bq27xxx_battery_i2c.c power: supply: bq27xxx: Retrieve again when busy 2025-06-27 11:11:27 +01:00
bq256xx_charger.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
bq2415x_charger.c power: supply: bq2415x_charger: report online status 2024-03-01 02:26:10 +01:00
bq2515x_charger.c power: supply: bq2515x: replace deprecated strncpy with strscpy 2023-10-21 00:26:51 +02:00
bq24190_charger.c power: supply: bq24190: Fix BQ24296 Vbus regulator support 2025-01-02 10:34:15 +01:00
bq24257_charger.c power: supply: bq24257_charger: Cleanup OF/ID table terminators 2023-09-12 23:50:05 +02:00
bq24735-charger.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
bq25890_charger.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
bq25980_charger.c power: supply: bq25980: replace deprecated strncpy with strscpy 2023-10-21 00:29:30 +02:00
bq25980_charger.h power: supply: bq25980: Add support for the BQ259xx family 2020-10-04 01:54:35 +02:00
charger-manager.c power: supply: charger-manager: replace deprecated strncpy with strscpy 2023-10-21 00:32:31 +02:00
collie_battery.c power: supply: collie: Fix wakeup source leaks on device unbind 2025-06-27 11:11:26 +01:00
cpcap-battery.c power: supply: cpcap-battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
cpcap-charger.c power: supply: cpcap-charger: Fix null check for power_supply_get_by_name 2025-08-15 12:13:50 +02:00
cros_charge-control.c power: supply: cros_charge-control: hide start threshold on v2 cmd 2025-01-02 10:34:23 +01:00
cros_peripheral_charger.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
cros_usbpd-charger.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
cw2015_battery.c power: supply: cw2015: Fix a alignment coding style issue 2025-10-15 11:59:59 +02:00
da9030_battery.c power: supply: da9030: Use devm_power_supply_register() helper 2024-01-27 01:23:40 +01:00
da9052-battery.c power: supply: da9052: Use devm_power_supply_register() helper 2024-01-27 01:23:40 +01:00
da9150-charger.c power: supply: da9150: Use devm_power_supply_register() helper 2024-01-27 01:25:05 +01:00
da9150-fg.c power: supply: da9150-fg: fix potential overflow 2025-02-27 04:30:19 -08:00
ds2760_battery.c power: supply: ds2760: Use devm_power_supply_register() helper 2024-01-27 01:23:40 +01:00
ds2780_battery.c power: supply: use sysfs_emit() instead of sprintf() for sysfs show() 2023-01-02 09:13:37 +01:00
ds2781_battery.c power: supply: use sysfs_emit() instead of sprintf() for sysfs show() 2023-01-02 09:13:37 +01:00
ds2782_battery.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
generic-adc-battery.c power: supply: generic-adc-battery: style fixes 2023-03-29 22:38:57 +02:00
goldfish_battery.c power: supply: goldfish: Use devm_power_supply_register() helper 2024-01-27 01:23:40 +01:00
gpio-charger.c power: supply: gpio-charger: Fix set charge current limits 2025-01-02 10:34:24 +01:00
ingenic-battery.c power: supply: ingenic: Fix some error handling paths in ingenic_battery_get_property() 2024-06-26 15:16:57 +02:00
ip5xxx_power.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
ipaq_micro_battery.c power: supply: ipaq_micro_battery: Convert to platform remove callback returning void 2023-09-18 20:08:02 +02:00
isp1704_charger.c power: supply: isp1704_charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
Kconfig power supply and reset changes for the 6.11 series 2024-07-23 09:38:27 -07:00
lego_ev3_battery.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
lenovo_yoga_c630_battery.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
lp8727_charger.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
lp8788-charger.c power: supply: lp8788: Use devm_power_supply_register() helper 2024-01-27 01:23:41 +01:00
lt3651-charger.c power: supply: ltc3651-charger: Fix device name (rename files) 2019-04-10 00:39:01 +02:00
ltc2941-battery-gauge.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
ltc4162-l-charger.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
Makefile power supply and reset changes for the 6.11 series 2024-07-23 09:38:27 -07:00
max1720x_battery.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
max1721x_battery.c power: supply: max1721x: Use strscpy() is more robust and safer 2023-02-03 13:58:41 +01:00
max8903_charger.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
max8925_power.c power: supply: max8925: Use devm_power_supply_register() helper 2024-02-01 22:48:54 +01:00
max8997_charger.c extcon: Fix extcon_get_extcon_dev() error handling 2022-05-13 17:03:40 +09:00
max8998_charger.c power: supply: max8998_charger: Fix module autoloading 2024-08-27 11:41:42 +02:00
max14577_charger.c power: supply: max14577: Handle NULL pdata when CONFIG_OF is not set 2025-08-15 12:13:50 +02:00
max14656_charger_detector.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
max17040_battery.c power: supply: max17040: adjust thermal channel scaling 2025-06-27 11:11:28 +01:00
max17042_battery.c power: supply: max17042_battery: Fix SOC threshold calc w/ no current sense 2024-08-27 18:37:38 +02:00
max77650-charger.c power: supply: max77650-charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
max77693_charger.c power: supply: max77693: Fix wrong conversion of charge input threshold value 2025-04-10 14:39:20 +02:00
max77976_charger.c power: supply: max77976_charger: fix constant current reporting 2025-10-19 16:33:52 +02:00
mm8013.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
mp2629_charger.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
mt6360_charger.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
mt6370-charger.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
olpc_battery.c power: supply: use sysfs_emit() instead of sprintf() for sysfs show() 2023-01-02 09:13:37 +01:00
pcf50633-charger.c power: supply: pcf50633: Use devm_power_supply_register() helper 2024-01-27 01:25:04 +01:00
pm8916_bms_vm.c power: supply: Add pm8916 VM-BMS support 2023-09-15 21:52:00 +02:00
pm8916_lbc.c power: supply: Add driver for pm8916 lbc 2023-09-15 21:52:00 +02:00
pmu_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
power_supply.h power: supply: move power_supply_attr_groups definition back to sysfs 2024-03-06 00:24:26 +01:00
power_supply_core.c power: supply: core: Remove might_sleep() from power_supply_put() 2024-12-05 14:02:29 +01:00
power_supply_hwmon.c power: supply: hwmon: Fix missing temp1_max_alarm attribute 2024-09-14 11:06:07 +02:00
power_supply_leds.c power: supply: leds: Add activate() callback to triggers 2024-06-03 01:29:43 +02:00
power_supply_sysfs.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
qcom_battmgr.c power: supply: qcom_battmgr: handle charging state change notifications 2025-11-13 15:34:06 -05:00
qcom_pmi8998_charger.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
qcom_smbb.c power: supply: qcom_smbb: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
rk817_charger.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
rn5t618_power.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
rt5033_battery.c power: supply: rt5033: Bring back i2c_set_clientdata 2024-06-05 23:38:31 +02:00
rt5033_charger.c power: supply: rt5033_charger: Replace "&pdev->dev" by "charger->dev" in probe 2023-10-04 22:27:34 +02:00
rt9455_charger.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
rt9467-charger.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
rt9471.c power: supply: rt9471: Use IC status regfield to report real charger status 2024-12-05 14:02:30 +01:00
rx51_battery.c power: supply: rx51: Use devm_power_supply_register() helper 2024-01-27 01:25:05 +01:00
samsung-sdi-battery.c power: supply: samsung-sdi-battery: Constify struct power_supply_maintenance_charge_table 2024-06-26 17:32:00 +02:00
samsung-sdi-battery.h power: supply: Static data for Samsung batteries 2022-03-04 22:20:18 +01:00
sbs-battery.c power: supply: sbs-battery: Make similar OF and ID table 2023-09-12 18:25:35 +02:00
sbs-charger.c power: supply: sbs-charger: Support multiple devices 2025-11-13 15:34:04 -05:00
sbs-manager.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
sc27xx_fuel_gauge.c power: supply: sc27xx: Fix external_power_changed race 2023-05-08 15:06:12 +02:00
sc2731_charger.c power: supply: sc2731_charger: Convert to platform remove callback returning void 2023-09-18 20:08:03 +02:00
smb347-charger.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
surface_battery.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
surface_charger.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
test_power.c power: supply: test-power: implement charge_behaviour property 2024-03-25 23:29:06 +01:00
tps65090-charger.c power: supply: tps65090: Use devm_power_supply_register() helper 2024-01-27 01:25:04 +01:00
tps65217_charger.c USB/Thunderbolt changes for 6.7-rc1 2023-11-03 16:00:42 -10:00
twl4030_charger.c power: supply: twl4030_charger: correct comparision with old current 2024-08-27 11:47:48 +02:00
twl4030_madc_battery.c power: supply: twl4030_madc: Use devm_power_supply_register() helper 2024-01-27 01:25:05 +01:00
ucs1002_power.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
ug3105_battery.c power: supply: Switch i2c drivers back to use .probe() 2023-06-04 22:33:22 +02:00
wilco-charger.c power: supply: wilco_ec: Add long life charging mode 2020-07-31 14:33:56 +02:00
wm97xx_battery.c power: supply: wm97xx_battery: Convert to platform remove callback returning void 2023-09-18 20:08:04 +02:00
wm831x_backup.c power: supply: wm831x: Use devm_power_supply_register() helper 2024-01-27 01:25:04 +01:00
wm831x_power.c power: supply: wm831x: Use devm_power_supply_register() helper 2024-01-27 01:25:04 +01:00
wm8350_power.c power: supply: wm8350: Use devm_power_supply_register() helper 2024-02-01 22:48:54 +01:00