if ((prev_sink != NULL) && ((edid_status == EDID_THE_SAME) || (edid_status == EDID_OK)))
                        same_edid = is_same_edid(&prev_sink->dc_edid, &sink->dc_edid);
 
-               // If both edid and dpcd are the same, then discard new sink and revert back to original sink
-               if ((same_edid) && (same_dpcd)) {
-                       link_disconnect_remap(prev_sink, link);
-                       sink = prev_sink;
-                       prev_sink = NULL;
-               } else {
-                       if (link->connector_signal == SIGNAL_TYPE_DISPLAY_PORT &&
-                                       sink_caps.transaction_type ==
-                                               DDC_TRANSACTION_TYPE_I2C_OVER_AUX) {
-                               /*
-                                * TODO debug why Dell 2413 doesn't like
-                                *  two link trainings
-                                */
+               if (link->connector_signal == SIGNAL_TYPE_DISPLAY_PORT &&
+                       sink_caps.transaction_type == DDC_TRANSACTION_TYPE_I2C_OVER_AUX &&
+                       reason != DETECT_REASON_HPDRX) {
+                       /*
+                        * TODO debug why Dell 2413 doesn't like
+                        *  two link trainings
+                        */
 
-                               /* deal with non-mst cases */
-                               for (i = 0; i < LINK_TRAINING_MAX_VERIFY_RETRY; i++) {
-                                       int fail_count = 0;
+                       /* deal with non-mst cases */
+                       for (i = 0; i < LINK_TRAINING_MAX_VERIFY_RETRY; i++) {
+                               int fail_count = 0;
 
-                                       dp_verify_link_cap(link,
-                                                         &link->reported_link_cap,
-                                                         &fail_count);
+                               dp_verify_link_cap(link,
+                                                 &link->reported_link_cap,
+                                                 &fail_count);
 
-                                       if (fail_count == 0)
-                                               break;
-                               }
+                               if (fail_count == 0)
+                                       break;
                        }
 
-                       /* HDMI-DVI Dongle */
-                       if (sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A &&
-                                       !sink->edid_caps.edid_hdmi)
-                               sink->sink_signal = SIGNAL_TYPE_DVI_SINGLE_LINK;
+               } else {
+                       // If edid is the same, then discard new sink and revert back to original sink
+                       if (same_edid) {
+                               link_disconnect_remap(prev_sink, link);
+                               sink = prev_sink;
+                               prev_sink = NULL;
+
+                       }
                }
 
+               /* HDMI-DVI Dongle */
+               if (sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A &&
+                               !sink->edid_caps.edid_hdmi)
+                       sink->sink_signal = SIGNAL_TYPE_DVI_SINGLE_LINK;
+
                /* Connectivity log: detection */
                for (i = 0; i < sink->dc_edid.length / EDID_BLOCK_SIZE; i++) {
                        CONN_DATA_DETECT(link,