summaryrefslogtreecommitdiff
path: root/driver/charger/rt946x.h
diff options
context:
space:
mode:
authorYilun Lin <yllin@google.com>2018-06-14 10:44:56 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-06-19 03:48:58 -0700
commit50bc394d5952021b170ac15260d2ff8e278ec1ed (patch)
treee1f7f56148913af33a05752311af77e7d83843c2 /driver/charger/rt946x.h
parent2d781661db85cf66020c340a52f627a025a43060 (diff)
downloadchrome-ec-50bc394d5952021b170ac15260d2ff8e278ec1ed.tar.gz
charger/mt6370: add Mediatek mt6370 charger driver.
BRANCH=none BUG=b:80160408 TEST=1) add MT6370 config to kukui and build the code 2) hook up mt6370 eval board with dummy load 3) verify the i2c traffic: set voltage, set current, and get device id Change-Id: I47461530f9cc490a9dc2da74eede1297ebc4443e Signed-off-by: Yilun Lin <yllin@google.com> Reviewed-on: https://chromium-review.googlesource.com/1100365 Commit-Ready: Yilun Lin <yllin@chromium.org> Tested-by: Yilun Lin <yllin@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Diffstat (limited to 'driver/charger/rt946x.h')
-rw-r--r--driver/charger/rt946x.h105
1 files changed, 99 insertions, 6 deletions
diff --git a/driver/charger/rt946x.h b/driver/charger/rt946x.h
index 208a8e80fe..9ff4eaad10 100644
--- a/driver/charger/rt946x.h
+++ b/driver/charger/rt946x.h
@@ -2,7 +2,7 @@
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
- * Richtek rt9466/rt9467 battery charger driver.
+ * Richtek rt9466/rt9467, Mediatek mt6370 battery charger driver.
*/
#ifndef __CROS_EC_RT946X_H
@@ -21,8 +21,10 @@
#define INPUT_I_MIN 100
#define INPUT_I_STEP 50
-/* Registers */
+/* Registers for rt9466, rt9467 */
+#if defined(CONFIG_CHARGER_RT9466) || defined(CONFIG_CHARGER_RT9467)
#define RT946X_REG_CORECTRL0 0x00
+#define RT946X_REG_CORECTRL_RST RT946X_REG_CORECTRL0
#define RT946X_REG_CHGCTRL1 0x01
#define RT946X_REG_CHGCTRL2 0x02
#define RT946X_REG_CHGCTRL3 0x03
@@ -84,6 +86,66 @@
#define RT946X_REG_DPDMIRQCTRL 0x66
#endif
+#elif defined(CONFIG_CHARGER_MT6370)
+/* Registers for mt6370 */
+#define RT946X_REG_DEVICEID 0x00
+#define RT946X_REG_CORECTRL1 0x01
+#define RT946X_REG_CORECTRL2 0x02
+#define RT946X_REG_CORECTRL_RST RT946X_REG_CORECTRL2
+#define RT946X_REG_CHGCTRL1 0x11
+#define RT946X_REG_CHGCTRL2 0x12
+#define RT946X_REG_CHGCTRL3 0x13
+#define RT946X_REG_CHGCTRL4 0x14
+#define RT946X_REG_CHGCTRL5 0x15
+#define RT946X_REG_CHGCTRL6 0x16
+#define RT946X_REG_CHGCTRL7 0x17
+#define RT946X_REG_CHGCTRL8 0x18
+#define RT946X_REG_CHGCTRL9 0x19
+#define RT946X_REG_CHGCTRL10 0x1A
+#define RT946X_REG_CHGCTRL11 0x1B
+#define RT946X_REG_CHGCTRL12 0x1C
+#define RT946X_REG_CHGCTRL13 0x1D
+#define RT946X_REG_CHGCTRL14 0x1E
+#define RT946X_REG_CHGCTRL15 0x1F
+#define RT946X_REG_CHGCTRL16 0x20
+#define RT946X_REG_CHGADC 0x21
+#define MT6370_REG_DEVICETYPE 0x22
+#define RT946X_REG_DPDM1 MT6370_REG_DEVICETYPE
+#define MT6370_REG_USBSTATUS1 0x27
+#define RT946X_REG_CHGCTRL17 0X2B
+#define RT946X_REG_CHGCTRL18 0X2C
+#define RT946X_REG_CHGSTAT 0X4A
+#define RT946X_REG_CHGNTC 0X4B
+#define RT946X_REG_ADCDATAH 0X4C
+#define RT946X_REG_ADCDATAL 0X4D
+#define RT946X_REG_DPDMIRQ 0xC6
+/* status event */
+#define MT6370_REG_CHGSTAT1 0xD0
+#define RT946X_REG_CHGSTATC MT6370_REG_CHGSTAT1
+#define MT6370_REG_CHGSTAT2 0xD1
+#define RT946X_REG_CHGFAULT MT6370_REG_CHGSTAT2
+#define MT6370_REG_CHGSTAT3 0xD2
+#define MT6370_REG_CHGSTAT4 0xD3
+#define MT6370_REG_CHGSTAT5 0xD4
+#define MT6370_REG_CHGSTAT6 0xD5
+#define MT6370_REG_DPDMSTAT 0xD6
+#define MT6370_REG_DICHGSTAT 0xD7
+#define MT6370_REG_OVPCTRLSTAT 0xD8
+/* irq mask */
+#define MT6370_REG_CHGMASK1 0xE0
+#define RT946X_REG_CHGSTATCCTRL MT6370_REG_CHGMASK1
+#define MT6370_REG_CHGMASK2 0xE1
+#define MT6370_REG_CHGMASK3 0xE2
+#define MT6370_REG_CHGMASK4 0xE3
+#define MT6370_REG_CHGMASK5 0xE4
+#define MT6370_REG_CHGMASK6 0xE5
+#define MT6370_REG_DPDMMASK1 0xE6
+#define MT6370_REG_DICHGMASK 0xE7
+#define MT6370_REG_OVPCTRLMASK 0xE8
+#else
+#error "No suitable charger option defined"
+#endif
+
/* EOC current */
#define RT946X_IEOC_MIN 100
#define RT946X_IEOC_MAX 850
@@ -227,7 +289,7 @@
#define RT946X_MASK_ADC_IN_SEL (0xF << RT946X_SHIFT_ADC_IN_SEL)
#define RT946X_MASK_ADC_START (1 << RT946X_SHIFT_ADC_START)
-/* ========== CHGDPDM1 0x12 ============ */
+/* ========== CHGDPDM1 0x12 (rt946x) DEVICETYPE 0x22 (mt6370) ============ */
#define RT946X_SHIFT_USBCHGEN 7
#define RT946X_SHIFT_DCP 2
#define RT946X_SHIFT_CDP 1
@@ -242,6 +304,18 @@
RT946X_MASK_CDP | \
RT946X_MASK_SDP)
+/* ========== USBSTATUS1 0x27 (mt6370) ============ */
+#define MT6370_SHIFT_USB_STATUS 4
+
+#define MT6370_MASK_USB_STATUS 0x70
+
+#define MT6370_CHG_TYPE_NOVBUS 0
+#define MT6370_CHG_TYPE_BUSY 1
+#define MT6370_CHG_TYPE_SDP 2
+#define MT6370_CHG_TYPE_SDPNSTD 3
+#define MT6370_CHG_TYPE_DCP 4
+#define MT6370_CHG_TYPE_CDP 5
+
/* ========== CHGCTRL18 0x1A ============ */
#define RT946X_SHIFT_IRCMP_RES 3
#define RT946X_SHIFT_IRCMP_VCLAMP 0
@@ -265,12 +339,13 @@
#define RT946X_MASK_BATNTC_FAULT 0x70
-/* ========== CHGSTATC 0x50 ============ */
+/* ========== CHGSTATC 0x50 (rt946x) ============ */
#define RT946X_SHIFT_PWR_RDY 7
#define RT946X_MASK_PWR_RDY (1 << RT946X_SHIFT_PWR_RDY)
-/* ========== CHGFAULT 0x51 ============ */
+/* ========== CHGFAULT 0x51 (rt946x) ============ */
+#if defined(CONFIG_CHARGER_RT9466) || defined(CONFIG_CHARGER_RT9467)
#define RT946X_SHIFT_CHG_VSYSUV 4
#define RT946X_SHIFT_CHG_VSYSOV 5
#define RT946X_SHIFT_CHG_VBATOV 6
@@ -280,9 +355,10 @@
#define RT946X_MASK_CHG_VSYSOV (1 << RT946X_SHIFT_CHG_VSYSOV)
#define RT946X_MASK_CHG_VBATOV (1 << RT946X_SHIFT_CHG_VBATOV)
#define RT946X_MASK_CHG_VBUSOV (1 << RT946X_SHIFT_CHG_VBUSOV)
+#endif
/* ========== DPDMIRQ 0x56 ============ */
-#ifdef CONFIG_CHARGER_RT9467
+#if defined(CONFIG_CHARGER_RT9467) || defined(CONFIG_CHARGER_MT6370)
#define RT946X_SHIFT_DPDMIRQ_DETACH 1
#define RT946X_SHIFT_DPDMIRQ_ATTACH 0
@@ -290,6 +366,17 @@
#define RT946X_MASK_DPDMIRQ_ATTACH (1 << RT946X_SHIFT_DPDMIRQ_ATTACH)
#endif
+/* ========== CHGSTAT2 0xD1 (mt6370) ============ */
+#ifdef CONFIG_CHARGER_MT6370
+#define MT6370_SHIFT_CHG_VBUSOV_STAT 7
+#define MT6370_SHIFT_CHG_VBATOV_STAT 6
+
+#define RT946X_MASK_CHG_VBATOV MT6370_SHIFT_CHG_VBATOV_STAT
+
+#define MT6370_MASK_CHG_VBUSOV_STAT (1 << MT6370_SHIFT_CHG_VBUSOV_STAT)
+#define MT6370_MASK_CHG_VBATOV_STAT (1 << MT6370_SHIFT_CHG_VBATOV_STAT)
+#endif
+
/* ========== Variant-specific configuration ============ */
#if defined(CONFIG_CHARGER_RT9466)
#define RT946X_CHARGER_NAME "rt9466"
@@ -299,6 +386,12 @@
#define RT946X_CHARGER_NAME "rt9467"
#define RT946X_VENDOR_ID 0x90
#define RT946X_ADDR (0x5B << 1)
+#elif defined(CONFIG_CHARGER_MT6370)
+ #define RT946X_CHARGER_NAME "mt6370"
+ #define RT946X_VENDOR_ID 0xE0
+ #define RT946X_ADDR (0x34 << 1)
+#else
+ #error "No suitable charger option defined"
#endif
/* RT946x specific interface functions */