summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Hermant <gregory.hermant@calao-systems.com>2012-01-09 16:05:16 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-02-02 08:48:13 +0100
commit22cd8335937ac27a9657da4daa67a0a265bd2ce8 (patch)
tree25b8ae14a0ce9ebf6702077cb7b5006bfedaa57d
parent9a3cf219779aac3da8f11e4415bbe364e56df5f2 (diff)
Add support for the 9100 Li-ION battery and adjust the bkup battery charger parameters
Signed-off-by: Gregory Hermant <gregory.hermant@calao-systems.com>
-rw-r--r--arch/arm/mach-ux500/board-mop500-bm.c23
-rw-r--r--drivers/power/Kconfig6
-rw-r--r--drivers/power/ab8500_charger.c18
3 files changed, 42 insertions, 5 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-bm.c b/arch/arm/mach-ux500/board-mop500-bm.c
index 91fb887d4f5..44f7968f420 100644
--- a/arch/arm/mach-ux500/board-mop500-bm.c
+++ b/arch/arm/mach-ux500/board-mop500-bm.c
@@ -155,14 +155,29 @@ static const struct battery_type bat_type[] = {
.name = POWER_SUPPLY_TECHNOLOGY_UNKNOWN,
.resis_high = 0,
.resis_low = 0,
+#ifdef CONFIG_AB8500_9100_LI_ION_BATTERY
+ .battery_resistance = 180,
+ .charge_full_design = 2600,
+#else
.battery_resistance = 300,
.charge_full_design = 612,
+#endif
.nominal_voltage = 3700,
+#ifdef CONFIG_AB8500_9100_LI_ION_BATTERY
+ .termination_vol = 4150,
+#else
.termination_vol = 4050,
+#endif
.termination_curr = 200,
+#ifdef CONFIG_AB8500_9100_LI_ION_BATTERY
+ .recharge_vol = 4130,
+ .normal_cur_lvl = 520,
+ .normal_vol_lvl = 4200,
+#else
.recharge_vol = 3990,
.normal_cur_lvl = 400,
.normal_vol_lvl = 4100,
+#endif
.maint_a_cur_lvl = 400,
.maint_a_vol_lvl = 4050,
.maint_a_chg_timer_h = 60,
@@ -399,13 +414,21 @@ struct ab8500_bm_data ab8500_bm_data = {
.usb_safety_tmr_h = 4,
.bkup_bat_v = BUP_VCH_SEL_2P6V,
.bkup_bat_i = BUP_ICH_SEL_150UA,
+#ifdef CONFIG_AB8500_9100_LI_ION_BATTERY
+ .no_maintenance = true,
+#else
.no_maintenance = false,
+#endif
#ifdef CONFIG_AB8500_BATTERY_THERM_ON_BATCTRL
.adc_therm = ADC_THERM_BATCTRL,
#else
.adc_therm = ADC_THERM_BATTEMP,
#endif
+#ifdef CONFIG_AB8500_9100_LI_ION_BATTERY
+ .chg_unknown_bat = true,
+#else
.chg_unknown_bat = false,
+#endif
.enable_overshoot = false,
.fg_res = 10,
.cap_levels = &cap_levels,
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 2e32409a342..1048ae20be5 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -249,6 +249,12 @@ config AB8500_BATTERY_THERM_ON_BATCTRL
Say Y to enable battery temperature measurements using
thermistor connected on BATCTRL ADC.
+config AB8500_9100_LI_ION_BATTERY
+ bool "Enable support of the 9100 Li-ion battery charging"
+ depends on AB8500_BM
+ help
+ Say Y to enable support of the 9100 Li-ion battery charging.
+
config AB5500_BM
bool "AB5500 Battery Management Driver"
depends on AB5500_CORE && AB5500_GPADC && MACH_U5500
diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index 1b827a980ce..a68fabcb563 100644
--- a/drivers/power/ab8500_charger.c
+++ b/drivers/power/ab8500_charger.c
@@ -28,6 +28,7 @@
#include <linux/mfd/ab8500/gpadc.h>
#include <linux/mfd/ab8500/ux500_chargalg.h>
#include <linux/usb/otg.h>
+#include <asm/mach-types.h>
/* Charger constants */
#define NO_PW_CONN 0
@@ -2261,11 +2262,18 @@ static int ab8500_charger_init_hw_registers(struct ab8500_charger *di)
}
/* Backup battery voltage and current */
- ret = abx500_set_register_interruptible(di->dev,
- AB8500_RTC,
- AB8500_RTC_BACKUP_CHG_REG,
- di->bat->bkup_bat_v |
- di->bat->bkup_bat_i);
+ if (machine_is_snowball())
+ ret = abx500_set_register_interruptible(di->dev,
+ AB8500_RTC,
+ AB8500_RTC_BACKUP_CHG_REG,
+ BUP_VCH_SEL_3P1V |
+ BUP_ICH_SEL_150UA);
+ else
+ ret = abx500_set_register_interruptible(di->dev,
+ AB8500_RTC,
+ AB8500_RTC_BACKUP_CHG_REG,
+ di->bat->bkup_bat_v |
+ di->bat->bkup_bat_i);
if (ret) {
dev_err(di->dev, "failed to setup backup battery charging\n");
goto out;