replay_settings
if (acrtc_state->stream->link->replay_settings.replay_allow_active)
amdgpu_dm_connector->dc_link->replay_settings.config.replay_supported) {
amdgpu_dm_connector->dc_link->replay_settings.config.replay_supported = false;
amdgpu_dm_connector->dc_link->replay_settings.replay_feature_enabled = false;
bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled;
bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled;
struct replay_settings *pr = &acrtc_state->stream->link->replay_settings;
acrtc_state->stream->link->replay_settings.replay_feature_enabled) {
bool is_sr_active = (link->replay_settings.replay_allow_active ||
if (link->replay_settings.replay_feature_enabled && !vrr_active &&
struct replay_settings *pr = &acrtc_state->stream->link->replay_settings;
if (link->replay_settings.config.replay_supported) {
seq_printf(m, "Config support: %s\n", str_yes_no(link->replay_settings.config.replay_supported));
pr_config = &link->replay_settings.config;
link->replay_settings.replay_feature_enabled = true;
if (link->replay_settings.config.replay_supported)
if (stream->link->replay_settings.config.replay_supported)
if (link->replay_settings.replay_feature_enabled) {
if (active && !link->replay_settings.replay_allow_active) {
} else if (!active && link->replay_settings.replay_allow_active) {
if (link->replay_settings.replay_feature_enabled)
if (link->replay_settings.replay_feature_enabled)
struct replay_settings replay_settings;
if (pipe_ctx->stream->link->replay_settings.config.replay_supported)
if (link->replay_settings.replay_feature_enabled)
copy_settings_data->debug.u32All = link->replay_settings.config.debug_flags;
copy_settings_data->smu_optimizations_en = link->replay_settings.replay_smu_opt_enable;
copy_settings_data->replay_timing_sync_supported = link->replay_settings.config.replay_timing_sync_supported;
copy_settings_data->replay_support_fast_resync_in_ultra_sleep_mode = link->replay_settings.config.replay_support_fast_resync_in_ultra_sleep_mode;
copy_settings_data->flags.bitfields.alpm_mode = (enum dmub_alpm_mode)link->replay_settings.config.alpm_mode;
if (link->replay_settings.config.alpm_mode == DC_ALPM_AUXLESS) {
bool is_replay = link && link->replay_settings.replay_feature_enabled;
bool is_replay = link && link->replay_settings.replay_feature_enabled;
bool is_replay = link && link->replay_settings.replay_feature_enabled;
pipe_ctx->stream->link->replay_settings.replay_feature_enabled = false;
if (pipe_ctx->stream->link->replay_settings.replay_feature_enabled)
bool is_replay = link && link->replay_settings.replay_feature_enabled;
if (!link->replay_settings.replay_feature_enabled)
link->replay_settings.config.replay_error_status.raw |= replay_error_status.raw;
link->replay_settings.replay_desync_error_fail_count++;
if (link->replay_settings.config.force_disable_desync_error_check)
if (link->replay_settings.replay_allow_active) {
if (!(link->replay_settings.config.replay_supported))
link->replay_settings.config.replay_error_status.raw = 0;
replay_context.os_request_force_ffu = link->replay_settings.config.os_request_force_ffu;
link->replay_settings.replay_feature_enabled =
if (link->replay_settings.replay_feature_enabled) {
link->replay_settings.config.replay_timing_sync_supported;
alpm_config.bits.ENABLE = link->replay_settings.config.alpm_mode != DC_ALPM_UNSUPPORTED ? 1 : 0;
if (link->replay_settings.config.alpm_mode == DC_ALPM_AUXLESS) {
link->replay_settings.config.replay_video_conferencing_optimization_enabled = false;
if (coasting_vtotal && link->replay_settings.coasting_vtotal != coasting_vtotal) {
link->replay_settings.coasting_vtotal = coasting_vtotal;
if (replay != NULL && link->replay_settings.replay_feature_enabled)
if (power_opts && link->replay_settings.replay_power_opt_active != *power_opts &&
coasting_vtotal && link->replay_settings.coasting_vtotal != coasting_vtotal) {
if (link->replay_settings.replay_feature_enabled &&
link->replay_settings.replay_power_opt_active = *power_opts;
link->replay_settings.coasting_vtotal = coasting_vtotal;
if (power_opts && link->replay_settings.replay_power_opt_active != *power_opts) {
if (replay != NULL && link->replay_settings.replay_feature_enabled &&
link->replay_settings.replay_power_opt_active = *power_opts;
if (allow_active && link->replay_settings.replay_allow_active != *allow_active) {
if (replay != NULL && link->replay_settings.replay_feature_enabled)
link->replay_settings.replay_allow_active = *allow_active;
if (replay != NULL && link->replay_settings.replay_feature_enabled)
else if (stream->link->replay_settings.config.replay_supported)
link->replay_settings.low_rr_full_screen_video_pseudo_vtotal = vtotal;
link->replay_settings.link_off_frame_count = max_link_off_frame_count;
link->replay_settings.replay_desync_error_fail_count = 0;
link->replay_settings.config = *pr_config;
link->replay_settings.defer_update_coasting_vtotal_table[type] = vtotal;
link->replay_settings.coasting_vtotal_table[type] =
link->replay_settings.defer_update_coasting_vtotal_table[type];
link->replay_settings.coasting_vtotal_table[type] = vtotal;