summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorDevin Lu <devin.lu@quantatw.com>2018-08-22 13:21:15 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-08-31 11:21:07 -0700
commitd219d5cef0f429ff01753159b11355d02fe194f9 (patch)
treed91ec898f5336620740972fcab0c0149c7117973 /board
parent784c3cb351ecb71f507f10ab7569076ed76e2aeb (diff)
downloadchrome-ec-d219d5cef0f429ff01753159b11355d02fe194f9.tar.gz
meep: add VBUS voltage adc sensing
This patch add to detect VBUS voltage, we are using 10x voltage divider. BUG=b:113193009 BRANCH=none TEST=make sure "ectool usbpdpower" can detect VBUS voltage. Change-Id: Ie96465ce1a28dde3381a2105afff14b1d41c89dd Signed-off-by: Devin Lu <Devin.Lu@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/1184587 Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'board')
-rw-r--r--board/meep/board.c21
-rw-r--r--board/meep/board.h6
-rw-r--r--board/meep/gpio.inc2
3 files changed, 29 insertions, 0 deletions
diff --git a/board/meep/board.c b/board/meep/board.c
index 1dca02cec4..2f0f4a825e 100644
--- a/board/meep/board.c
+++ b/board/meep/board.c
@@ -12,6 +12,7 @@
#include "charge_manager.h"
#include "charge_state.h"
#include "common.h"
+#include "console.h"
#include "cros_board_info.h"
#include "driver/accel_kionix.h"
#include "driver/accelgyro_lsm6dsm.h"
@@ -46,6 +47,9 @@
#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args)
+#define USB_PD_PORT_ANX7447 0
+#define USB_PD_PORT_PS8751 1
+
static void tcpc_alert_event(enum gpio_signal signal)
{
if ((signal == GPIO_USB_C1_MUX_INT_ODL) &&
@@ -83,9 +87,26 @@ const struct adc_t adc_channels[] = {
"TEMP_AMB", NPCX_ADC_CH0, ADC_MAX_VOLT, ADC_READ_MAX+1, 0},
[ADC_TEMP_SENSOR_CHARGER] = {
"TEMP_CHARGER", NPCX_ADC_CH1, ADC_MAX_VOLT, ADC_READ_MAX+1, 0},
+ /* Vbus C0 sensing (10x voltage divider). PPVAR_USB_C0_VBUS */
+ [ADC_VBUS_C0] = {
+ "VBUS_C0", NPCX_ADC_CH9, ADC_MAX_VOLT*10, ADC_READ_MAX+1, 0},
+ /* Vbus C1 sensing (10x voltage divider). PPVAR_USB_C1_VBUS */
+ [ADC_VBUS_C1] = {
+ "VBUS_C1", NPCX_ADC_CH4, ADC_MAX_VOLT*10, ADC_READ_MAX+1, 0},
};
BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
+enum adc_channel board_get_vbus_adc(int port)
+{
+ if (port == USB_PD_PORT_ANX7447)
+ return ADC_VBUS_C0;
+ if (port == USB_PD_PORT_PS8751)
+ return ADC_VBUS_C1;
+
+ ccprints("Invaild VBUS adc channel!");
+ return ADC_VBUS_C0;
+}
+
const struct temp_sensor_t temp_sensors[] = {
[TEMP_SENSOR_BATTERY] = {.name = "Battery",
.type = TEMP_SENSOR_TYPE_BATTERY,
diff --git a/board/meep/board.h b/board/meep/board.h
index 578e71e297..b11019c086 100644
--- a/board/meep/board.h
+++ b/board/meep/board.h
@@ -36,6 +36,10 @@
/* Sensors without hardware FIFO are in forced mode */
#define CONFIG_ACCEL_FORCE_MODE_MASK (1 << LID_ACCEL)
+/* USB PD */
+#undef CONFIG_USB_PD_VBUS_MEASURE_NOT_PRESENT
+#define CONFIG_USB_PD_VBUS_MEASURE_ADC_EACH_PORT
+
#define CONFIG_LID_ANGLE
#define CONFIG_LID_ANGLE_UPDATE
#define CONFIG_LID_ANGLE_SENSOR_BASE BASE_ACCEL
@@ -75,6 +79,8 @@
enum adc_channel {
ADC_TEMP_SENSOR_AMB, /* ADC0 */
ADC_TEMP_SENSOR_CHARGER, /* ADC1 */
+ ADC_VBUS_C1, /* ADC4 */
+ ADC_VBUS_C0, /* ADC9 */
ADC_CH_COUNT
};
diff --git a/board/meep/gpio.inc b/board/meep/gpio.inc
index 81bac77775..d48fa9c481 100644
--- a/board/meep/gpio.inc
+++ b/board/meep/gpio.inc
@@ -176,6 +176,8 @@ ALTERNATE(PIN_MASK(D, 0x03), 0, MODULE_I2C, 0) /* I2C3 */
ALTERNATE(PIN_MASK(F, 0x0C), 0, MODULE_I2C, 0) /* I2C4 */
ALTERNATE(PIN_MASK(B, 0x0C), 0, MODULE_I2C, (GPIO_INPUT | GPIO_SEL_1P8V)) /* 1.8V I2C7 */
ALTERNATE(PIN_MASK(4, 0x30), 0, MODULE_ADC, 0) /* ADC0-1 */
+ALTERNATE(PIN_MASK(4, 0x02), 0, MODULE_ADC, 0) /* ADC4 */
+ALTERNATE(PIN_MASK(F, 0x01), 0, MODULE_ADC, 0) /* ADC9 */
ALTERNATE(PIN_MASK(8, 0x01), 0, MODULE_PWM, 0) /* KB_BL_PWM */
/* Power Switch Logic (PSL) inputs */