]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Clamp min DS DCFCLK value to DCN limit
authorRoman Li <Roman.Li@amd.com>
Sat, 14 Mar 2026 00:34:48 +0000 (20:34 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 23 Mar 2026 18:13:05 +0000 (14:13 -0400)
[why & how]
DCN has a global limit for minimum DS DCFCLK during any operation.

Adhere to that limit and add a debug flag.

Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Signed-off-by: Ovidiu Bunea <ovidiu.bunea@amd.com>
Signed-off-by: Roman Li <roman.li@amd.com>
Signed-off-by: Chuanyu Tseng <Chuanyu.Tseng@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c

index a0296d5f0102f96eab9e1af231260454b825bc0d..bc11510b63a1a941cbf573adea082becf300d2f0 100644 (file)
@@ -291,6 +291,11 @@ void dcn42_update_clocks(struct clk_mgr *clk_mgr_base,
        if (should_set_clock(safe_to_lower,
                        new_clocks->dcfclk_deep_sleep_khz, clk_mgr_base->clks.dcfclk_deep_sleep_khz)) {
                clk_mgr_base->clks.dcfclk_deep_sleep_khz = new_clocks->dcfclk_deep_sleep_khz;
+
+               /* Clamp the requested clock to PMFW based on DCN limit. */
+               if (dc->debug.min_deep_sleep_dcfclk_khz > 0 && clk_mgr_base->clks.dcfclk_deep_sleep_khz < dc->debug.min_deep_sleep_dcfclk_khz)
+                       clk_mgr_base->clks.dcfclk_deep_sleep_khz = dc->debug.min_deep_sleep_dcfclk_khz;
+
                dcn42_smu_set_min_deep_sleep_dcfclk(clk_mgr, clk_mgr_base->clks.dcfclk_deep_sleep_khz);
        }
 
index 0b48feaba131e732879aaec0ded3b9042a7c5a46..4d15d97ed7f111708619006793553013cdff08af 100644 (file)
@@ -1215,6 +1215,7 @@ struct dc_debug_options {
        bool enable_dmu_recovery;
        unsigned int force_vmin_threshold;
        bool enable_otg_frame_sync_pwa;
+       unsigned int min_deep_sleep_dcfclk_khz;
 };
 
 
index 7b451c7db02c6266f1cade071bc3c61af1aa896a..8175109a66b0f2094912e3f00d29ca2d624ff9d5 100644 (file)
@@ -760,6 +760,7 @@ static const struct dc_debug_options debug_defaults_drv = {
        .disable_z10 = false,
        .ignore_pg = true,
        .disable_stutter_for_wm_program = true,
+       .min_deep_sleep_dcfclk_khz = 8000,
 };
 
 static const struct dc_check_config config_defaults = {