]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/display: Add pixel_clock to amd_pp_display_configuration
authorTimur Kristóf <timur.kristof@gmail.com>
Tue, 9 Sep 2025 14:17:50 +0000 (16:17 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Nov 2025 09:37:23 +0000 (10:37 +0100)
[ Upstream commit b515dcb0dc4e85d8254f5459cfb32fce88dacbfb ]

This commit adds the pixel_clock field to the display config
struct so that power management (DPM) can use it.

We currently don't have a proper bandwidth calculation on old
GPUs with DCE 6-10 because dce_calcs only supports DCE 11+.
So the power management (DPM) on these GPUs may need to make
ad-hoc decisions for display based on the pixel clock.

Also rename sym_clock to pixel_clock in dm_pp_single_disp_config
to avoid confusion with other code where the sym_clock refers to
the DisplayPort symbol clock.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c
drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c
drivers/gpu/drm/amd/display/dc/dm_services_types.h
drivers/gpu/drm/amd/include/dm_pp_interface.h

index 848c5b4bb301a5045e80ab2f4e67084015c2cb61..016230896d0e18be6361701cb7ab3bd9d3db2d4e 100644 (file)
@@ -97,6 +97,7 @@ bool dm_pp_apply_display_requirements(
                        const struct dm_pp_single_disp_config *dc_cfg =
                                                &pp_display_cfg->disp_configs[i];
                        adev->pm.pm_display_cfg.displays[i].controller_id = dc_cfg->pipe_idx + 1;
+                       adev->pm.pm_display_cfg.displays[i].pixel_clock = dc_cfg->pixel_clock;
                }
 
                amdgpu_dpm_display_configuration_change(adev, &adev->pm.pm_display_cfg);
index 13cf415e38e5019462acbe97173b8d9e5225a15f..d50b9440210e46dc030846eb9787170418ca53f7 100644 (file)
@@ -164,7 +164,7 @@ void dce110_fill_display_configs(
                        stream->link->cur_link_settings.link_rate;
                cfg->link_settings.link_spread =
                        stream->link->cur_link_settings.link_spread;
-               cfg->sym_clock = stream->phy_pix_clk;
+               cfg->pixel_clock = stream->phy_pix_clk;
                /* Round v_refresh*/
                cfg->v_refresh = stream->timing.pix_clk_100hz * 100;
                cfg->v_refresh /= stream->timing.h_total;
index bf63da266a18cfbccaa01e2be951dd61d406c868..3b093b8699abd7e73403dba63c4760ed3cd64998 100644 (file)
@@ -127,7 +127,7 @@ struct dm_pp_single_disp_config {
        uint32_t src_height;
        uint32_t src_width;
        uint32_t v_refresh;
-       uint32_t sym_clock; /* HDMI only */
+       uint32_t pixel_clock; /* Pixel clock in KHz (for HDMI only: normalized) */
        struct dc_link_settings link_settings; /* DP only */
 };
 
index acd1cef61b7c53013672d242d197d77b0a5bfde1..349544504c93cab0920d303f4c3a4a2f5c2aa1a3 100644 (file)
@@ -65,6 +65,7 @@ struct single_display_configuration {
        uint32_t view_resolution_cy;
        enum amd_pp_display_config_type displayconfigtype;
        uint32_t vertical_refresh; /* for active display */
+       uint32_t pixel_clock; /* Pixel clock in KHz (for HDMI only: normalized) */
 };
 
 #define MAX_NUM_DISPLAY 32