diff options
author | Caveh Jalali <caveh@chromium.org> | 2021-02-24 02:05:00 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-03-04 02:15:47 +0000 |
commit | 60f9fb600f19c157ca118063dcfc067fa6cff529 (patch) | |
tree | 23968435d4cdc5fa312f900a68b5b4de87e0b61c | |
parent | e295fbdecc415581c7463e6b2bb9c27faf5765b5 (diff) | |
download | chrome-ec-60f9fb600f19c157ca118063dcfc067fa6cff529.tar.gz |
charger: Add support for the TI BQ25720
This adds support for the BQ25720 charger using the BQ25710 driver. The
only significant difference between the two chips is that the VBUS
voltage register encoding has changed. The scale changed from 64mV to
96mV and there is no DC offset.
BRANCH=none
BUG=b:180980490
TEST=buildall passes
Signed-off-by: Caveh Jalali <caveh@chromium.org>
Change-Id: I9ab6e066a4dec93a0ede0c22ff21b240a5021cbf
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2717805
Reviewed-by: Diana Z <dzigterman@chromium.org>
-rw-r--r-- | driver/charger/bq25710.c | 34 | ||||
-rw-r--r-- | driver/charger/bq25710.h | 6 | ||||
-rw-r--r-- | include/config.h | 6 |
3 files changed, 40 insertions, 6 deletions
diff --git a/driver/charger/bq25710.c b/driver/charger/bq25710.c index e78277b54c..4388f675c6 100644 --- a/driver/charger/bq25710.c +++ b/driver/charger/bq25710.c @@ -428,6 +428,33 @@ static enum ec_error_list bq25710_device_id(int chgnum, int *id) } #ifdef CONFIG_USB_PD_VBUS_MEASURE_CHARGER + +#if defined(CONFIG_CHARGER_BQ25720) + +static int reg_adc_vbus_to_mv(int reg) +{ + /* + * LSB => 96mV, no DC offset. + */ + return reg * BQ25720_ADC_VBUS_STEP_MV; +} + +#elif defined(CONFIG_CHARGER_BQ25710) + +static int reg_adc_vbus_to_mv(int reg) +{ + /* + * LSB => 64mV. + * Return 0 when VBUS <= 3.2V as ADC can't measure it. + */ + return reg ? + (reg * BQ25710_ADC_VBUS_STEP_MV + BQ25710_ADC_VBUS_BASE_MV) : 0; +} + +#else +#error Only the BQ25720 and BQ25710 are supported by bq25710 driver. +#endif + static enum ec_error_list bq25710_get_vbus_voltage(int chgnum, int port, int *voltage) { @@ -443,12 +470,7 @@ static enum ec_error_list bq25710_get_vbus_voltage(int chgnum, int port, goto error; reg >>= BQ25710_ADC_VBUS_STEP_BIT_OFFSET; - /* - * LSB => 64mV. - * Return 0 when VBUS <= 3.2V as ADC can't measure it. - */ - *voltage = reg ? - (reg * BQ25710_ADC_VBUS_STEP_MV + BQ25710_ADC_VBUS_BASE_MV) : 0; + *voltage = reg_adc_vbus_to_mv(reg); error: if (rv) diff --git a/driver/charger/bq25710.h b/driver/charger/bq25710.h index 37facb7831..5a88778c41 100644 --- a/driver/charger/bq25710.h +++ b/driver/charger/bq25710.h @@ -70,8 +70,14 @@ #define BQ25710_ADC_OPTION_EN_ADC_ALL 0xFF /* ADCVBUS/PSYS Register */ +#if defined(CONFIG_CHARGER_BQ25720) +#define BQ25720_ADC_VBUS_STEP_MV 96 +#elif defined(CONFIG_CHARGER_BQ25710) #define BQ25710_ADC_VBUS_STEP_MV 64 #define BQ25710_ADC_VBUS_BASE_MV 3200 +#else +#error Only the BQ25720 and BQ25710 are supported by bq25710 driver. +#endif #define BQ25710_ADC_VBUS_STEP_BIT_OFFSET 8 /* ADCIIN Register */ diff --git a/include/config.h b/include/config.h index c79865e1f5..e695e965d8 100644 --- a/include/config.h +++ b/include/config.h @@ -863,6 +863,7 @@ #undef CONFIG_CHARGER_BQ24770 #undef CONFIG_CHARGER_BQ24773 #undef CONFIG_CHARGER_BQ25710 +#undef CONFIG_CHARGER_BQ25720 #undef CONFIG_CHARGER_ISL9237 #undef CONFIG_CHARGER_ISL9238 /* For ISL9238 A/B */ #undef CONFIG_CHARGER_ISL9238C @@ -5453,6 +5454,11 @@ #endif /*****************************************************************************/ +/* The BQ25720 is supported by the BQ25710 driver */ +#if defined(CONFIG_CHARGER_BQ25720) +#define CONFIG_CHARGER_BQ25710 +#endif + /* * Define CONFIG_USB_PD_VBUS_MEASURE_CHARGER if the charger on the board * supports VBUS measurement. |