From 22cd8335937ac27a9657da4daa67a0a265bd2ce8 Mon Sep 17 00:00:00 2001 From: Gregory Hermant Date: Mon, 9 Jan 2012 16:05:16 +0100 Subject: Add support for the 9100 Li-ION battery and adjust the bkup battery charger parameters Signed-off-by: Gregory Hermant --- arch/arm/mach-ux500/board-mop500-bm.c | 23 +++++++++++++++++++++++ drivers/power/Kconfig | 6 ++++++ drivers/power/ab8500_charger.c | 18 +++++++++++++----- 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 #include #include +#include /* 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; -- cgit v1.2.3