linux/drivers/power/supply
Tony Lindgren d4ee021c41 power: supply: cpcap-charger: Limit voltage to 4.2V for battery
There have been some cases of droid4 battery bulging that seem to be
related to being left connected to the charger for several weeks.

It is suspected that the 4.35V charge voltage configured for the battery
is too much in the long run, so lets limit the charge voltage to 4.2V.
It could also be that the batteries are just getting old.

We don't really want to just change the charge voltage to 4.2V as Android
may have charged the battery to 4.35V as pointed out by Pavel Machek.

To add checks for battery voltage, the driver needs to understand the
voltage it's charging at, and also needs to better understand it's
charger state. Right now it only understands connect and disconnect,
while now we need to know also a connected state but not charging.

So let's add better charger state handling with help of chrgcurr2 interrupt
for detecting charge full and retry, and add a check for battery voltage
before we start charging. And then we finally can lower the charge voltage
to 4.2V.

Note that we've been using the same register values as the Android distros
on droid4, so it is suspected that the same problem also exists in Android.

Cc: Pavel Machek <pavel@ucw.cz>
Cc: Rob Herring <robh+dt@kernel.org>
Reported-by: Merlijn Wajer <merlijn@wizzup.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2019-10-20 19:10:39 +02:00
..
88pm860x_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +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 power: supply: ab8500: fix leaked of_node refs in ab8500_bm_of_probe 2019-04-17 22:14:24 +02:00
ab8500_btemp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 197 2019-05-30 11:29:22 -07:00
ab8500_charger.c power: supply: ab8500: remove set but not used variables 'vbup33_vrtcn' and 'bup_vch_range' 2019-09-02 21:04:50 +02:00
ab8500_fg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 197 2019-05-30 11:29:22 -07: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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
apm_power.c
axp20x_ac_power.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
axp20x_battery.c power: supply: axp20x_battery: add support for AXP813 2018-03-09 16:52:33 +01: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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
axp288_fuel_gauge.c power: supply: axp288_fuel_gauge: Add Minix Neo Z83-4 to the blacklist 2019-09-01 21:44:15 +02:00
bd70528-charger.c power: supply: Initial support for ROHM BD70528 PMIC charger block 2019-06-27 10:57:24 +01:00
bq27xxx_battery.c power: supply: bq27xxx_battery: Notify also about status changes 2019-05-02 00:27:29 +02:00
bq27xxx_battery_hdq.c power: supply: bq27xxx: move platform driver code into bq27xxx_battery_hdq.c 2017-07-25 15:31:21 +02:00
bq27xxx_battery_i2c.c power: supply: bq27xxx: Add support for BQ27411 2018-09-20 11:35:40 +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 and reset changes for the v5.3 series 2019-07-15 21:06:15 -07: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 power: supply: bq24735: remove incorrect le16_to_cpu calls 2017-06-15 16:47:35 +02:00
bq25890_charger.c power: supply: bq25890_charger: Add the BQ25895 part 2019-09-02 21:12:08 +02:00
charger-manager.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +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: Fix pointless EPROBE_DEFER warnings 2019-04-15 22:53:50 +02:00
cpcap-charger.c power: supply: cpcap-charger: Limit voltage to 4.2V for battery 2019-10-20 19:10:39 +02:00
cros_usbpd-charger.c mfd / platform: cros_ec: Reorganize platform and mfd includes 2019-09-02 11:33:42 +01: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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
da9150-fg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
ds2760_battery.c power: supply: ds2760_battery: add devicetree probing 2018-07-11 18:09:09 +02:00
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: generic-adc-battery: check for duplicate properties copied from iio channels 2018-07-06 18:58:44 +02:00
goldfish_battery.c drivers: power: supply: goldfish_battery: Fix bogus SPDX identifier 2019-04-15 11:16:31 +02:00
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: add Ingenic JZ47xx battery driver. 2019-04-18 21:35:49 +02: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 Main MIPS changes for v5.4: 2019-09-22 09:30:30 -07:00
lego_ev3_battery.c power: supply: lego_ev3_battery: fix Vce offset 2018-07-22 23:33:43 +02:00
lp8727_charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
lp8788-charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02: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 treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
Makefile power/supply: Drop obsolete JZ4740 driver 2019-07-30 10:41:54 -07:00
max1721x_battery.c power: supply: max1721x: fix spelling mistake "RSenese" -> "RSense" 2018-06-28 14:24:13 +02:00
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 power: supply: maxim: Add SPDX license identifiers 2018-08-30 00:18:10 +02:00
max8998_charger.c power: supply: max8998-charger: Fix platform data retrieval 2018-09-16 13:46:39 +02:00
max14577_charger.c power: supply: maxim: Add SPDX license identifiers 2018-08-30 00:18:10 +02:00
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_battery: simplify getting the adapter of a client 2019-06-23 18:02:53 +02:00
max17042_battery.c power: supply: max17042_battery: Fix a typo in function names 2019-09-02 21:02:43 +02:00
max77650-charger.c power: supply: max77650: add MODULE_ALIAS() 2019-09-02 21:15:45 +02:00
max77693_charger.c power: supply: maxim: Add SPDX license identifiers 2018-08-30 00:18:10 +02:00
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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +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.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 218 2019-05-30 11:29:54 -07:00
power_supply_core.c power: supply: Init device wakeup after device_add() 2019-09-02 10:06:31 +02:00
power_supply_hwmon.c power: supply: register HWMON devices with valid names 2019-09-01 21:43:04 +02:00
power_supply_leds.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 218 2019-05-30 11:29:54 -07:00
power_supply_sysfs.c power supply and reset changes for the v5.3 series 2019-07-15 21:06:15 -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 and reset changes for the v5.3 series 2019-07-15 21:06:15 -07: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 driver data initialization 2018-04-26 00:12: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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07: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: Add POWER_SUPPLY_PROP_CALIBRATE attribute 2019-09-02 23:00:20 +02:00
sc2731_charger.c power: supply: sc2731_charger: Free battery information 2018-12-05 23:54:01 +01:00
smb347-charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
test_power.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
tosa_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
tps65090-charger.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
tps65217_charger.c power: supply: tps65217: Switch to SPDX identifier. 2018-06-28 14:19:20 +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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
z2_battery.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00