diff options
author | nickchen <nickchen@ami.corp-partner.google.com> | 2018-09-19 10:33:57 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-09-19 08:59:45 -0700 |
commit | bed10b956a2ab4f1aeda4bfbf5daff3b7a7a0130 (patch) | |
tree | c00855776e30e2c7b5f0784218d6f1a8a8a4bb6c | |
parent | 3a56be1e353ac4302d2234b7e1f6f516d68c41db (diff) | |
download | chrome-ec-bed10b956a2ab4f1aeda4bfbf5daff3b7a7a0130.tar.gz |
phaser: enable to measure the Vbus voltage of PD ports via ADC channel
Measure the Vbus voltage of port 0 (USB_PD_PORT_ANX7447) via ADC 9,
measure the Vbus voltage of port 1 (USB_PD_PORT_PS8751) via ADC 4.
BUG=b:115997207
BRANCH=none
TEST=check log output of `ectool usbpdpower` for 4 cases are all correct
case1. Adapter plugged in only port0 (motherboard):
Port 0: SNK Charger PD 14932mV
Port 1: Disconnected
case2. Adapter plugged in only port1 (sub-board):
Port 0: Disconnected
Port 1: SNK Charger PD 14850mV
case3. Adapter plugged in both two ports (port0 first, then port1):
Port 0: SNK Charger PD 14877mV
Port 1: SNK (not charging) Charger PD 5000mV
case4. Adapter plugged in both two ports (port1 first, then port0):
Port 0: SNK (not charging) Charger Unknown 5000mV
Port 1: SNK Charger PD 14905mV
Change-Id: Icae0abecbcbee6af5f7167fcefd969c322947a26
Signed-off-by: nickchen <nickchen@ami.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/1233094
Commit-Ready: Nick Chen <nickchen@ami.corp-partner.google.com>
Tested-by: Nick Chen <nickchen@ami.corp-partner.google.com>
Tested-by: Xiong Huang <xiong.huang@bitland.corp-partner.google.com>
Reviewed-by: Justin TerAvest <teravest@chromium.org>
-rw-r--r-- | board/phaser/board.c | 21 | ||||
-rw-r--r-- | board/phaser/board.h | 6 | ||||
-rw-r--r-- | board/phaser/gpio.inc | 2 |
3 files changed, 29 insertions, 0 deletions
diff --git a/board/phaser/board.c b/board/phaser/board.c index d66c0236ac..d8335544fb 100644 --- a/board/phaser/board.c +++ b/board/phaser/board.c @@ -32,6 +32,12 @@ #include "util.h" #include "battery_smart.h" +#define CPRINTSUSB(format, args...) cprints(CC_USBCHARGE, format, ## args) +#define CPRINTFUSB(format, args...) cprintf(CC_USBCHARGE, format, ## args) + +#define USB_PD_PORT_ANX7447 0 +#define USB_PD_PORT_PS8751 1 + static uint8_t sku_id; static void ppc_interrupt(enum gpio_signal signal) @@ -59,9 +65,24 @@ 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 sensing (1/10 voltage divider). */ + [ADC_VBUS_C0] = { + "VBUS_C0", NPCX_ADC_CH9, ADC_MAX_VOLT*10, ADC_READ_MAX+1, 0}, + [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; + CPRINTSUSB("Unknown vbus adc port id: %d", port); + 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/phaser/board.h b/board/phaser/board.h index 133226993b..0a511969ac 100644 --- a/board/phaser/board.h +++ b/board/phaser/board.h @@ -13,6 +13,10 @@ #define VARIANT_OCTOPUS_CHARGER_ISL9238 #include "baseboard.h" +/* USB PD */ +#undef CONFIG_USB_PD_VBUS_MEASURE_NOT_PRESENT +#define CONFIG_USB_PD_VBUS_MEASURE_ADC_EACH_PORT + #define CONFIG_VOLUME_BUTTONS #define GPIO_VOLUME_UP_L GPIO_EC_VOLUP_BTN_ODL #define GPIO_VOLUME_DOWN_L GPIO_EC_VOLDN_BTN_ODL @@ -67,6 +71,8 @@ enum adc_channel { ADC_TEMP_SENSOR_AMB, /* ADC0 */ ADC_TEMP_SENSOR_CHARGER, /* ADC1 */ + ADC_VBUS_C0, /* ADC9 */ + ADC_VBUS_C1, /* ADC4 */ ADC_CH_COUNT, }; diff --git a/board/phaser/gpio.inc b/board/phaser/gpio.inc index ba5c99f6e9..408024739d 100644 --- a/board/phaser/gpio.inc +++ b/board/phaser/gpio.inc @@ -168,6 +168,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_SEL_1P8V) /* I2C7 - 1.8V */ 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) /* PWM3: KB_BL_PWM */ /* Power Switch Logic (PSL) inputs */ |