diff options
author | Koro Chen <koro.chen@mediatek.com> | 2016-05-25 21:25:38 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-06-16 09:40:42 -0700 |
commit | b12662080799859b326461ae498a10d61dd87e2e (patch) | |
tree | a9a02cef521e3e57cfab21839076e3a1da10c726 | |
parent | 93e2d00d03d6fc6fef5d9e2126c3785ef91dae7d (diff) | |
download | chrome-ec-b12662080799859b326461ae498a10d61dd87e2e.tar.gz |
elm: anx7688: make anx7688 always on
This makes the boot time less painful since it requires a long delay
for FW loading after power on this chip. This also makes it easier to
upgrade FW as we don't need to power on the chip before doing upgrade.
BRANCH=none
BUG=chrome-os-partner:52815
TEST=plug and unplug dongle and check DP output
plug/unplug adapter and check pd 0 state
Change-Id: Ia344c748697a3b1d06c9b442e1bf1d7227861f9b
Signed-off-by: Tang Zhentian1 <ztang@analogixsemi.com>
Signed-off-by: Koro Chen <koro.chen@mediatek.com>
Reviewed-on: https://chromium-review.googlesource.com/347181
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r-- | board/elm/board.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/board/elm/board.c b/board/elm/board.c index c0083c625b..ed985f6158 100644 --- a/board/elm/board.c +++ b/board/elm/board.c @@ -68,19 +68,8 @@ DECLARE_DEFERRED(deferred_reset_pd_mcu); void usb_evt(enum gpio_signal signal) { - /* - * check if this is from BC12 or ANX7688 CABLE_DET - * note that CABLE_DET can only trigger irq when 0 -> 1 (plug in) - */ if (!gpio_get_level(GPIO_BC12_WAKE_L)) task_set_event(TASK_ID_USB_CHG_P0, USB_CHG_EVENT_BC12, 0); - - if (!gpio_get_level(GPIO_USB_C0_CABLE_DET_L) && - gpio_get_level(GPIO_USB_C0_PWR_EN_L)) { - hook_call_deferred(&deferred_reset_pd_mcu_data, -1); - /* pull PWR_EN after 10ms */ - hook_call_deferred(&deferred_reset_pd_mcu_data, 10*MSEC); - } } #include "gpio_list.h" @@ -220,12 +209,8 @@ void deferred_reset_pd_mcu(void) case 3: /* * PWR_EN_L high, RST high - * cable detected - enable power - * cable not detected - do nothing + * enable power and wait for 10ms then pull RESET_N */ - if (gpio_get_level(GPIO_USB_C0_CABLE_DET_L)) - return; - /* enable power and wait for 10ms then pull RESET_N */ gpio_set_level(GPIO_USB_C0_PWR_EN_L, 0); hook_call_deferred(&deferred_reset_pd_mcu_data, 10*MSEC); break; @@ -239,6 +224,14 @@ void deferred_reset_pd_mcu(void) } } +static void board_power_on_pd_mcu(void) +{ + /* check if power is already on */ + if (!gpio_get_level(GPIO_USB_C0_PWR_EN_L)) + return; + hook_call_deferred(&deferred_reset_pd_mcu_data, 1*MSEC); +} + void board_reset_pd_mcu(void) { /* enable port controller's cable detection before reset */ @@ -283,7 +276,7 @@ static void board_init(void) gpio_enable_interrupt(GPIO_BC12_CABLE_INT); /* Check if typeC is already connected, and do 7688 power on flow */ - usb_evt(0); + board_power_on_pd_mcu(); /* Update VBUS supplier */ usb_charger_vbus_change(0, pd_snk_is_vbus_provided(0)); |