for (i = 0; i < MAX_PIPES; i++) {
                pipe_ctx = &link->dc->current_state->res_ctx.pipe_ctx[i];
-               if (pipe_ctx && pipe_ctx->stream && !pipe_ctx->stream->dpms_off &&
-                               pipe_ctx->stream->link == link && !pipe_ctx->prev_odm_pipe)
+               if (pipe_ctx && pipe_ctx->stream && !pipe_ctx->stream->dpms_off
+                               && pipe_ctx->stream->link == link && !pipe_ctx->prev_odm_pipe) {
+                       // Always use max settings here for DP 1.4a LL Compliance CTS
+                       if (link->is_automated) {
+                               pipe_ctx->link_config.dp_link_settings.lane_count =
+                                               link->verified_link_cap.lane_count;
+                               pipe_ctx->link_config.dp_link_settings.link_rate =
+                                               link->verified_link_cap.link_rate;
+                               pipe_ctx->link_config.dp_link_settings.link_spread =
+                                               link->verified_link_cap.link_spread;
+                       }
                        core_link_enable_stream(link->dc->current_state, pipe_ctx);
+               }
        }
 }
 
        }
 
        if (hpd_irq_dpcd_data.bytes.device_service_irq.bits.AUTOMATED_TEST) {
+               // Workaround for DP 1.4a LL Compliance CTS as USB4 has to share encoders unlike DP and USBC
+               link->is_automated = true;
                device_service_clear.bits.AUTOMATED_TEST = 1;
                core_link_write_dpcd(
                        link,
        struct pipe_ctx *pipes =
                        &link->dc->current_state->res_ctx.pipe_ctx[0];
        unsigned int i;
+       bool do_fallback = false;
 
 
        for (i = 0; i < MAX_PIPES; i++) {
                        memset(&link->cur_link_settings, 0,
                                sizeof(link->cur_link_settings));
 
+                       if (link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA)
+                               do_fallback = true;
+
                        perform_link_training_with_retries(
                                        link_setting,
                                        skip_video_pattern,
                                        LINK_TRAINING_ATTEMPTS,
                                        &pipes[i],
                                        SIGNAL_TYPE_DISPLAY_PORT,
-                                       false);
+                                       do_fallback);
 
                        link->dc->hwss.enable_stream(&pipes[i]);
 
 
                }
 
                if (dp_is_ch_eq_done(lane_count, dpcd_lane_status) &&
-                   dp_is_symbol_locked(link->cur_link_settings.lane_count, dpcd_lane_status) &&
-                   dp_is_interlane_aligned(dpcd_lane_status_updated)) {
-                       result =  LINK_TRAINING_SUCCESS;
-                       break;
+                               dp_is_symbol_locked(link->cur_link_settings.lane_count, dpcd_lane_status)) {
+                       /* Take into consideration corner case for DP 1.4a LL Compliance CTS as USB4
+                        * has to share encoders unlike DP and USBC
+                        */
+                       if (dp_is_interlane_aligned(dpcd_lane_status_updated) || (link->is_automated && retries_eq)) {
+                               result =  LINK_TRAINING_SUCCESS;
+                               break;
+                       }
                }
 
                /* Update VS/PE. */
         */
        if (result == LINK_TRAINING_SUCCESS) {
                msleep(5);
-               result = dp_check_link_loss_status(link, <_settings);
+               if (!link->is_automated)
+                       result = dp_check_link_loss_status(link, <_settings);
        } else if (result == LINK_TRAINING_ABORT) {
                dpia_training_abort(link, <_settings, repeater_id);
        } else {