diff options
author | Devin Lu <devin.lu@quantatw.com> | 2018-08-22 13:21:15 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-08-31 11:21:07 -0700 |
commit | d219d5cef0f429ff01753159b11355d02fe194f9 (patch) | |
tree | d91ec898f5336620740972fcab0c0149c7117973 /board | |
parent | 784c3cb351ecb71f507f10ab7569076ed76e2aeb (diff) | |
download | chrome-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.c | 21 | ||||
-rw-r--r-- | board/meep/board.h | 6 | ||||
-rw-r--r-- | board/meep/gpio.inc | 2 |
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 */ |