summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRong Chang <rongchang@chromium.org>2015-08-05 17:37:15 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-21 08:10:16 +0000
commit9f146c7b8ae350179c55b47f9311d392969c6515 (patch)
tree0e008ca2808e64f0236ad434bc681fa12bd63dda
parent16cbaf1cd1c839e3d061a1a8d9cb34fe14ab288e (diff)
downloadchrome-ec-9f146c7b8ae350179c55b47f9311d392969c6515.tar.gz
oak: enable oak TCPM power status
Oak doesn't have enough interrupt pins to detect VBUS change. This CL enables oak TCPM power status alert. BRANCH=none BUG=chrome-os-partner:41226 BUG=chrome-os-partner:42610 TEST=manual load on oak rev2. plug in normal type-c charger or legacy type-c chargers and check charging status. Change-Id: I9659e749b515f999fe9e81373567f52ec3fe956a Signed-off-by: Rong Chang <rongchang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/291161 Reviewed-by: Shawn N <shawnn@chromium.org> Reviewed-by: Alec Berg <alecaberg@chromium.org>
-rw-r--r--board/oak/board.c19
-rw-r--r--board/oak/board.h1
-rw-r--r--board/oak/gpio.inc1
-rw-r--r--board/oak/usb_pd_policy.c5
-rw-r--r--board/oak_pd/board.c11
-rw-r--r--board/oak_pd/board.h1
-rw-r--r--board/oak_pd/gpio.inc4
7 files changed, 5 insertions, 37 deletions
diff --git a/board/oak/board.c b/board/oak/board.c
index 3dd9d75615..1399c67c21 100644
--- a/board/oak/board.c
+++ b/board/oak/board.c
@@ -48,23 +48,6 @@
/* Dispaly port hardware can connect to port 0, 1 or neither. */
#define PD_PORT_NONE -1
-void vbus_wake_interrupt(enum gpio_signal signal)
-{
- CPRINTF("VBUS %d\n", !gpio_get_level(signal));
- gpio_set_level(GPIO_USB_PD_VBUS_WAKE,
- !gpio_get_level(GPIO_VBUS_WAKE_L));
- /*
- * TODO(crosbug.com/p/41226):
- * rev1/rev2 boards don't have vbus input on ec. vbus_wake is a
- * logical OR of two vbus status. to workaround the power status
- * issue, wake up both pd tasks on vbus_wake interrupt. a proper
- * hardware fix will be in rev3.
- * enable TCPC POWER_STATUS ALERT1 can solve this issue too.
- */
- task_wake(TASK_ID_PD_C0);
- task_wake(TASK_ID_PD_C1);
-}
-
void pd_mcu_interrupt(enum gpio_signal signal)
{
#ifdef HAS_TASK_PDCMD
@@ -191,8 +174,6 @@ static void board_init(void)
gpio_set_level(GPIO_SYSTEM_POWER_H, 1);
/* Enable PD MCU interrupt */
gpio_enable_interrupt(GPIO_PD_MCU_INT);
- /* Enable VBUS interrupt */
- gpio_enable_interrupt(GPIO_VBUS_WAKE_L);
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
diff --git a/board/oak/board.h b/board/oak/board.h
index 1dbc42e18f..d384fe75e7 100644
--- a/board/oak/board.h
+++ b/board/oak/board.h
@@ -69,6 +69,7 @@
#define CONFIG_USB_PD_PORT_COUNT 2
#define CONFIG_USB_PD_TCPM_TCPCI
#define CONFIG_USB_PD_TRY_SRC
+#define CONFIG_USB_PD_TCPM_VBUS
#define CONFIG_SPI
#define CONFIG_STM_HWTIMER32
#define CONFIG_VBOOT_HASH
diff --git a/board/oak/gpio.inc b/board/oak/gpio.inc
index 0bcee1ee5d..234d386753 100644
--- a/board/oak/gpio.inc
+++ b/board/oak/gpio.inc
@@ -11,7 +11,6 @@ GPIO_INT(POWER_BUTTON_L, PIN(B, 5), GPIO_INT_BOTH | GPIO_PULL_UP, power_bu
GPIO_INT(SOC_POWER_GOOD, PIN(A, 3), GPIO_INT_BOTH | GPIO_PULL_DOWN, power_signal_interrupt)
GPIO_INT(LID_OPEN, PIN(C, 13), GPIO_INT_BOTH, lid_interrupt) /* LID switch detection */
GPIO_INT(SUSPEND_L, PIN(C, 7), GPIO_INT_BOTH | GPIO_PULL_DOWN, power_signal_interrupt) /* AP suspend/resume state */
-GPIO_INT(VBUS_WAKE_L, PIN(E, 1), GPIO_INT_BOTH, vbus_wake_interrupt) /* VBUS wake: PE 1 */
GPIO_INT(PD_MCU_INT, PIN(E, 0), GPIO_INT_FALLING, pd_mcu_interrupt) /* Signal from PD MCU, external pull-up */
GPIO_INT(SPI1_NSS, PIN(A, 4), GPIO_INT_BOTH | GPIO_PULL_UP, spi_event) /* SPI Chip Select */
diff --git a/board/oak/usb_pd_policy.c b/board/oak/usb_pd_policy.c
index 7bc7a594f7..bdc3b9c040 100644
--- a/board/oak/usb_pd_policy.c
+++ b/board/oak/usb_pd_policy.c
@@ -126,11 +126,6 @@ void typec_set_input_current_limit(int port, uint32_t max_ma,
/* notify host of power info change */
}
-int pd_snk_is_vbus_provided(int port)
-{
- return !gpio_get_level(GPIO_VBUS_WAKE_L);
-}
-
int pd_board_checks(void)
{
return EC_SUCCESS;
diff --git a/board/oak_pd/board.c b/board/oak_pd/board.c
index 4b37a1efb2..a2b1d09d78 100644
--- a/board/oak_pd/board.c
+++ b/board/oak_pd/board.c
@@ -16,6 +16,7 @@
#include "system.h"
#include "task.h"
#include "usb_pd.h"
+#include "usb_pd_tcpc.h"
#include "util.h"
#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
@@ -30,16 +31,6 @@ void pd_send_ec_int(void)
}
-void vbus0_evt(enum gpio_signal signal)
-{
- task_wake(TASK_ID_PD_C0);
-}
-
-void vbus1_evt(enum gpio_signal signal)
-{
- task_wake(TASK_ID_PD_C1);
-}
-
void board_config_pre_init(void)
{
/* enable SYSCFG clock */
diff --git a/board/oak_pd/board.h b/board/oak_pd/board.h
index aebdec9ac3..945dd2f57e 100644
--- a/board/oak_pd/board.h
+++ b/board/oak_pd/board.h
@@ -62,6 +62,7 @@
#define CONFIG_USB_PD_INTERNAL_COMP
#define CONFIG_USB_PD_PORT_COUNT 2
#define CONFIG_USB_PD_TCPC
+#define CONFIG_USB_PD_TCPM_VBUS
#define CONFIG_USBC_VCONN
#define CONFIG_VBOOT_HASH
#undef CONFIG_WATCHDOG
diff --git a/board/oak_pd/gpio.inc b/board/oak_pd/gpio.inc
index 9547f57bba..e5d0c67924 100644
--- a/board/oak_pd/gpio.inc
+++ b/board/oak_pd/gpio.inc
@@ -6,8 +6,8 @@
*/
/* Interrupts */
-GPIO_INT(USB_C0_VBUS_WAKE_L, PIN(C, 14), GPIO_INT_BOTH, vbus0_evt)
-GPIO_INT(USB_C1_VBUS_WAKE_L, PIN(C, 15), GPIO_INT_BOTH, vbus1_evt)
+GPIO_INT(USB_C0_VBUS_WAKE_L, PIN(C, 14), GPIO_INT_BOTH, pd_vbus_evt_p0)
+GPIO_INT(USB_C1_VBUS_WAKE_L, PIN(C, 15), GPIO_INT_BOTH, pd_vbus_evt_p1)
/* PD RX/TX */
GPIO(USB_C0_CC1_PD, PIN(A, 2), GPIO_ANALOG)