summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorJonghwa Lee <jonghwa3.lee@samsung.com>2013-10-11 22:15:16 +0900
committerChanho Park <chanho61.park@samsung.com>2014-11-18 11:44:56 +0900
commit78003936ca7182239d85b8c06c9c9374e74eba29 (patch)
tree6d8f261b4388d0243761ea68ffcdc9b3cf692a04 /drivers/power
parentcef9ca7cf597f64b0798ef1a31d24d54e7325e63 (diff)
downloadlinux-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.c51
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 */