]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
power: supply: cpcap-charger: Fix charge voltage configuration
authorTony Lindgren <tony@atomide.com>
Thu, 4 May 2017 00:15:30 +0000 (17:15 -0700)
committerSebastian Reichel <sre@kernel.org>
Thu, 4 May 2017 15:51:44 +0000 (17:51 +0200)
We have the charge voltage wrong, it should be 4.35V instead of 4.2V.
This will cause the battery to never get fully charged.

I noticed this when looking at the Andoid kernel battery and charger
status for a fully charged battery:

POWER_SUPPLY_VOLTAGE_NOW=4351000

Also the battery on droid 4 says "4.35, 1735/1785mAh (min/typ),
6.6/6.8 Wh (min/typ)". Presumably the 4.35 on the battery is the
charge voltage.

And finally, on Android the CPCAP CRM register is set to 0x03b5 where
the b is the charge voltage.

Let's fix the charge voltage define and update the charge configuration
to use the 4.35V setting.

Fixes: 0c9888e3c192 ("power: supply: cpcap-charger: Add minimal
CPCAP PMIC battery charger")
Cc: Marcel Partap <mpartap@gmx.net>
Cc: Michael Scott <michael.scott@linaro.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
drivers/power/supply/cpcap-charger.c

index 17907fcaebc37fe961d2ed8c3c876892be407b65..33ca1174070b7558905192bd96192ef79fd9488a 100644 (file)
@@ -76,7 +76,7 @@
 #define CPCAP_REG_CRM_VCHRG_4V30       CPCAP_REG_CRM_VCHRG(0x8)
 #define CPCAP_REG_CRM_VCHRG_4V32       CPCAP_REG_CRM_VCHRG(0x9)
 #define CPCAP_REG_CRM_VCHRG_4V34       CPCAP_REG_CRM_VCHRG(0xa)
-#define CPCAP_REG_CRM_VCHRG_4V36       CPCAP_REG_CRM_VCHRG(0xb)
+#define CPCAP_REG_CRM_VCHRG_4V35       CPCAP_REG_CRM_VCHRG(0xb)
 #define CPCAP_REG_CRM_VCHRG_4V38       CPCAP_REG_CRM_VCHRG(0xc)
 #define CPCAP_REG_CRM_VCHRG_4V40       CPCAP_REG_CRM_VCHRG(0xd)
 #define CPCAP_REG_CRM_VCHRG_4V42       CPCAP_REG_CRM_VCHRG(0xe)
@@ -433,7 +433,7 @@ static void cpcap_usb_detect(struct work_struct *work)
                        max_current = CPCAP_REG_CRM_ICHRG_0A528;
 
                error = cpcap_charger_set_state(ddata,
-                                               CPCAP_REG_CRM_VCHRG_4V20,
+                                               CPCAP_REG_CRM_VCHRG_4V35,
                                                max_current,
                                                CPCAP_REG_CRM_TR_0A72);
                if (error)