drm/amd/display: Only clear symclk otg flag for HDMI
authorjsg <jsg@openbsd.org>
Tue, 6 Feb 2024 03:34:28 +0000 (03:34 +0000)
committerjsg <jsg@openbsd.org>
Tue, 6 Feb 2024 03:34:28 +0000 (03:34 +0000)
From Alvin Lee
49b4cab7bcbdfe621162405502283fc9cb3ef77f in linux-6.6.y/6.6.16
dff45f03f508c92cd8eb2050e27b726726b8ae0b in mainline linux

sys/dev/pci/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
sys/dev/pci/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
sys/dev/pci/drm/amd/display/dc/dcn20/dcn20_hwseq.c
sys/dev/pci/drm/amd/display/dc/dcn31/dcn31_hwseq.c

index a95b2fe..f035a07 100644 (file)
@@ -2124,7 +2124,8 @@ static void dce110_reset_hw_ctx_wrap(
                                BREAK_TO_DEBUGGER();
                        }
                        pipe_ctx_old->stream_res.tg->funcs->disable_crtc(pipe_ctx_old->stream_res.tg);
-                       pipe_ctx_old->stream->link->phy_state.symclk_ref_cnts.otg = 0;
+                       if (dc_is_hdmi_tmds_signal(pipe_ctx_old->stream->signal))
+                               pipe_ctx_old->stream->link->phy_state.symclk_ref_cnts.otg = 0;
                        pipe_ctx_old->plane_res.mi->funcs->free_mem_input(
                                        pipe_ctx_old->plane_res.mi, dc->current_state->stream_count);
 
index 13ccb57..db1d7be 100644 (file)
@@ -1054,7 +1054,8 @@ static void dcn10_reset_back_end_for_pipe(
                if (pipe_ctx->stream_res.tg->funcs->set_drr)
                        pipe_ctx->stream_res.tg->funcs->set_drr(
                                        pipe_ctx->stream_res.tg, NULL);
-               pipe_ctx->stream->link->phy_state.symclk_ref_cnts.otg = 0;
+               if (dc_is_hdmi_tmds_signal(pipe_ctx->stream->signal))
+                       pipe_ctx->stream->link->phy_state.symclk_ref_cnts.otg = 0;
        }
 
        for (i = 0; i < dc->res_pool->pipe_count; i++)
index 2c4bcbc..1e38037 100644 (file)
@@ -2533,7 +2533,8 @@ static void dcn20_reset_back_end_for_pipe(
                 * the case where the same symclk is shared across multiple otg
                 * instances
                 */
-               link->phy_state.symclk_ref_cnts.otg = 0;
+               if (dc_is_hdmi_tmds_signal(pipe_ctx->stream->signal))
+                       link->phy_state.symclk_ref_cnts.otg = 0;
                if (link->phy_state.symclk_state == SYMCLK_ON_TX_OFF) {
                        link_hwss->disable_link_output(link,
                                        &pipe_ctx->link_res, pipe_ctx->stream->signal);
index 2a7f476..22da200 100644 (file)
@@ -523,7 +523,8 @@ static void dcn31_reset_back_end_for_pipe(
        if (pipe_ctx->stream_res.tg->funcs->set_odm_bypass)
                pipe_ctx->stream_res.tg->funcs->set_odm_bypass(
                                pipe_ctx->stream_res.tg, &pipe_ctx->stream->timing);
-       pipe_ctx->stream->link->phy_state.symclk_ref_cnts.otg = 0;
+       if (dc_is_hdmi_tmds_signal(pipe_ctx->stream->signal))
+               pipe_ctx->stream->link->phy_state.symclk_ref_cnts.otg = 0;
 
        if (pipe_ctx->stream_res.tg->funcs->set_drr)
                pipe_ctx->stream_res.tg->funcs->set_drr(