From 41dea76433c46ba0ecc797be968368410e7dc84b Mon Sep 17 00:00:00 2001 From: Bruce Date: Thu, 10 Nov 2016 17:18:03 +0800 Subject: [PATCH] Snappy: 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. BUG=None BRANCH=none TEST=make buildall Change-Id: I9b23cee82716d9073c98b6b53a0e54d587baf0ea Signed-off-by: Bruce.Wan Reviewed-on: https://chromium-review.googlesource.com/409732 Commit-Ready: Devin Lu Tested-by: Devin Lu Reviewed-by: Aaron Durbin --- board/snappy/board.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/board/snappy/board.c b/board/snappy/board.c index 8065cf8bab..6551ad4a22 100644 --- a/board/snappy/board.c +++ b/board/snappy/board.c @@ -301,6 +301,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(); @@ -310,6 +312,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);