summaryrefslogtreecommitdiff
path: root/patches.tizen/0864-charger-max77693-Fix-initial-charger-configuration-p.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches.tizen/0864-charger-max77693-Fix-initial-charger-configuration-p.patch')
-rw-r--r--patches.tizen/0864-charger-max77693-Fix-initial-charger-configuration-p.patch150
1 files changed, 150 insertions, 0 deletions
diff --git a/patches.tizen/0864-charger-max77693-Fix-initial-charger-configuration-p.patch b/patches.tizen/0864-charger-max77693-Fix-initial-charger-configuration-p.patch
new file mode 100644
index 00000000000..0eb7f6ea8e7
--- /dev/null
+++ b/patches.tizen/0864-charger-max77693-Fix-initial-charger-configuration-p.patch
@@ -0,0 +1,150 @@
+From 42d9e9a68946c4e28a8ec744b8a82f3761bb0101 Mon Sep 17 00:00:00 2001
+From: Jonghwa Lee <jonghwa3.lee@samsung.com>
+Date: Fri, 11 Oct 2013 22:15:16 +0900
+Subject: [PATCH 0864/1302] charger: max77693: Fix initial charger
+ configuration properly.
+
+Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
+Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
+---
+ drivers/power/max77693_charger.c | 51 ++++++++--------------------------
+ include/linux/power/max77693_charger.h | 27 ++++++++++++------
+ 2 files changed, 31 insertions(+), 47 deletions(-)
+
+diff --git a/drivers/power/max77693_charger.c b/drivers/power/max77693_charger.c
+index 71a009d..87475e5 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 */
+diff --git a/include/linux/power/max77693_charger.h b/include/linux/power/max77693_charger.h
+index 6f2b677..baaf20a 100644
+--- a/include/linux/power/max77693_charger.h
++++ b/include/linux/power/max77693_charger.h
+@@ -112,20 +112,28 @@
+ #define MAX77693_MODE_OTG 0x02
+ #define MAX77693_MODE_BUCK 0x04
+
++/* MAX77693_CHG_REG_CHG_CNFG_0i */
++#define MAX77693_FCHGTIME_MASK 0x7
++#define MAX77693_FCHGTIME_4HRS 0x1
++#define MAX77693_FCHGTIME_10HRS 0x4
++#define MAX77693_CHG_RSTRT_MASK 0x30
++
+ /* MAX77693_CHG_REG_CHG_CNFG_02 */
+ #define MAX77693_CHG_CC 0x3F
++#define MAX77693_OTG_ILIM_MASK 0x80
+
+ /* MAX77693_CHG_REG_CHG_CNFG_03 */
+-#define MAX77693_CHG_TO_ITH 0x07
++#define MAX77693_CHG_TO_ITHM 0x07
++#define MAX77693_CHG_TO_TIMEM 0x38
+
+ /* MAX77693_CHG_REG_CHG_CNFG_04 */
+-#define MAX77693_CHG_MINVSYS_MASK 0xE0
+-#define MAX77693_CHG_MINVSYS_SHIFT 5
+-#define MAX77693_CHG_PRM_MASK 0x1F
+-#define MAX77693_CHG_PRM_SHIFT 0
+-#define MAX77693_CHG_CV_PRM_4_20V 0x16
+-#define MAX77693_CHG_CV_PRM_4_35V 0x1D
+-#define MAX77693_CHG_CV_PRM_4_40V 0x1F
++#define MAX77693_CHG_MINVSYS_MASK 0xE0
++#define MAX77693_CHG_MINVSYS_SHIFT 5
++#define MAX77693_CHG_MINVSYS_3_6V 0x6
++#define MAX77693_CHG_CV_PRM_MASK 0x1F
++#define MAX77693_CHG_CV_PRM_4_20V 0x16
++#define MAX77693_CHG_CV_PRM_4_35V 0x1D
++#define MAX77693_CHG_CV_PRM_4_40V 0x1F
+
+ /* MAX77693_CHG_REG_CHG_CNFG_06 */
+ #define MAX77693_CHG_CHGPROT 0x0C
+@@ -135,6 +143,9 @@
+ /* MAX77693_CHG_REG_CHG_CNFG_09 */
+ #define MAX77693_CHG_CHGIN_LIM 0x7F
+
++/* MAX77693_CHG_REG_CHG_CNFG_11 */
++#define MAX77693_CHG_VBYPSET_5V 0x50
++
+ /* MAX77693_CHG_REG_CHG_CNFG_12 */
+ #define MAX77693_CHG_WCINSEL 0x40
+
+--
+1.8.3.2
+