if (pipe_ctx->stream->timing.flags.DSC) {
                        if (dc_is_dp_signal(pipe_ctx->stream->signal) ||
-                                       dc_is_virtual_signal(pipe_ctx->stream->signal))
-                               dp_set_dsc_enable(pipe_ctx, true);
+                                       dc_is_virtual_signal(pipe_ctx->stream->signal)) {
+                               /* Here we only need to enable DSC on RX. DSC HW programming
+                                * was done earlier, as part of timing programming.
+                                */
+                               dp_set_dsc_on_rx(pipe_ctx, true);
+                       }
                }
+
                dc->hwss.enable_stream(pipe_ctx);
 
                /* Set DPS PPS SDP (AKA "info frames") */
        } else { // if (IS_FPGA_MAXIMUS_DC(dc->ctx->dce_environment))
                if (dc_is_dp_signal(pipe_ctx->stream->signal) ||
                                dc_is_virtual_signal(pipe_ctx->stream->signal))
-                       dp_set_dsc_enable(pipe_ctx, true);
+                       dp_set_dsc_on_rx(pipe_ctx, true);
 
        }
 }
 
        DC_LOG_DSC("\tslice_width %d", config->slice_width);
 }
 
-static bool dp_set_dsc_on_rx(struct pipe_ctx *pipe_ctx, bool enable)
+bool dp_set_dsc_on_rx(struct pipe_ctx *pipe_ctx, bool enable)
 {
        struct dc *dc = pipe_ctx->stream->ctx->dc;
        struct dc_stream_state *stream = pipe_ctx->stream;
 
 
        /* TODO check if timing_changed, disable stream if timing changed */
 
+       /* Have to setup DSC here to make sure the bandwidth sent to DIG BE won't be bigger than
+        * what the link and/or DIG BE can handle. VBID[6]/CompressedStream_flag will be automatically
+        * set at a later time when the video is enabled (DP_VID_STREAM_EN = 1).
+        */
+       if (pipe_ctx->stream->timing.flags.DSC)
+               dp_set_dsc_on_stream(pipe_ctx, true);
+
        for (odm_pipe = pipe_ctx->next_odm_pipe; odm_pipe; odm_pipe = odm_pipe->next_odm_pipe) {
                opp_inst[opp_cnt] = odm_pipe->stream_res.opp->inst;
                opp_cnt++;
 
 bool dp_set_dsc_enable(struct pipe_ctx *pipe_ctx, bool enable);
 bool dp_set_dsc_pps_sdp(struct pipe_ctx *pipe_ctx, bool enable);
 void dp_set_dsc_on_stream(struct pipe_ctx *pipe_ctx, bool enable);
+bool dp_set_dsc_on_rx(struct pipe_ctx *pipe_ctx, bool enable);
 bool dp_update_dsc_config(struct pipe_ctx *pipe_ctx);
 
 #endif /* __DC_LINK_DP_H__ */