diff options
-rw-r--r-- | board/servo_v4p1/board.c | 2 | ||||
-rw-r--r-- | board/servo_v4p1/board.h | 1 | ||||
-rw-r--r-- | board/servo_v4p1/build.mk | 1 | ||||
-rw-r--r-- | board/servo_v4p1/ina231s.c | 69 | ||||
-rw-r--r-- | board/servo_v4p1/ina231s.h | 59 |
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 */ |