]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/amd/display: Revert Add HPO encoder support to Replay
authorGabe Teeger <gabe.teeger@amd.com>
Wed, 9 Jul 2025 18:12:22 +0000 (14:12 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 18 Aug 2025 21:41:43 +0000 (17:41 -0400)
This reverts commits:
commit 1f26214d268b ("drm/amd/display: Add HPO encoder support to Replay")
commit 3bfce48b109f ("drm/amd/display: Add support for Panel Replay on DP1 eDP (panel_inst=1)")
due to visual confirm issue.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Gabe Teeger <gabe.teeger@amd.com>
Signed-off-by: Wayne Lin <wayne.lin@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 92f68f6a1b297633159a3f3759e4dfc7e5b58abb)

drivers/gpu/drm/amd/display/dc/dce/dmub_replay.c
drivers/gpu/drm/amd/display/dc/dce/dmub_replay.h
drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c
drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h

index e7a318e26d38ace2678f8233bdf2a48441a79bbf..fcd3d86ad5173a0e6c7663c7624857eee9526525 100644 (file)
@@ -4,7 +4,6 @@
 
 #include "dc.h"
 #include "dc_dmub_srv.h"
-#include "dc_dp_types.h"
 #include "dmub/dmub_srv.h"
 #include "core_types.h"
 #include "dmub_replay.h"
@@ -44,45 +43,21 @@ static void dmub_replay_get_state(struct dmub_replay *dmub, enum replay_state *s
 /*
  * Enable/Disable Replay.
  */
-static void dmub_replay_enable(struct dmub_replay *dmub, bool enable, bool wait, uint8_t panel_inst,
-                              struct dc_link *link)
+static void dmub_replay_enable(struct dmub_replay *dmub, bool enable, bool wait, uint8_t panel_inst)
 {
        union dmub_rb_cmd cmd;
        struct dc_context *dc = dmub->ctx;
        uint32_t retry_count;
        enum replay_state state = REPLAY_STATE_0;
-       struct pipe_ctx *pipe_ctx = NULL;
-       struct resource_context *res_ctx = &link->ctx->dc->current_state->res_ctx;
-       uint8_t i;
 
        memset(&cmd, 0, sizeof(cmd));
        cmd.replay_enable.header.type = DMUB_CMD__REPLAY;
        cmd.replay_enable.data.panel_inst = panel_inst;
 
        cmd.replay_enable.header.sub_type = DMUB_CMD__REPLAY_ENABLE;
-       if (enable) {
+       if (enable)
                cmd.replay_enable.data.enable = REPLAY_ENABLE;
-               // hpo stream/link encoder assignments are not static, need to update everytime we try to enable replay
-               if (link->cur_link_settings.link_rate >= LINK_RATE_UHBR10) {
-                       for (i = 0; i < MAX_PIPES; i++) {
-                               if (res_ctx &&
-                                       res_ctx->pipe_ctx[i].stream &&
-                                       res_ctx->pipe_ctx[i].stream->link &&
-                                       res_ctx->pipe_ctx[i].stream->link == link &&
-                                       res_ctx->pipe_ctx[i].stream->link->connector_signal == SIGNAL_TYPE_EDP) {
-                                       pipe_ctx = &res_ctx->pipe_ctx[i];
-                                       //TODO: refactor for multi edp support
-                                       break;
-                               }
-                       }
-
-                       if (!pipe_ctx)
-                               return;
-
-                       cmd.replay_enable.data.hpo_stream_enc_inst = pipe_ctx->stream_res.hpo_dp_stream_enc->inst;
-                       cmd.replay_enable.data.hpo_link_enc_inst = pipe_ctx->link_res.hpo_dp_link_enc->inst;
-               }
-       } else
+       else
                cmd.replay_enable.data.enable = REPLAY_DISABLE;
 
        cmd.replay_enable.header.payload_bytes = sizeof(struct dmub_rb_cmd_replay_enable_data);
@@ -174,17 +149,6 @@ static bool dmub_replay_copy_settings(struct dmub_replay *dmub,
        copy_settings_data->digbe_inst                          = replay_context->digbe_inst;
        copy_settings_data->digfe_inst                          = replay_context->digfe_inst;
 
-       if (link->cur_link_settings.link_rate >= LINK_RATE_UHBR10) {
-               if (pipe_ctx->stream_res.hpo_dp_stream_enc)
-                       copy_settings_data->hpo_stream_enc_inst = pipe_ctx->stream_res.hpo_dp_stream_enc->inst;
-               else
-                       copy_settings_data->hpo_stream_enc_inst = 0;
-               if (pipe_ctx->link_res.hpo_dp_link_enc)
-                       copy_settings_data->hpo_link_enc_inst = pipe_ctx->link_res.hpo_dp_link_enc->inst;
-               else
-                       copy_settings_data->hpo_link_enc_inst = 0;
-       }
-
        if (pipe_ctx->plane_res.dpp)
                copy_settings_data->dpp_inst                    = pipe_ctx->plane_res.dpp->inst;
        else
@@ -247,7 +211,6 @@ static void dmub_replay_set_coasting_vtotal(struct dmub_replay *dmub,
        pCmd->header.type = DMUB_CMD__REPLAY;
        pCmd->header.sub_type = DMUB_CMD__REPLAY_SET_COASTING_VTOTAL;
        pCmd->header.payload_bytes = sizeof(struct dmub_cmd_replay_set_coasting_vtotal_data);
-       pCmd->replay_set_coasting_vtotal_data.panel_inst = panel_inst;
        pCmd->replay_set_coasting_vtotal_data.coasting_vtotal = (coasting_vtotal & 0xFFFF);
        pCmd->replay_set_coasting_vtotal_data.coasting_vtotal_high = (coasting_vtotal & 0xFFFF0000) >> 16;
 
index ccbe385e132c47033f0c2b3f284af736644dadb2..e6346c0ffc0e444392c09b421404cd3c50284ba7 100644 (file)
@@ -19,7 +19,7 @@ struct dmub_replay_funcs {
        void (*replay_get_state)(struct dmub_replay *dmub, enum replay_state *state,
                uint8_t panel_inst);
        void (*replay_enable)(struct dmub_replay *dmub, bool enable, bool wait,
-               uint8_t panel_inst, struct dc_link *link);
+               uint8_t panel_inst);
        bool (*replay_copy_settings)(struct dmub_replay *dmub, struct dc_link *link,
                struct replay_context *replay_context, uint8_t panel_inst);
        void (*replay_set_power_opt)(struct dmub_replay *dmub, unsigned int power_opt,
index e7927b8f5ba35170adfaaa35580c0fe6a521b42d..98ec9b5a559c80463c0c07fc82a37a92596864e2 100644 (file)
@@ -944,7 +944,7 @@ bool edp_set_replay_allow_active(struct dc_link *link, const bool *allow_active,
                // TODO: Handle mux change case if force_static is set
                // If force_static is set, just change the replay_allow_active state directly
                if (replay != NULL && link->replay_settings.replay_feature_enabled)
-                       replay->funcs->replay_enable(replay, *allow_active, wait, panel_inst, link);
+                       replay->funcs->replay_enable(replay, *allow_active, wait, panel_inst);
                link->replay_settings.replay_allow_active = *allow_active;
        }
 
index c587b3441e07091b9875f09f53c752561484b285..6a69a788abe801d49a6fbd66f793aca734ee45f3 100644 (file)
@@ -4047,14 +4047,6 @@ struct dmub_cmd_replay_copy_settings_data {
         * DIG BE HW instance.
         */
        uint8_t digbe_inst;
-       /**
-        * @hpo_stream_enc_inst: HPO stream encoder instance
-        */
-       uint8_t hpo_stream_enc_inst;
-       /**
-        * @hpo_link_enc_inst: HPO link encoder instance
-        */
-       uint8_t hpo_link_enc_inst;
        /**
         * AUX HW instance.
         */
@@ -4159,18 +4151,6 @@ struct dmub_rb_cmd_replay_enable_data {
         * This does not support HDMI/DP2 for now.
         */
        uint8_t phy_rate;
-       /**
-        * @hpo_stream_enc_inst: HPO stream encoder instance
-        */
-       uint8_t hpo_stream_enc_inst;
-       /**
-        * @hpo_link_enc_inst: HPO link encoder instance
-        */
-       uint8_t hpo_link_enc_inst;
-       /**
-        * @pad: Align structure to 4 byte boundary.
-        */
-       uint8_t pad[2];
 };
 
 /**