Browse Source

Merge "disp: msm: dp: force disconnect at simulation mode off"

qctecmdr 6 years ago
parent
commit
c396d0bbc1
1 changed files with 15 additions and 1 deletions
  1. 15 1
      msm/dp/dp_debug.c

+ 15 - 1
msm/dp/dp_debug.c

@@ -27,6 +27,7 @@ struct dp_debug_private {
 	u32 dpcd_size;
 	u32 dpcd_size;
 
 
 	u32 mst_con_id;
 	u32 mst_con_id;
+	bool hotplug;
 
 
 	char exe_mode[SZ_32];
 	char exe_mode[SZ_32];
 	char reg_dump[SZ_32];
 	char reg_dump[SZ_32];
@@ -338,10 +339,18 @@ static ssize_t dp_debug_write_hpd(struct file *file,
 		goto end;
 		goto end;
 
 
 	hpd &= hpd_data_mask;
 	hpd &= hpd_data_mask;
+	debug->hotplug = !!(hpd & BIT(0));
 
 
 	debug->dp_debug.psm_enabled = !!(hpd & BIT(1));
 	debug->dp_debug.psm_enabled = !!(hpd & BIT(1));
 
 
-	debug->hpd->simulate_connect(debug->hpd, !!(hpd & BIT(0)));
+	/*
+	 * print hotplug value as this code is executed
+	 * only while running in debug mode which is manually
+	 * triggered by a tester or a script.
+	 */
+	pr_info("%s\n", debug->hotplug ? "[CONNECT]" : "[DISCONNECT]");
+
+	debug->hpd->simulate_connect(debug->hpd, debug->hotplug);
 end:
 end:
 	return len;
 	return len;
 }
 }
@@ -1504,6 +1513,11 @@ static void dp_debug_set_sim_mode(struct dp_debug_private *debug, bool sim)
 		debug->aux->set_sim_mode(debug->aux, true,
 		debug->aux->set_sim_mode(debug->aux, true,
 			debug->edid, debug->dpcd);
 			debug->edid, debug->dpcd);
 	} else {
 	} else {
+		if (debug->hotplug) {
+			pr_warn("sim mode off before hotplug disconnect\n");
+			debug->hpd->simulate_connect(debug->hpd, false);
+			debug->hotplug = false;
+		}
 		debug->aux->abort(debug->aux);
 		debug->aux->abort(debug->aux);
 		debug->ctrl->abort(debug->ctrl);
 		debug->ctrl->abort(debug->ctrl);