summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2020-10-16 15:09:21 -0700
committerCommit Bot <commit-bot@chromium.org>2020-11-03 00:11:49 +0000
commit2436c92f829fef3bd620e624ef250b009fce452a (patch)
tree292d75c55f66fbf3cd1fb307f33d038977619415
parent8abe7e21cb7d8b943b3d0e3174e39e748b4499a5 (diff)
downloadchrome-ec-2436c92f829fef3bd620e624ef250b009fce452a.tar.gz
sm5803: Use average registers for ADC
In order to help reduce variance when calculating resistance, this commit uses the average ADC registers for the SM5803. BUG=b:170974274 BRANCH=None TEST=Build and flash waddledee, verify that ADC values still make sense. Change-Id: Ic3450c538c391f82d1bc63ab3cd25e9a59c1d348 Signed-off-by: Aseda Aboagye <aaboagye@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2508852 Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org> Tested-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--driver/charger/sm5803.c8
-rw-r--r--driver/charger/sm5803.h8
2 files changed, 10 insertions, 6 deletions
diff --git a/driver/charger/sm5803.c b/driver/charger/sm5803.c
index 3bc57c94ec..40876e5431 100644
--- a/driver/charger/sm5803.c
+++ b/driver/charger/sm5803.c
@@ -1127,12 +1127,12 @@ static enum ec_error_list sm5803_get_current(int chgnum, int *current)
int reg;
int curr;
- rv = meas_read8(chgnum, SM5803_REG_IBAT_CHG_MEAS_MSB, &reg);
+ rv = meas_read8(chgnum, SM5803_REG_IBAT_CHG_AVG_MEAS_MSB, &reg);
if (rv)
return rv;
curr = reg << 2;
- rv = meas_read8(chgnum, SM5803_REG_IBAT_CHG_MEAS_LSB, &reg);
+ rv = meas_read8(chgnum, SM5803_REG_IBAT_CHG_AVG_MEAS_LSB, &reg);
if (rv)
return rv;
curr |= reg & SM5803_IBAT_CHG_MEAS_LSB;
@@ -1164,12 +1164,12 @@ static enum ec_error_list sm5803_get_voltage(int chgnum, int *voltage)
int reg;
int volt_bits;
- rv = meas_read8(chgnum, SM5803_REG_VSYS_MEAS_MSB, &reg);
+ rv = meas_read8(chgnum, SM5803_REG_VSYS_AVG_MEAS_MSB, &reg);
if (rv)
return rv;
volt_bits = reg << 2;
- rv = meas_read8(chgnum, SM5803_REG_VSYS_MEAS_LSB, &reg);
+ rv = meas_read8(chgnum, SM5803_REG_VSYS_AVG_MEAS_LSB, &reg);
if (rv)
return rv;
volt_bits |= reg & 0x3;
diff --git a/driver/charger/sm5803.h b/driver/charger/sm5803.h
index 59074830f8..08e7494a00 100644
--- a/driver/charger/sm5803.h
+++ b/driver/charger/sm5803.h
@@ -150,8 +150,10 @@ enum sm5803_gpio0_modes {
#define SM5803_TINT_HIGH_LEVEL 0xD1
/* IBAT levels - The IBAT levels increment in 7.32mA */
-#define SM5803_REG_IBAT_CHG_MEAS_MSB 0x44
-#define SM5803_REG_IBAT_CHG_MEAS_LSB 0x45
+#define SM5803_REG_IBAT_CHG_MEAS_MSB 0x44
+#define SM5803_REG_IBAT_CHG_MEAS_LSB 0x45
+#define SM5803_REG_IBAT_CHG_AVG_MEAS_MSB 0xC4
+#define SM5803_REG_IBAT_CHG_AVG_MEAS_LSB 0xC5
#define SM5803_IBAT_CHG_MEAS_LSB GENMASK(1, 0)
/* IBUS levels - The IBUS levels increment in 7.32mA */
@@ -172,6 +174,8 @@ enum sm5803_gpio0_modes {
/* VSYS levels - The VSYS levels increment in 23.4mV steps. */
#define SM5803_REG_VSYS_MEAS_MSB 0x4C
#define SM5803_REG_VSYS_MEAS_LSB 0x4D
+#define SM5803_REG_VSYS_AVG_MEAS_MSB 0xCC
+#define SM5803_REG_VSYS_AVG_MEAS_LSB 0xCD
#define SM5803_VSYS_MEAS_LSB GENMASK(1, 0)
/* Charger registers (address 0x32) */