diff options
author | reno.wang <reno.wang@lcfc.corp-partner.google.com> | 2021-12-07 18:47:10 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-12-29 02:51:49 +0000 |
commit | 69d692ba7a3e6a961c002d84eb2ea6a28137b131 (patch) | |
tree | 770aa29dc31a71467b057282f80bd11aac982b23 | |
parent | 9c8eaaae290e5082f321a8baae73b6348dfc8c7a (diff) | |
download | chrome-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.c | 37 | ||||
-rw-r--r-- | driver/charger/bq257x0_regs.h | 7 | ||||
-rw-r--r-- | zephyr/Kconfig.battery | 19 | ||||
-rw-r--r-- | zephyr/shim/include/config_chip.h | 11 |
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, ®); + 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 = 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 |