summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorreno.wang <reno.wang@lcfc.corp-partner.google.com>2021-12-07 18:47:10 +0800
committerCommit Bot <commit-bot@chromium.org>2021-12-29 02:51:49 +0000
commit69d692ba7a3e6a961c002d84eb2ea6a28137b131 (patch)
tree770aa29dc31a71467b057282f80bd11aac982b23
parent9c8eaaae290e5082f321a8baae73b6348dfc8c7a (diff)
downloadchrome-ec-69d692ba7a3e6a961c002d84eb2ea6a28137b131.tar.gz
bq257x0: add customerized ILIM2 threshold
BRANCH=none BUG=b:210073795 TEST=buildall pass Signed-off-by: reno.wang <reno.wang@lcfc.corp-partner.google.com> Change-Id: I2a98db32daa12072d28c7e8e416cc048def15d80 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3319991 Reviewed-by: caveh jalali <caveh@chromium.org>
-rw-r--r--driver/charger/bq25710.c37
-rw-r--r--driver/charger/bq257x0_regs.h7
-rw-r--r--zephyr/Kconfig.battery19
-rw-r--r--zephyr/shim/include/config_chip.h11
4 files changed, 67 insertions, 7 deletions
diff --git a/driver/charger/bq25710.c b/driver/charger/bq25710.c
index 0e0cf56725..2f5ac93e91 100644
--- a/driver/charger/bq25710.c
+++ b/driver/charger/bq25710.c
@@ -58,6 +58,12 @@
#define CONFIG_CHARGER_BQ25710_PKPWR_TOVLD_DEG 0
#endif
+#ifndef CONFIG_CHARGER_BQ257X0_ILIM2_VTH_CUSTOM
+/* Reduce ILIM from default of 150% to 110% */
+#define CONFIG_CHARGER_BQ257X0_ILIM2_VTH \
+ BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH__1P10
+#endif
+
/*
* Helper macros
*/
@@ -90,6 +96,14 @@
CHARGE_OPTION_4, \
_field, _c, (_x))
+#define SET_PO0(_field, _v, _x) SET_BQ_FIELD(BQ257X0, \
+ PROCHOT_OPTION_0, \
+ _field, _v, (_x))
+
+#define SET_PO0_BY_NAME(_field, _c, _x) SET_BQ_FIELD_BY_NAME(BQ257X0, \
+ PROCHOT_OPTION_0, \
+ _field, _c, (_x))
+
#define SET_PO1(_field, _v, _x) SET_BQ_FIELD(BQ257X0, \
PROCHOT_OPTION_1, \
_field, _v, (_x))
@@ -334,6 +348,20 @@ static int bq257x0_init_charge_option_1(int chgnum)
return raw_write16(chgnum, BQ25710_REG_CHARGE_OPTION_1, reg);
}
+static int bq257x0_init_prochot_option_0(int chgnum)
+{
+ int rv;
+ int reg;
+
+ rv = raw_read16(chgnum, BQ25710_REG_PROCHOT_OPTION_0, &reg);
+ if (rv)
+ return rv;
+
+ reg = SET_PO0(ILIM2_VTH, CONFIG_CHARGER_BQ257X0_ILIM2_VTH, reg);
+
+ return raw_write16(chgnum, BQ25710_REG_PROCHOT_OPTION_0, reg);
+}
+
static int bq257x0_init_prochot_option_1(int chgnum)
{
int rv;
@@ -548,14 +576,9 @@ static void bq25710_init(int chgnum)
bq257x0_init_charge_option_1(chgnum);
- bq257x0_init_prochot_option_1(chgnum);
+ bq257x0_init_prochot_option_0(chgnum);
- /* Reduce ILIM from default of 150% to 105% */
- if (!raw_read16(chgnum, BQ25710_REG_PROCHOT_OPTION_0, &reg)) {
- reg = SET_BQ_FIELD(BQ257X0, PROCHOT_OPTION_0, ILIM2_VTH, 0,
- reg);
- raw_write16(chgnum, BQ25710_REG_PROCHOT_OPTION_0, reg);
- }
+ bq257x0_init_prochot_option_1(chgnum);
bq257x0_init_charge_option_2(chgnum);
diff --git a/driver/charger/bq257x0_regs.h b/driver/charger/bq257x0_regs.h
index 445a3f490d..58d203b55e 100644
--- a/driver/charger/bq257x0_regs.h
+++ b/driver/charger/bq257x0_regs.h
@@ -135,6 +135,13 @@
*/
#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH_SHIFT 11
#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH_BITS 5
+#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH__1P10 1
+#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH__1P40 7
+#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH__1P50 9
+#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH__2P30 25
+#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH__2P50 26
+#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH__4P50 30
+#define BQ257X0_PROCHOT_OPTION_0_ILIM2_VTH__NA 31
/*
* ProchotOption1 Register (0x34)
diff --git a/zephyr/Kconfig.battery b/zephyr/Kconfig.battery
index 3e3a47a2db..91cff1b4ca 100644
--- a/zephyr/Kconfig.battery
+++ b/zephyr/Kconfig.battery
@@ -370,6 +370,25 @@ config PLATFORM_EC_CHARGER_BQ25710_SENSE_RESISTOR_AC
external AC power supply. Its value must be known for the calculation
to be correct. The value is typically around 10 mOhms.
+config PLATFORM_EC_CHARGER_BQ257X0_ILIM2_VTH_CUSTOM
+ bool "ILIM2_VTH override"
+ depends on PLATFORM_EC_CHARGER_BQ25710 || PLATFORM_EC_CHARGER_BQ25720
+ help
+ Enable customizing the charhger's ILIM2_VTH threshold
+
+config PLATFORM_EC_CHARGER_BQ257X0_ILIM2_VTH
+ int "ILIM2 threshold"
+ range 1 30
+ default 9
+ depends on PLATFORM_EC_CHARGER_BQ257X0_ILIM2_VTH_CUSTOM
+ help
+ Set percentage of IDPM as threshold. ICRIT threshold is set to be 110%
+ of ILIM2. Input overcurrent protection (ACOC) threshold is also 1.33x
+ or 2x of ILIM2 (1.33x or 2x based on ACOC limit field).
+ 1 - 25: 110% - 230%, step is 5%.
+ 26 - 30: 250% - 450%, step is 50%.
+ 31: Out of range (ignored).
+
config PLATFORM_EC_CHARGER_BQ25720_VSYS_TH2_CUSTOM
bool "VSYS_TH2 override"
depends on PLATFORM_EC_CHARGER_BQ25720
diff --git a/zephyr/shim/include/config_chip.h b/zephyr/shim/include/config_chip.h
index 64d7dec9f0..665edd3d63 100644
--- a/zephyr/shim/include/config_chip.h
+++ b/zephyr/shim/include/config_chip.h
@@ -1825,6 +1825,17 @@
#define CONFIG_CHARGER_BQ25720
#endif
+#undef CONFIG_CHARGER_BQ257X0_ILIM2_VTH_CUSTOM
+#ifdef CONFIG_PLATFORM_EC_CHARGER_BQ257X0_ILIM2_VTH_CUSTOM
+#define CONFIG_CHARGER_BQ257X0_ILIM2_VTH_CUSTOM
+#endif
+
+#undef CONFIG_CHARGER_BQ257X0_ILIM2_VTH
+#ifdef CONFIG_PLATFORM_EC_CHARGER_BQ257X0_ILIM2_VTH
+#define CONFIG_CHARGER_BQ257X0_ILIM2_VTH \
+ CONFIG_PLATFORM_EC_CHARGER_BQ257X0_ILIM2_VTH
+#endif
+
#undef CONFIG_CHARGER_BQ25720_VSYS_TH2_CUSTOM
#ifdef CONFIG_PLATFORM_EC_CHARGER_BQ25720_VSYS_TH2_CUSTOM
#define CONFIG_CHARGER_BQ25720_VSYS_TH2_CUSTOM