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 /driver | |
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>
Diffstat (limited to 'driver')
-rw-r--r-- | driver/charger/bq25710.c | 34 | ||||
-rw-r--r-- | driver/charger/bq25710.h | 6 |
2 files changed, 34 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 */ |