mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
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>
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user