Revert "drm/amd/display: make clk_mgr call enable_pme_wa" [Linux 5.3]

This Linux kernel change "Revert “drm/amd/display: make clk_mgr call enable_pme_wa”" is included in the Linux 5.3 release. This change is authored by Alex Deucher <alexander.deucher [at] amd.com> on Mon Jun 17 13:04:43 2019 -0500. The commit for this change in Linux stable tree is 76d981a (patch).

Revert "drm/amd/display: make clk_mgr call enable_pme_wa"

This reverts commit a1651530a3bacf1d796fdb7bc587faef9f305d36.

Revert this to apply the version that includes DCN2 support.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

There are 39 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 .../drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c | 14 ------------
 .../amd/display/dc/dce110/dce110_hw_sequencer.c    | 25 ++++++++++++++++------
 2 files changed, 19 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
index 183ca39..31db9b55 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
@@ -215,23 +215,9 @@ static void rv1_update_clocks(struct clk_mgr *clk_mgr_base,
    }
 }

-static void rv1_enable_pme_wa(struct clk_mgr *clk_mgr_base)
-{
-   struct clk_mgr_internal *clk_mgr = TO_CLK_MGR_INTERNAL(clk_mgr_base);
-   struct pp_smu_funcs_rv *pp_smu = NULL;
-
-   if (clk_mgr->pp_smu) {
-       pp_smu = &clk_mgr->pp_smu->rv_funcs;
-
-       if (pp_smu->set_pme_wa_enable)
-           pp_smu->set_pme_wa_enable(&pp_smu->pp_smu);
-   }
-}
-
 static struct clk_mgr_funcs rv1_clk_funcs = {
    .get_dp_ref_clk_frequency = dce12_get_dp_ref_freq_khz,
    .update_clocks = rv1_update_clocks,
-   .enable_pme_wa = rv1_enable_pme_wa,
 };

 static struct clk_mgr_internal_funcs rv1_clk_internal_funcs = {
diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
index 5a83141..2a7ac45 100644
--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
@@ -939,12 +939,26 @@ void hwss_edp_backlight_control(
        edp_receiver_ready_T9(link);
 }

+// Static helper function which calls the correct function
+// based on pp_smu version
+static void set_pme_wa_enable_by_version(struct dc *dc)
+{
+   struct pp_smu_funcs *pp_smu = NULL;
+
+   if (dc->res_pool->pp_smu)
+       pp_smu = dc->res_pool->pp_smu;
+
+   if (pp_smu) {
+       if (pp_smu->ctx.ver == PP_SMU_VER_RV && pp_smu->rv_funcs.set_pme_wa_enable)
+           pp_smu->rv_funcs.set_pme_wa_enable(&(pp_smu->ctx));
+   }
+}
+
 void dce110_enable_audio_stream(struct pipe_ctx *pipe_ctx)
 {
    /* notify audio driver for audio modes of monitor */
    struct dc *core_dc = pipe_ctx->stream->ctx->dc;
    struct pp_smu_funcs *pp_smu = NULL;
-   struct clk_mgr *clk_mgr = core_dc->clk_mgr;
    unsigned int i, num_audio = 1;

    if (pipe_ctx->stream_res.audio && pipe_ctx->stream_res.audio->enabled == true)
@@ -962,9 +976,9 @@ void dce110_enable_audio_stream(struct pipe_ctx *pipe_ctx)

        pipe_ctx->stream_res.audio->funcs->az_enable(pipe_ctx->stream_res.audio);

-       if (num_audio >= 1 && clk_mgr->funcs->enable_pme_wa)
+       if (num_audio >= 1 && pp_smu != NULL)
            /*this is the first audio. apply the PME w/a in order to wake AZ from D3*/
-           clk_mgr->funcs->enable_pme_wa(clk_mgr);
+           set_pme_wa_enable_by_version(core_dc);
        /* un-mute audio */
        /* TODO: audio should be per stream rather than per link */
        pipe_ctx->stream_res.stream_enc->funcs->audio_mute_control(
@@ -978,7 +992,6 @@ void dce110_disable_audio_stream(struct pipe_ctx *pipe_ctx, int option)
 {
    struct dc *dc = pipe_ctx->stream->ctx->dc;
    struct pp_smu_funcs *pp_smu = NULL;
-   struct clk_mgr *clk_mgr = dc->clk_mgr;

    if (pipe_ctx->stream_res.audio && pipe_ctx->stream_res.audio->enabled == false)
        return;
@@ -1007,9 +1020,9 @@ void dce110_disable_audio_stream(struct pipe_ctx *pipe_ctx, int option)
            update_audio_usage(&dc->current_state->res_ctx, dc->res_pool, pipe_ctx->stream_res.audio, false);
            pipe_ctx->stream_res.audio = NULL;
        }
-       if (clk_mgr->funcs->enable_pme_wa)
+       if (pp_smu != NULL)
            /*this is the first audio. apply the PME w/a in order to wake AZ from D3*/
-           clk_mgr->funcs->enable_pme_wa(clk_mgr);
+           set_pme_wa_enable_by_version(dc);

        /* TODO: notify audio driver for if audio modes list changed
         * add audio mode list change flag */

Leave a Reply

Your email address will not be published. Required fields are marked *