Commit c77b0008 authored by Max Tseng's avatar Max Tseng Committed by Alex Deucher

drm/amd/display: replay: generalize the send command function usage

Augment the function to allow send different format data in different
use case.
Reviewed-by: default avatarDennis Chan <dennis.chan@amd.com>
Acked-by: default avatarHamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: default avatarMax Tseng <max.tseng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6c22fb07
...@@ -1029,6 +1029,7 @@ enum replay_coasting_vtotal_type { ...@@ -1029,6 +1029,7 @@ enum replay_coasting_vtotal_type {
* passed to DMUB. * passed to DMUB.
*/ */
enum replay_FW_Message_type { enum replay_FW_Message_type {
Replay_Msg_Not_Support = -1,
Replay_Set_Timing_Sync_Supported, Replay_Set_Timing_Sync_Supported,
}; };
......
...@@ -46,8 +46,7 @@ struct dmub_replay_funcs { ...@@ -46,8 +46,7 @@ struct dmub_replay_funcs {
void (*replay_set_power_opt)(struct dmub_replay *dmub, unsigned int power_opt, void (*replay_set_power_opt)(struct dmub_replay *dmub, unsigned int power_opt,
uint8_t panel_inst); uint8_t panel_inst);
void (*replay_send_cmd)(struct dmub_replay *dmub, void (*replay_send_cmd)(struct dmub_replay *dmub,
enum replay_FW_Message_type msg, unsigned int panel_inst, enum replay_FW_Message_type msg, unsigned int panel_inst, union dmub_replay_cmd_set *cmd_element);
uint32_t cmd_data);
void (*replay_set_coasting_vtotal)(struct dmub_replay *dmub, uint16_t coasting_vtotal, void (*replay_set_coasting_vtotal)(struct dmub_replay *dmub, uint16_t coasting_vtotal,
uint8_t panel_inst); uint8_t panel_inst);
void (*replay_residency)(struct dmub_replay *dmub, void (*replay_residency)(struct dmub_replay *dmub,
......
...@@ -283,7 +283,7 @@ struct link_service { ...@@ -283,7 +283,7 @@ struct link_service {
const struct dc_stream_state *stream); const struct dc_stream_state *stream);
bool (*edp_send_replay_cmd)(struct dc_link *link, bool (*edp_send_replay_cmd)(struct dc_link *link,
enum replay_FW_Message_type msg, enum replay_FW_Message_type msg,
uint32_t params); union dmub_replay_cmd_set *cmd_data);
bool (*edp_set_coasting_vtotal)( bool (*edp_set_coasting_vtotal)(
struct dc_link *link, uint16_t coasting_vtotal); struct dc_link *link, uint16_t coasting_vtotal);
bool (*edp_replay_residency)(const struct dc_link *link, bool (*edp_replay_residency)(const struct dc_link *link,
......
...@@ -1014,7 +1014,7 @@ bool edp_setup_replay(struct dc_link *link, const struct dc_stream_state *stream ...@@ -1014,7 +1014,7 @@ bool edp_setup_replay(struct dc_link *link, const struct dc_stream_state *stream
*/ */
bool edp_send_replay_cmd(struct dc_link *link, bool edp_send_replay_cmd(struct dc_link *link,
enum replay_FW_Message_type msg, enum replay_FW_Message_type msg,
uint32_t cmd_data) union dmub_replay_cmd_set *cmd_data)
{ {
struct dc *dc = link->ctx->dc; struct dc *dc = link->ctx->dc;
struct dmub_replay *replay = dc->res_pool->replay; struct dmub_replay *replay = dc->res_pool->replay;
...@@ -1026,7 +1026,7 @@ bool edp_send_replay_cmd(struct dc_link *link, ...@@ -1026,7 +1026,7 @@ bool edp_send_replay_cmd(struct dc_link *link,
if (!dc_get_edp_link_panel_inst(dc, link, &panel_inst)) if (!dc_get_edp_link_panel_inst(dc, link, &panel_inst))
return false; return false;
replay->funcs->replay_send_cmd(replay, msg, cmd_data, panel_inst); replay->funcs->replay_send_cmd(replay, msg, panel_inst, cmd_data);
return true; return true;
} }
......
...@@ -59,7 +59,7 @@ bool edp_setup_replay(struct dc_link *link, ...@@ -59,7 +59,7 @@ bool edp_setup_replay(struct dc_link *link,
const struct dc_stream_state *stream); const struct dc_stream_state *stream);
bool edp_send_replay_cmd(struct dc_link *link, bool edp_send_replay_cmd(struct dc_link *link,
enum replay_FW_Message_type msg, enum replay_FW_Message_type msg,
uint32_t params); union dmub_replay_cmd_set *cmd_data);
bool edp_set_coasting_vtotal(struct dc_link *link, uint16_t coasting_vtotal); bool edp_set_coasting_vtotal(struct dc_link *link, uint16_t coasting_vtotal);
bool edp_replay_residency(const struct dc_link *link, bool edp_replay_residency(const struct dc_link *link,
unsigned int *residency, const bool is_start, const bool is_alpm); unsigned int *residency, const bool is_start, const bool is_alpm);
......
...@@ -3143,6 +3143,16 @@ struct dmub_rb_cmd_replay_set_timing_sync { ...@@ -3143,6 +3143,16 @@ struct dmub_rb_cmd_replay_set_timing_sync {
struct dmub_cmd_replay_set_timing_sync_data replay_set_timing_sync_data; struct dmub_cmd_replay_set_timing_sync_data replay_set_timing_sync_data;
}; };
/**
* Definition union of replay command set
*/
union dmub_replay_cmd_set {
/**
* Definition of DMUB_CMD__REPLAY_SET_TIMING_SYNC_SUPPORTED command data.
*/
struct dmub_cmd_replay_set_timing_sync_data sync_data;
};
/** /**
* Set of HW components that can be locked. * Set of HW components that can be locked.
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment