summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorCaveh Jalali <caveh@chromium.org>2021-02-24 02:05:00 -0800
committerCommit Bot <commit-bot@chromium.org>2021-03-04 02:15:47 +0000
commit60f9fb600f19c157ca118063dcfc067fa6cff529 (patch)
tree23968435d4cdc5fa312f900a68b5b4de87e0b61c /driver
parente295fbdecc415581c7463e6b2bb9c27faf5765b5 (diff)
downloadchrome-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.c34
-rw-r--r--driver/charger/bq25710.h6
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 */