diff options
author | Jonghwa Lee <jonghwa3.lee@samsung.com> | 2013-10-11 22:15:16 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-11-18 11:44:56 +0900 |
commit | 78003936ca7182239d85b8c06c9c9374e74eba29 (patch) | |
tree | 6d8f261b4388d0243761ea68ffcdc9b3cf692a04 /drivers/power | |
parent | cef9ca7cf597f64b0798ef1a31d24d54e7325e63 (diff) | |
download | linux-3.10-78003936ca7182239d85b8c06c9c9374e74eba29.tar.gz linux-3.10-78003936ca7182239d85b8c06c9c9374e74eba29.tar.bz2 linux-3.10-78003936ca7182239d85b8c06c9c9374e74eba29.zip |
charger: max77693: Fix initial charger configuration properly.
Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/max77693_charger.c | 51 |
1 files changed, 12 insertions, 39 deletions
diff --git a/drivers/power/max77693_charger.c b/drivers/power/max77693_charger.c index 71a009d5c94..87475e51381 100644 --- a/drivers/power/max77693_charger.c +++ b/drivers/power/max77693_charger.c @@ -310,66 +310,39 @@ unlock_finish: static void max77693_charger_reg_init(struct max77693_charger_data *chg_data) { struct regmap *rmap = chg_data->max77693->regmap; - u8 reg_data; /* * fast charge timer 10hrs * restart threshold disable * pre-qual charge enable(default) */ - reg_data = (0x04 << 0) | (0x03 << 4); - max77693_write_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_01, reg_data); + max77693_update_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_01, + MAX77693_FCHGTIME_10HRS | MAX77693_CHG_RSTRT_MASK, + MAX77693_FCHGTIME_MASK | MAX77693_CHG_RSTRT_MASK); /* * charge current 466mA(default) * otg current limit 900mA */ - reg_data = (1 << 7); - max77693_write_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_02, reg_data); - + max77693_update_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_02, + MAX77693_OTG_ILIM_MASK, MAX77693_OTG_ILIM_MASK); /* * top off current 100mA * top off timer 0min */ - reg_data = (0x00 << 0); /* 100mA */ - - reg_data |= (0x00 << 3); - max77693_write_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_03, reg_data); + max77693_update_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_03, + 0x0, MAX77693_CHG_TO_ITHM | MAX77693_CHG_TO_TIMEM); /* - * cv voltage 4.2V or 4.35V + * cv voltage 4.35V * MINVSYS 3.6V(default) */ - reg_data &= (~MAX77693_CHG_MINVSYS_MASK); - reg_data |= (MAX77693_CHG_MINVSYS_3_6V << MAX77693_CHG_MINVSYS_SHIFT); - reg_data &= (~MAX77693_CHG_CV_PRM_MASK); -#if defined(CONFIG_MACH_M0) - if ((system_rev != 3) && (system_rev >= 1)) - reg_data |= (MAX77693_CHG_CV_PRM_4_35V << 0); - else - reg_data |= (MAX77693_CHG_CV_PRM_4_20V << 0); -#else /* C1, C2, M3, T0, ... */ - reg_data |= (MAX77693_CHG_CV_PRM_4_35V << 0); -#endif - - /* - * For GC1 Model, MINVSYS is 3.4V. - * For GC1 Model PRMV( Primary Charge Regn. Voltage) = 4.2V. - * Actual expected regulated voltage needs to be 4.2V but due to - * internal resistance and circuit deviation we might have to set the - * benchmark a bit higher sometimes. (4.225V now) - */ -#if defined(CONFIG_MACH_GC1) - reg_data &= (~MAX77693_CHG_CV_PRM_MASK); - reg_data |= (0x17 << MAX77693_CHG_CV_PRM_SHIFT); - reg_data &= (~MAX77693_CHG_MINVSYS_MASK); - reg_data |= (0x4 << MAX77693_CHG_MINVSYS_SHIFT); -#endif - max77693_write_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_04, reg_data); + max77693_update_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_04, + MAX77693_CHG_CV_PRM_4_35V, MAX77693_CHG_MINVSYS_MASK); /* VBYPSET 5V */ - reg_data = 0x50; - max77693_write_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_11, reg_data); + max77693_write_reg(rmap, MAX77693_CHG_REG_CHG_CNFG_11, + MAX77693_CHG_VBYPSET_5V); } /* Support property from charger */ |