summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Hurst <shurst@google.com>2020-05-26 10:34:02 -0700
committerCommit Bot <commit-bot@chromium.org>2020-07-31 20:54:06 +0000
commit7d705d23e34f2031e94461a7dc35b98701f81778 (patch)
treee9e3403a2af5e0069ec20f04944f2b48a78b1078
parentef839e580d6b7f0107d74dd33fc9ecf05a3c0d0e (diff)
downloadchrome-ec-7d705d23e34f2031e94461a7dc35b98701f81778.tar.gz
servo_v4p1: Add INA231S functionality
This functionality is only available in RO BRANCH=none BUG=b:146793000 TEST=make -j buildall Signed-off-by: Sam Hurst <shurst@google.com> Change-Id: I37f97e8e882a8a5948aeeb669ca39cc930e32d31 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2216406 Reviewed-by: Wai-Hong Tam <waihong@google.com> (cherry picked from commit 5e62b34f19a0d8a93d82990e7327491ca4ee6a1d) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2332243
-rw-r--r--board/servo_v4p1/board.c2
-rw-r--r--board/servo_v4p1/board.h1
-rw-r--r--board/servo_v4p1/build.mk1
-rw-r--r--board/servo_v4p1/ina231s.c69
-rw-r--r--board/servo_v4p1/ina231s.h59
5 files changed, 132 insertions, 0 deletions
diff --git a/board/servo_v4p1/board.c b/board/servo_v4p1/board.c
index e8763766cb..72c95049d1 100644
--- a/board/servo_v4p1/board.c
+++ b/board/servo_v4p1/board.c
@@ -14,6 +14,7 @@
#include "gpio.h"
#include "hooks.h"
#include "i2c.h"
+#include "ina231s.h"
#include "ioexpanders.h"
#include "pathsel.h"
#include "queue_policies.h"
@@ -317,6 +318,7 @@ static void board_init(void)
#ifdef SECTION_IS_RO
init_uservo_port();
init_pathsel();
+ init_ina231s();
/* Enable DUT USB2.0 pair. */
gpio_set_level(GPIO_FASTBOOT_DUTHUB_MUX_EN_L, 0);
diff --git a/board/servo_v4p1/board.h b/board/servo_v4p1/board.h
index 8f7b517695..a71e92c5ab 100644
--- a/board/servo_v4p1/board.h
+++ b/board/servo_v4p1/board.h
@@ -175,6 +175,7 @@
#define CONFIG_USB_PD_PORT_MAX_COUNT 2
#ifdef SECTION_IS_RO
+#define CONFIG_INA231
/*
* TODO(crosbug.com/p/60792): The delay values are currently just place holders
* and the delay will need to be relative to the circuitry that allows VBUS to
diff --git a/board/servo_v4p1/build.mk b/board/servo_v4p1/build.mk
index c3161a9c67..3d5712ed59 100644
--- a/board/servo_v4p1/build.mk
+++ b/board/servo_v4p1/build.mk
@@ -21,5 +21,6 @@ board-y+=ioexpanders.o
board-ro+=ccd_measure_sbu.o
board-ro+=pathsel.o
board-ro+=chg_control.o
+board-ro+=ina231s.o
all_deps=$(patsubst ro,,$(def_all_deps))
diff --git a/board/servo_v4p1/ina231s.c b/board/servo_v4p1/ina231s.c
new file mode 100644
index 0000000000..3382686f3f
--- /dev/null
+++ b/board/servo_v4p1/ina231s.c
@@ -0,0 +1,69 @@
+/* Copyright 2020 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "common.h"
+#include "ina2xx.h"
+#include "util.h"
+
+#define PP_DUT_IDX 0
+#define PP_CHG_IDX 1
+#define SR_CHG_IDX 2
+
+void init_ina231s(void)
+{
+ /* Calibrate INA0 (PP DUT) with 1mA/LSB scale */
+ ina2xx_init(PP_DUT_IDX, 0x8000, INA2XX_CALIB_1MA(5 /*mOhm*/));
+
+ /* Calibrate INA1 (PP CHG) with 1mA/LSB scale */
+ ina2xx_init(PP_CHG_IDX, 0x8000, INA2XX_CALIB_1MA(5 /*mOhm*/));
+
+ /* Calibrate INA2 (SR CHG) with 1mA/LSB scale*/
+ ina2xx_init(SR_CHG_IDX, 0x8000, INA2XX_CALIB_1MA(5 /*mOhm*/));
+}
+
+int pp_dut_voltage(void)
+{
+ return ina2xx_get_voltage(PP_DUT_IDX);
+}
+
+int pp_dut_current(void)
+{
+ return ina2xx_get_current(PP_DUT_IDX);
+}
+
+int pp_dut_power(void)
+{
+ return ina2xx_get_power(PP_DUT_IDX);
+}
+
+int pp_chg_voltage(void)
+{
+ return ina2xx_get_voltage(PP_CHG_IDX);
+}
+
+int pp_chg_current(void)
+{
+ return ina2xx_get_current(PP_CHG_IDX);
+}
+
+int pp_chg_power(void)
+{
+ return ina2xx_get_power(PP_CHG_IDX);
+}
+
+int sr_chg_voltage(void)
+{
+ return ina2xx_get_voltage(SR_CHG_IDX);
+}
+
+int sr_chg_current(void)
+{
+ return ina2xx_get_current(SR_CHG_IDX);
+}
+
+int sr_chg_power(void)
+{
+ return ina2xx_get_power(SR_CHG_IDX);
+}
diff --git a/board/servo_v4p1/ina231s.h b/board/servo_v4p1/ina231s.h
new file mode 100644
index 0000000000..9c3804e769
--- /dev/null
+++ b/board/servo_v4p1/ina231s.h
@@ -0,0 +1,59 @@
+/* Copyright 2020 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef __CROS_EC_INA231S_H
+#define __CROS_EC_INA231S_H
+
+/*
+ * Initialize the INA231s
+ */
+void init_ina231s(void);
+
+/*
+ * Return dut vbus voltage in milliVolts
+ */
+int pp_dut_voltage(void);
+
+/*
+ * Return current in milliAmps
+ */
+int pp_dut_current(void);
+
+/*
+ * Return power in milliWatts
+ */
+int pp_dut_power(void);
+
+/*
+ * Return bus voltage in milliVolts
+ */
+int pp_chg_voltage(void);
+
+/*
+ * Return current in milliAmps
+ */
+int pp_chg_current(void);
+
+/*
+ * Return power in milliWatts
+ */
+int pp_chg_power(void);
+
+/*
+ * Return bus voltage in milliVolts
+ */
+int sr_chg_voltage(void);
+
+/*
+ * Return current in milliAmps
+ */
+int sr_chg_current(void);
+
+/*
+ * Return power in milliWatts
+ */
+int sr_chg_power(void);
+
+#endif /* __CROS_EC_INA231S_H */