From: Daniel Miess <daniel.miess@xxxxxxx> [Why] In some cases enabling RCO on older dcn314 chips leads to underflow [How] Explicitly disable RCO on unsupported dcn314 chips Fixes: 0e1961c93839 ("drm/amd/display: Enable dcn314 DPP RCO") Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@xxxxxxx> Acked-by: Hamza Mahfooz <hamza.mahfooz@xxxxxxx> Signed-off-by: Daniel Miess <daniel.miess@xxxxxxx> --- drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c | 2 +- drivers/gpu/drm/amd/display/dc/dcn314/dcn314_resource.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c b/drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c index cf23d7bc560a..0746ed31d1d1 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c +++ b/drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c @@ -332,7 +332,7 @@ static void dccg314_dpp_root_clock_control( { struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg); - if (dccg->dpp_clock_gated[dpp_inst] == clock_on) + if (dccg->dpp_clock_gated[dpp_inst] != clock_on) return; if (clock_on) { diff --git a/drivers/gpu/drm/amd/display/dc/dcn314/dcn314_resource.c b/drivers/gpu/drm/amd/display/dc/dcn314/dcn314_resource.c index 03c5690ff54b..1290c294d47e 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn314/dcn314_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dcn314/dcn314_resource.c @@ -1904,11 +1904,15 @@ static bool dcn314_resource_construct( else dc->debug = debug_defaults_diags; - /* Disable pipe power gating when unsupported */ + if (ctx->asic_id.hw_internal_rev == 0x01 || ctx->asic_id.hw_internal_rev == 0x80) { + /* Disable pipe power gating when unsupported */ dc->debug.disable_dpp_power_gate = true; dc->debug.disable_hubp_power_gate = true; + + /* Disable root clock optimization when unsupported*/ + dc->debug.root_clock_optimization.u32All = 0; } // Init the vm_helper -- 2.40.1