diff --git a/msm/dp/dp_debug.c b/msm/dp/dp_debug.c index 95c09013fe..e0e07450b3 100644 --- a/msm/dp/dp_debug.c +++ b/msm/dp/dp_debug.c @@ -27,6 +27,7 @@ struct dp_debug_private { u32 dpcd_size; u32 mst_con_id; + bool hotplug; char exe_mode[SZ_32]; char reg_dump[SZ_32]; @@ -338,10 +339,18 @@ static ssize_t dp_debug_write_hpd(struct file *file, goto end; hpd &= hpd_data_mask; + debug->hotplug = !!(hpd & BIT(0)); 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: return len; } @@ -1454,6 +1463,11 @@ static void dp_debug_set_sim_mode(struct dp_debug_private *debug, bool sim) debug->aux->set_sim_mode(debug->aux, true, debug->edid, debug->dpcd); } 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->ctrl->abort(debug->ctrl);