[PATCH 7/7] drm/amd/display: Fix fractional fb divider in set_pixel_clock_v3
Alex Deucher
alexdeucher at gmail.com
Mon Aug 4 15:59:55 UTC 2025
On Thu, Jul 31, 2025 at 5:53 AM Timur Kristóf <timur.kristof at gmail.com> wrote:
>
> For later VBIOS versions, the fractional feedback divider is
> calculated as the remainder of dividing the feedback divider by
> a factor, which is set to 1000000. For reference, see:
> - calculate_fb_and_fractional_fb_divider
> - calc_pll_max_vco_construct
>
> However, in case of old VBIOS versions that have
> set_pixel_clock_v3, they only have 1 byte available for the
> fractional feedback divider, and it's expected to be set to the
> remainder from dividing the feedback divider by 10.
> For reference see the legacy display code:
> - amdgpu_pll_compute
> - amdgpu_atombios_crtc_program_pll
>
> This commit fixes set_pixel_clock_v3 by dividing the fractional
> feedback divider passed to the function by 100000.
>
> Fixes: 4562236b3bc0 ("drm/amd/dc: Add dc display driver (v2)")
> Signed-off-by: Timur Kristóf <timur.kristof at gmail.com>
Acked-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/display/dc/bios/command_table.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/command_table.c b/drivers/gpu/drm/amd/display/dc/bios/command_table.c
> index 2bcae0643e61..58e88778da7f 100644
> --- a/drivers/gpu/drm/amd/display/dc/bios/command_table.c
> +++ b/drivers/gpu/drm/amd/display/dc/bios/command_table.c
> @@ -993,7 +993,7 @@ static enum bp_result set_pixel_clock_v3(
> allocation.sPCLKInput.usFbDiv =
> cpu_to_le16((uint16_t)bp_params->feedback_divider);
> allocation.sPCLKInput.ucFracFbDiv =
> - (uint8_t)bp_params->fractional_feedback_divider;
> + (uint8_t)(bp_params->fractional_feedback_divider / 100000);
> allocation.sPCLKInput.ucPostDiv =
> (uint8_t)bp_params->pixel_clock_post_divider;
>
> --
> 2.50.1
>
More information about the amd-gfx
mailing list