summaryrefslogtreecommitdiff
path: root/driver/charger/rt946x.h
diff options
context:
space:
mode:
Diffstat (limited to 'driver/charger/rt946x.h')
-rw-r--r--driver/charger/rt946x.h240
1 files changed, 240 insertions, 0 deletions
diff --git a/driver/charger/rt946x.h b/driver/charger/rt946x.h
new file mode 100644
index 0000000000..0a18ac7acc
--- /dev/null
+++ b/driver/charger/rt946x.h
@@ -0,0 +1,240 @@
+/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+ * 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.
+ */
+
+#ifndef __CROS_EC_RT946X_H
+#define __CROS_EC_RT946X_H
+
+/* Charger parameters */
+#define CHARGER_NAME RT946X_CHARGER_NAME
+#define CHARGE_V_MAX 4710
+#define CHARGE_V_MIN 3900
+#define CHARGE_V_STEP 10
+#define CHARGE_I_MAX 5000
+#define CHARGE_I_MIN 100
+#define CHARGE_I_OFF 0
+#define CHARGE_I_STEP 100
+#define INPUT_I_MAX 3250
+#define INPUT_I_MIN 100
+#define INPUT_I_STEP 50
+
+/* Registers */
+#define RT946X_REG_CORECTRL0 0x00
+#define RT946X_REG_CHGCTRL1 0x01
+#define RT946X_REG_CHGCTRL2 0x02
+#define RT946X_REG_CHGCTRL3 0x03
+#define RT946X_REG_CHGCTRL4 0x04
+#define RT946X_REG_CHGCTRL5 0x05
+#define RT946X_REG_CHGCTRL6 0x06
+#define RT946X_REG_CHGCTRL7 0x07
+#define RT946X_REG_CHGCTRL8 0x08
+#define RT946X_REG_CHGCTRL9 0x09
+#define RT946X_REG_CHGCTRL10 0x0A
+#define RT946X_REG_CHGCTRL11 0x0B
+#define RT946X_REG_CHGCTRL12 0x0C
+#define RT946X_REG_CHGCTRL13 0x0D
+#define RT946X_REG_CHGCTRL14 0x0E
+#define RT946X_REG_CHGCTRL15 0x0F
+#define RT946X_REG_CHGCTRL16 0x10
+#define RT946X_REG_CHGADC 0x11
+
+#ifdef CONFIG_CHARGER_RT9467
+#define RT946X_REG_DPDM1 0x12
+#define RT946X_REG_DPDM2 0x13
+#define RT946X_REG_DPDM3 0x14
+#endif
+
+#define RT946X_REG_CHGCTRL19 0x18
+#define RT946X_REG_CHGCTRL17 0x19
+#define RT946X_REG_CHGCTRL18 0x1A
+#define RT946X_REG_CHGHIDDENCTRL2 0x21
+#define RT946X_REG_CHGHIDDENCTRL4 0x23
+#define RT946X_REG_CHGHIDDENCTRL6 0x25
+#define RT946X_REG_CHGHIDDENCTRL7 0x26
+#define RT946X_REG_CHGHIDDENCTRL8 0x27
+#define RT946X_REG_CHGHIDDENCTRL9 0x28
+#define RT946X_REG_CHGHIDDENCTRL15 0x2E
+#define RT946X_REG_DEVICEID 0x40
+#define RT946X_REG_CHGSTAT 0x42
+#define RT946X_REG_CHGNTC 0x43
+#define RT946X_REG_ADCDATAH 0x44
+#define RT946X_REG_ADCDATAL 0x45
+#define RT946X_REG_CHGSTATC 0x50
+#define RT946X_REG_CHGFAULT 0x51
+#define RT946X_REG_TSSTATC 0x52
+#define RT946X_REG_CHGIRQ1 0x53
+#define RT946X_REG_CHGIRQ2 0x54
+#define RT946X_REG_CHGIRQ3 0x55
+
+#ifdef CONFIG_CHARGER_RT9467
+#define RT946X_REG_DPDMIRQ 0x56
+#endif
+
+#define RT946X_REG_CHGSTATCCTRL 0x60
+#define RT946X_REG_CHGFAULTCTRL 0x61
+#define RT946X_REG_TSSTATCCTRL 0x62
+#define RT946X_REG_CHGIRQ1CTRL 0x63
+#define RT946X_REG_CHGIRQ2CTRL 0x64
+#define RT946X_REG_CHGIRQ3CTRL 0x65
+
+#ifdef CONFIG_CHARGER_RT9467
+#define RT946X_REG_DPDMIRQCTRL 0x66
+#endif
+
+/* EOC current */
+#define RT946X_IEOC_MIN 100
+#define RT946X_IEOC_MAX 850
+#define RT946X_IEOC_STEP 50
+
+/* Minimum Input Voltage Regulator */
+#define RT946X_MIVR_MIN 3900
+#define RT946X_MIVR_MAX 13400
+#define RT946X_MIVR_STEP 100
+
+/* Boost voltage */
+#define RT946X_BOOST_VOLTAGE_MIN 4425
+#define RT946X_BOOST_VOLTAGE_MAX 5825
+#define RT946X_BOOST_VOLTAGE_STEP 25
+
+/* IR compensation resistor */
+#define RT946X_IRCMP_RES_MIN 0
+#define RT946X_IRCMP_RES_MAX 175
+#define RT946X_IRCMP_RES_STEP 25
+
+/* IR compensation voltage clamp */
+#define RT946X_IRCMP_VCLAMP_MIN 0
+#define RT946X_IRCMP_VCLAMP_MAX 224
+#define RT946X_IRCMP_VCLAMP_STEP 32
+
+/* AICLVTH */
+#define RT946X_AICLVTH_MIN 4100
+#define RT946X_AICLVTH_MAX 4800
+#define RT946X_AICLVTH_STEP 100
+
+/* NTC */
+#define RT946X_BATTEMP_NORMAL 0x00
+#define RT946X_BATTEMP_WARM 0x02
+#define RT946X_BATTEMP_COOL 0x03
+#define RT946X_BATTEMP_COLD 0x05
+#define RT946X_BATTEMP_HOT 0x06
+
+/* ========== CORECTRL0 0x00 ============ */
+#define RT946X_SHIFT_RST 7
+
+#define RT946X_MASK_RST (1 << RT946X_SHIFT_RST)
+
+/* ========== CHGCTRL1 0x01 ============ */
+#define RT946X_SHIFT_OPA_MODE 0
+#define RT946X_SHIFT_HZ_EN 2
+
+#define RT946X_MASK_OPA_MODE (1 << RT946X_SHIFT_OPA_MODE)
+#define RT946X_MASK_HZ_EN (1 << RT946X_SHIFT_HZ_EN)
+
+/* ========== CHGCTRL2 0x02 ============ */
+#define RT946X_SHIFT_ILMTSEL 2
+#define RT946X_SHIFT_CHG_EN 0
+
+#define RT946X_MASK_ILMTSEL 0x0C
+#define RT946X_MASK_CHG_EN (1 << RT946X_SHIFT_CHG_EN)
+
+/* ========== CHGCTRL3 0x03 ============ */
+#define RT946X_SHIFT_AICR 2
+#define RT946X_SHIFT_ILIMEN 0
+
+#define RT946X_MASK_AICR 0xFC
+#define RT946X_MASK_ILIMEN (1 << RT946X_SHIFT_ILIMEN)
+
+/* ========== CHGCTRL4 0x04 ============ */
+#define RT946X_SHIFT_CV 1
+
+#define RT946X_MASK_CV 0xFE
+
+/* ========== CHGCTRL5 0x05 ============ */
+#define RT946X_SHIFT_BOOST_VOLTAGE 2
+
+#define RT946X_MASK_BOOST_VOLTAGE 0xFC
+
+/* ========== CHGCTRL6 0x06 ============ */
+#define RT946X_SHIFT_MIVR 1
+
+#define RT946X_MASK_MIVR 0xFE
+
+/* ========== CHGCTRL7 0x07 ============ */
+#define RT946X_SHIFT_ICHG 2
+
+#define RT946X_MASK_ICHG 0xFC
+
+/* ========== CHGCTRL9 0x09 ============ */
+#define RT946X_SHIFT_IEOC 4
+
+#define RT946X_MASK_IEOC 0xF0
+
+/* ========== CHGCTRL10 0x0A ============ */
+#define RT946X_SHIFT_BOOST_CURRENT 0
+
+#define RT946X_MASK_BOOST_CURRENT 0x07
+
+/* ========== CHGCTRL13 0x0D ============ */
+#define RT946X_SHIFT_WDT_EN 7
+
+#define RT946X_MASK_WDT_EN (1 << RT946X_SHIFT_WDT_EN)
+
+/* ========== CHGCTRL14 0x0E ============ */
+#define RT946X_SHIFT_AICLMEAS 7
+#define RT946X_SHIFT_AICLVTH 0
+
+#define RT946X_MASK_AICLMEAS (1 << RT946X_SHIFT_AICLMEAS)
+#define RT946X_MASK_AICLVTH 0x07
+
+/* ========== CHGDPDM1 0x12 ============ */
+#define RT946X_MASK_USBCHGEN (1 << 7)
+
+/* ========== CHGCTRL18 0x1A ============ */
+#define RT946X_SHIFT_IRCMP_RES 3
+#define RT946X_SHIFT_IRCMP_VCLAMP 0
+
+#define RT946X_MASK_IRCMP_RES 0x38
+#define RT946X_MASK_IRCMP_VCLAMP 0x07
+
+/* ========== DEVICE_ID 0x40 ============ */
+#define RT946X_MASK_VENDOR_ID 0xF0
+#define RT946X_MASK_CHIP_REV 0x0F
+
+/* ========== CHGSTAT 0x42 ============ */
+#define RT946X_SHIFT_CHG_STAT 6
+
+#define RT946X_MASK_CHG_STAT 0xC0
+
+/* ========== CHGNTC 0x43 ============ */
+#define RT946X_SHIFT_BATNTC_FAULT 4
+
+#define RT946X_MASK_BATNTC_FAULT 0x70
+
+/* ========== CHGFAULT 0x51 ============ */
+#define RT946X_SHIFT_CHG_VSYSUV 4
+#define RT946X_SHIFT_CHG_VSYSOV 5
+#define RT946X_SHIFT_CHG_VBATOV 6
+#define RT946X_SHIFT_CHG_VBUSOV 7
+
+#define RT946X_MASK_CHG_VSYSUV (1 << RT946X_SHIFT_CHG_VSYSUV)
+#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)
+
+/* ========== Variant-specific configuration ============ */
+#if defined(CONFIG_CHARGER_RT9466)
+ #define RT946X_CHARGER_NAME "rt9466"
+ #define RT946X_VENDOR_ID 0x80
+ #define RT946X_CHIP_REV 0x05
+ #define RT946X_ADDR (0x53 << 1)
+#elif defined(CONFIG_CHARGER_RT9467)
+ #define RT946X_CHARGER_NAME "rt9467"
+ #define RT946X_VENDOR_ID 0x90
+ #define RT946X_CHIP_REV 0x05
+ #define RT946X_ADDR (0x5B << 1)
+#endif
+
+#endif /* __CROS_EC_RT946X_H */