Commit 0aa86640 authored by Gabe Teeger's avatar Gabe Teeger Committed by Alex Deucher
Browse files

drm/amd/display: Revert Add HPO encoder support to Replay



This reverts commits:
commit 1f26214d ("drm/amd/display: Add HPO encoder support to Replay")
commit 3bfce48b ("drm/amd/display: Add support for Panel Replay on DP1 eDP (panel_inst=1)")
due to visual confirm issue.

Reviewed-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: default avatarGabe Teeger <gabe.teeger@amd.com>
Signed-off-by: default avatarWayne Lin <wayne.lin@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 92f68f6a)
parent c17b750b
Loading
Loading
Loading
Loading
+3 −40
Original line number Diff line number Diff line
@@ -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;

+1 −1
Original line number Diff line number Diff line
@@ -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,
+1 −1
Original line number Diff line number Diff line
@@ -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;
	}

+0 −20
Original line number Diff line number Diff line
@@ -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];
};

/**