diff options
author | li feng <li1.feng@intel.com> | 2016-10-13 17:08:45 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-10-28 21:07:00 -0700 |
commit | 8b0aac61dd00eba673ac623fbf3b1eababdafb85 (patch) | |
tree | be1400f7bc0484009ffcce0a0f1d8b653d02e96b /board/reef | |
parent | c457822a811684f6892010011922d67aadc4933b (diff) | |
download | chrome-ec-8b0aac61dd00eba673ac623fbf3b1eababdafb85.tar.gz |
reef: clear hpd bit in board level tcpc init
PD alternate mode is covered in tcpc interface. So tcpci_tcpm_init()
doesn't reset HPD. If keeping HDMI/DP type-C cable connected, doing
sysjump sets HPD signal to high while it's already high(this high comes
from previous state), then OS doesn't output to HDMI/DP monitor.
Reef Type-C port 1 follows TCPCI and has this issue.
BUG=chrome-os-partner:57689
BRANCH=none
TEST=Connect HDMI/DP type-C dongle, boot up system, OS detects HDMI/DP
monitor and extends screen to it; in console doing "sysjump RO"
or "sysjump RW", display goes out then comes back.
Change-Id: I12239a86490f29d0123fe8bad1b813d3be28d041
Signed-off-by: li feng <li1.feng@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/398444
Commit-Ready: Li1 Feng <li1.feng@intel.com>
Tested-by: Li1 Feng <li1.feng@intel.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'board/reef')
-rw-r--r-- | board/reef/board.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/board/reef/board.c b/board/reef/board.c index 22ca518c39..68d3e5f95c 100644 --- a/board/reef/board.c +++ b/board/reef/board.c @@ -303,6 +303,8 @@ void board_print_tcpc_fw_version(int port) void board_tcpc_init(void) { + int port; + /* Only reset TCPC if not sysjump */ if (!system_jumped_to_this_image()) board_reset_pd_mcu(); @@ -312,6 +314,16 @@ void board_tcpc_init(void) /* Enable TCPC1 interrupt */ gpio_enable_interrupt(GPIO_USB_C1_PD_INT_ODL); + + /* + * Initialize HPD to low; after sysjump SOC needs to see + * HPD pulse to enable video path + */ + for (port = 0; port < CONFIG_USB_PD_PORT_COUNT; port++) { + const struct usb_mux *mux = &usb_muxes[port]; + + mux->hpd_update(port, 0, 0); + } } DECLARE_HOOK(HOOK_INIT, board_tcpc_init, HOOK_PRIO_INIT_I2C+1); |