Commit 2ce0b218 authored by Nicholas Kazlauskas's avatar Nicholas Kazlauskas Committed by Alex Deucher

drm/amd/display: Fix OPTC function pointers for DCN314

[Why]
Access violation occurs when swapping between HDMI and FRL monitors
because we're missing the immediate_disable_crtc callback and it's
required for the DCN314 clk manager.

[How]
Update the table to match the DCN31 optc functions for ones that
should be the same:
- immediate_disable_crtc
- configure_crc
Reviewed-by: default avatarMichael Strauss <Michael.Strauss@amd.com>
Acked-by: default avatarAlex Hung <alex.hung@amd.com>
Signed-off-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 44584b41
...@@ -141,7 +141,7 @@ static bool optc31_disable_crtc(struct timing_generator *optc) ...@@ -141,7 +141,7 @@ static bool optc31_disable_crtc(struct timing_generator *optc)
return true; return true;
} }
static bool optc31_immediate_disable_crtc(struct timing_generator *optc) bool optc31_immediate_disable_crtc(struct timing_generator *optc)
{ {
struct optc *optc1 = DCN10TG_FROM_TG(optc); struct optc *optc1 = DCN10TG_FROM_TG(optc);
......
...@@ -258,6 +258,8 @@ ...@@ -258,6 +258,8 @@
void dcn31_timing_generator_init(struct optc *optc1); void dcn31_timing_generator_init(struct optc *optc1);
bool optc31_immediate_disable_crtc(struct timing_generator *optc);
void optc31_set_drr(struct timing_generator *optc, const struct drr_params *params); void optc31_set_drr(struct timing_generator *optc, const struct drr_params *params);
void optc3_init_odm(struct timing_generator *optc); void optc3_init_odm(struct timing_generator *optc);
......
...@@ -170,6 +170,7 @@ static struct timing_generator_funcs dcn314_tg_funcs = { ...@@ -170,6 +170,7 @@ static struct timing_generator_funcs dcn314_tg_funcs = {
.program_global_sync = optc1_program_global_sync, .program_global_sync = optc1_program_global_sync,
.enable_crtc = optc314_enable_crtc, .enable_crtc = optc314_enable_crtc,
.disable_crtc = optc314_disable_crtc, .disable_crtc = optc314_disable_crtc,
.immediate_disable_crtc = optc31_immediate_disable_crtc,
.phantom_crtc_post_enable = optc314_phantom_crtc_post_enable, .phantom_crtc_post_enable = optc314_phantom_crtc_post_enable,
/* used by enable_timing_synchronization. Not need for FPGA */ /* used by enable_timing_synchronization. Not need for FPGA */
.is_counter_moving = optc1_is_counter_moving, .is_counter_moving = optc1_is_counter_moving,
...@@ -204,7 +205,7 @@ static struct timing_generator_funcs dcn314_tg_funcs = { ...@@ -204,7 +205,7 @@ static struct timing_generator_funcs dcn314_tg_funcs = {
.clear_optc_underflow = optc1_clear_optc_underflow, .clear_optc_underflow = optc1_clear_optc_underflow,
.setup_global_swap_lock = NULL, .setup_global_swap_lock = NULL,
.get_crc = optc1_get_crc, .get_crc = optc1_get_crc,
.configure_crc = optc1_configure_crc, .configure_crc = optc2_configure_crc,
.set_dsc_config = optc3_set_dsc_config, .set_dsc_config = optc3_set_dsc_config,
.get_dsc_status = optc2_get_dsc_status, .get_dsc_status = optc2_get_dsc_status,
.set_dwb_source = NULL, .set_dwb_source = NULL,
......
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