From 938805d1cc5c75631deee48e7dac2b9f6a871d03 Mon Sep 17 00:00:00 2001 From: Philip Chen Date: Thu, 7 Mar 2019 11:41:08 -0800 Subject: bq25710: Report VBUS as 0 when VBUS is too low to measure BUG=b:124968142 BRANCH=none TEST=verify VBUS measurement via 'ectool usbpdpower' Change-Id: I1966537f394016706f96e975c7b54008ea8bfa33 Signed-off-by: Philip Chen Reviewed-on: https://chromium-review.googlesource.com/1509176 Reviewed-by: Scott Collyer Reviewed-by: Furquan Shaikh --- driver/charger/bq25710.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'driver') diff --git a/driver/charger/bq25710.c b/driver/charger/bq25710.c index c9724b7d4c..6ace672da3 100644 --- a/driver/charger/bq25710.c +++ b/driver/charger/bq25710.c @@ -324,9 +324,13 @@ int charger_get_vbus_voltage(int port) if (rv) goto error; - /* LSB => 64mV */ - return (reg >> BQ25710_ADC_VBUS_STEP_BIT_OFFSET) * - BQ25710_ADC_VBUS_STEP_MV + BQ25710_ADC_VBUS_BASE_MV; + reg >>= BQ25710_ADC_VBUS_STEP_BIT_OFFSET; + /* + * 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; error: CPRINTF("Could not read VBUS ADC! Error: %d\n", rv); -- cgit v1.2.1