diff --git a/msm/dp/dp_catalog.c b/msm/dp/dp_catalog.c index 32f4233e62..c928c1a345 100644 --- a/msm/dp/dp_catalog.c +++ b/msm/dp/dp_catalog.c @@ -1349,6 +1349,7 @@ static void dp_catalog_ctrl_usb_reset(struct dp_catalog_ctrl *ctrl, bool flip) io_data = catalog->io.usb3_dp_com; + DP_DEBUG("Program PHYMODE to DP only\n"); dp_write(USB3_DP_COM_RESET_OVRD_CTRL, 0x0a); dp_write(USB3_DP_COM_PHY_MODE_CTRL, 0x02); dp_write(USB3_DP_COM_SW_RESET, 0x01); diff --git a/msm/dp/dp_display.c b/msm/dp/dp_display.c index bee9567d19..45b1a689ca 100644 --- a/msm/dp/dp_display.c +++ b/msm/dp/dp_display.c @@ -781,7 +781,8 @@ static void dp_display_host_init(struct dp_display_private *dp) if (dp->hpd->orientation == ORIENTATION_CC2) flip = true; - reset = dp->debug->sim_mode ? false : !dp->hpd->multi_func; + reset = dp->debug->sim_mode ? false : + (!dp->hpd->multi_func || !dp->hpd->peer_usb_comm); dp->power->init(dp->power, flip); dp->hpd->host_init(dp->hpd, &dp->catalog->hpd); diff --git a/msm/dp/dp_hpd.h b/msm/dp/dp_hpd.h index 7fb5725485..86806fbdf7 100644 --- a/msm/dp/dp_hpd.h +++ b/msm/dp/dp_hpd.h @@ -63,6 +63,7 @@ struct dp_hpd { bool hpd_irq; bool alt_mode_cfg_done; bool multi_func; + bool peer_usb_comm; void (*isr)(struct dp_hpd *dp_hpd); int (*register_hpd)(struct dp_hpd *dp_hpd); diff --git a/msm/dp/dp_usbpd.c b/msm/dp/dp_usbpd.c index 2187e6048a..030fe618dc 100644 --- a/msm/dp/dp_usbpd.c +++ b/msm/dp/dp_usbpd.c @@ -235,7 +235,8 @@ static void dp_usbpd_send_event(struct dp_usbpd_private *pd, } } -static void dp_usbpd_connect_cb(struct usbpd_svid_handler *hdlr) +static void dp_usbpd_connect_cb(struct usbpd_svid_handler *hdlr, + bool peer_usb_comm) { struct dp_usbpd_private *pd; @@ -245,7 +246,8 @@ static void dp_usbpd_connect_cb(struct usbpd_svid_handler *hdlr) return; } - DP_DEBUG("\n"); + DP_DEBUG("peer_usb_comm: %d\n"); + pd->dp_usbpd.base.peer_usb_comm = peer_usb_comm; dp_usbpd_send_event(pd, DP_USBPD_EVT_DISCOVER); }