android_kernel_asus_sm8350/drivers/power/supply
Mario Limonciello b31586747b power: supply: Fix logic checking if system is running from battery
[ Upstream commit 95339f40a8b652b5b1773def31e63fc53c26378a ]

The logic used for power_supply_is_system_supplied() counts all power
supplies and assumes that the system is running from AC if there is
either a non-battery power-supply reporting to be online or if no
power-supplies exist at all.

The second rule is for desktop systems, that don't have any
battery/charger devices. These systems will incorrectly report to be
powered from battery once a device scope power-supply is registered
(e.g. a HID device), since these power-supplies increase the counter.

Apart from HID devices, recent dGPUs provide UCSI power supplies on a
desktop systems. The dGPU by default doesn't have anything plugged in so
it's 'offline'. This makes power_supply_is_system_supplied() return 0
with a count of 1 meaning all drivers that use this get a wrong judgement.

To fix this case adjust the logic to also examine the scope of the power
supply. If the power supply is deemed a device power supply, then don't
count it.

Cc: Evan Quan <Evan.Quan@amd.com>
Suggested-by: Lijo Lazar <Lijo.Lazar@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-06-21 15:44:09 +02:00
..
88pm860x_battery.c power: supply: check if calc_soc succeeded in pm860x_init_battery 2020-08-19 08:16:16 +02:00
88pm860x_charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ab8500_bmdata.c
ab8500_btemp.c power: supply: ab8500: Fix external_power_changed race 2023-06-21 15:44:08 +02:00
ab8500_charger.c power: supply: ab8500: add missing MODULE_DEVICE_TABLE 2021-07-20 16:10:48 +02:00
ab8500_fg.c power: supply: ab8500: Fix external_power_changed race 2023-06-21 15:44:08 +02:00
abx500_chargalg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 197 2019-05-30 11:29:22 -07:00
act8945a_charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
adp5061.c power: supply: adp5061: fix out-of-bounds read in adp5061_get_chg_type() 2022-10-26 13:22:56 +02:00
apm_power.c
axp20x_ac_power.c power: supply: axp20x_ac_power: Fix reporting online status 2020-02-11 04:35:24 -08:00
axp20x_battery.c power: supply: axp20x_battery: properly report current when discharging 2022-04-15 14:18:32 +02:00
axp20x_usb_power.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
axp288_charger.c power: supply: axp288-charger: Set Vhold to 4.4V 2022-04-15 14:18:33 +02:00
axp288_fuel_gauge.c power: supply: axp288_fuel_gauge: Report register-address on readb / writeb errors 2021-09-15 09:47:26 +02:00
bd70528-charger.c power: supply: bd70528: Add MODULE_ALIAS to allow module auto loading 2020-01-26 10:01:05 +01:00
bq27xxx_battery_hdq.c
bq27xxx_battery_i2c.c power: supply: bq27xxx: Fix I2C IRQ race on remove 2023-05-30 12:44:10 +01:00
bq27xxx_battery.c power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule() 2023-06-21 15:44:09 +02:00
bq2415x_charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
bq24190_charger.c power: supply: bq24190: Call power_supply_changed() after updating input current 2023-06-05 08:17:32 +02:00
bq24257_charger.c power supply and reset changes for the v5.3 series 2019-07-15 21:06:15 -07:00
bq24735-charger.c
bq25890_charger.c power: bq25890: Enable continuous conversion for ADC at charging 2022-01-27 09:19:49 +01:00
charger-manager.c power: supply: charger-manager: add missing MODULE_DEVICE_TABLE 2021-07-20 16:10:48 +02:00
collie_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpcap-battery.c power: supply: cpcap-battery: Check voltage before orderly_poweroff 2019-12-31 16:44:12 +01:00
cpcap-charger.c power: supply: cpcap-charger: Enable vbus boost voltage 2019-09-02 23:08:07 +02:00
cros_usbpd-charger.c power: supply: cros_usbpd: reclassify "default case!" as debug 2023-04-20 12:07:36 +02:00
da9030_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
da9052-battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
da9150-charger.c power: supply: da9150: Fix use after free bug in da9150_charger_remove due to race condition 2023-04-05 11:16:36 +02:00
da9150-fg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
ds2760_battery.c
ds2780_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ds2781_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ds2782_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
generic-adc-battery.c power: supply: generic-adc-battery: fix unit scaling 2023-05-17 11:35:51 +02:00
goldfish_battery.c
gpio-charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 151 2019-05-30 11:26:28 -07:00
ingenic-battery.c power/supply: ingenic-battery: Don't change scale if there's only one 2020-02-01 09:34:53 +00:00
ipaq_micro_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
isp1704_charger.c power: supply: isp1704: remove redundant assignment to variable ret 2019-09-02 21:12:45 +02:00
Kconfig power: supply: rt5033_battery: Fix device tree enumeration 2021-07-20 16:10:49 +02:00
lego_ev3_battery.c
lp8727_charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
lp8788-charger.c power: supply: Use IRQF_ONESHOT 2021-05-11 14:04:09 +02:00
lt3651-charger.c
ltc2941-battery-gauge.c power: supply: ltc2941-battery-gauge: fix use-after-free 2020-02-11 04:35:24 -08:00
Makefile power/supply: Drop obsolete JZ4740 driver 2019-07-30 10:41:54 -07:00
max1721x_battery.c
max8903_charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
max8925_power.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
max8997_charger.c
max8998_charger.c
max14577_charger.c
max14656_charger_detector.c power supply and reset changes for the v5.3 series 2019-07-15 21:06:15 -07:00
max17040_battery.c power: supply: max17040: Correct voltage reading 2020-10-01 13:17:59 +02:00
max17042_battery.c power: supply: max17042_battery: use VFSOC for capacity when no rsns 2021-11-17 09:48:24 +01:00
max77650-charger.c power: supply: max77650: add MODULE_ALIAS() 2019-09-02 21:15:45 +02:00
max77693_charger.c
olpc_battery.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
pcf50633-charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
pda_power.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
pm2301_charger.c power: supply: Use IRQF_ONESHOT 2021-05-11 14:04:09 +02:00
pm2301_charger.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
pmu_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
power_supply_core.c power: supply: Fix logic checking if system is running from battery 2023-06-21 15:44:09 +02:00
power_supply_hwmon.c power: supply: core: fix memory leak in HWMON error path 2020-06-22 09:31:20 +02:00
power_supply_leds.c power: supply: leds: Fix blink to LED on transition 2023-05-30 12:44:10 +01:00
power_supply_sysfs.c power: supply: Ratelimit no data debug output 2023-06-21 15:44:09 +02:00
power_supply.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 218 2019-05-30 11:29:54 -07:00
qcom_smbb.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
rt5033_battery.c power: supply: rt5033_battery: Change voltage values to µV 2021-11-17 09:48:42 +01:00
rt9455_charger.c power supply and reset changes for the v5.3 series 2019-07-15 21:06:15 -07:00
rx51_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
s3c_adc_battery.c power: supply: s3c_adc_battery: fix possible use-after-free in s3c_adc_bat_remove() 2021-05-11 14:04:11 +02:00
sbs-battery.c power: supply: sbs-battery: only return health when battery present 2019-09-02 10:06:31 +02:00
sbs-charger.c power: supply: sbs-charger: Fix INHIBITED bit for Status reg 2023-05-30 12:44:10 +01:00
sbs-manager.c power supply and reset changes for the v5.3 series 2019-07-15 21:06:15 -07:00
sc27xx_fuel_gauge.c power: supply: sc27xx: Fix external_power_changed race 2023-06-21 15:44:09 +02:00
sc2731_charger.c power: supply: sc2731_charger: Add missing MODULE_DEVICE_TABLE 2021-07-20 16:10:46 +02:00
smb347-charger.c power: supply: smb347-charger: IRQSTAT_D is volatile 2020-06-24 17:50:25 +02:00
test_power.c power: supply: test_power: add missing newlines when printing parameters by sysfs 2020-11-05 11:43:19 +01:00
tosa_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
tps65090-charger.c power: supply: Use IRQF_ONESHOT 2021-05-11 14:04:09 +02:00
tps65217_charger.c power: supply: Use IRQF_ONESHOT 2021-05-11 14:04:09 +02:00
twl4030_charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
twl4030_madc_battery.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
ucs1002_power.c power: supply: fix semicolon.cocci warnings 2019-06-26 21:56:52 +02:00
wilco-charger.c power_supply: wilco_ec: Add charging config driver 2019-07-05 00:54:36 +02:00
wm97xx_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
wm831x_backup.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
wm831x_power.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
wm8350_power.c power: supply: wm8350-power: Add missing free in free_charger_irq 2022-04-15 14:18:15 +02:00
z2_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00