Browse Source

Merge "disp: msm: dp: reset combo phy if peer_usb_comm is disabled" into display-kernel.lnx.4.19

Linux Build Service Account 5 years ago
parent
commit
583633fe3d
4 changed files with 8 additions and 3 deletions
  1. 1 0
      msm/dp/dp_catalog.c
  2. 2 1
      msm/dp/dp_display.c
  3. 1 0
      msm/dp/dp_hpd.h
  4. 4 2
      msm/dp/dp_usbpd.c

+ 1 - 0
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;
 	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_RESET_OVRD_CTRL, 0x0a);
 	dp_write(USB3_DP_COM_PHY_MODE_CTRL, 0x02);
 	dp_write(USB3_DP_COM_PHY_MODE_CTRL, 0x02);
 	dp_write(USB3_DP_COM_SW_RESET, 0x01);
 	dp_write(USB3_DP_COM_SW_RESET, 0x01);

+ 2 - 1
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)
 	if (dp->hpd->orientation == ORIENTATION_CC2)
 		flip = true;
 		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->power->init(dp->power, flip);
 	dp->hpd->host_init(dp->hpd, &dp->catalog->hpd);
 	dp->hpd->host_init(dp->hpd, &dp->catalog->hpd);

+ 1 - 0
msm/dp/dp_hpd.h

@@ -63,6 +63,7 @@ struct dp_hpd {
 	bool hpd_irq;
 	bool hpd_irq;
 	bool alt_mode_cfg_done;
 	bool alt_mode_cfg_done;
 	bool multi_func;
 	bool multi_func;
+	bool peer_usb_comm;
 
 
 	void (*isr)(struct dp_hpd *dp_hpd);
 	void (*isr)(struct dp_hpd *dp_hpd);
 	int (*register_hpd)(struct dp_hpd *dp_hpd);
 	int (*register_hpd)(struct dp_hpd *dp_hpd);

+ 4 - 2
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;
 	struct dp_usbpd_private *pd;
 
 
@@ -245,7 +246,8 @@ static void dp_usbpd_connect_cb(struct usbpd_svid_handler *hdlr)
 		return;
 		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);
 	dp_usbpd_send_event(pd, DP_USBPD_EVT_DISCOVER);
 }
 }