summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornickchen <nickchen@ami.corp-partner.google.com>2018-09-19 10:33:57 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-09-19 08:59:45 -0700
commitbed10b956a2ab4f1aeda4bfbf5daff3b7a7a0130 (patch)
treec00855776e30e2c7b5f0784218d6f1a8a8a4bb6c
parent3a56be1e353ac4302d2234b7e1f6f516d68c41db (diff)
downloadchrome-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.c21
-rw-r--r--board/phaser/board.h6
-rw-r--r--board/phaser/gpio.inc2
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 */