[PATCH 7/7] drm/amd/display: Fix fractional fb divider in set_pixel_clock_v3

Rodrigo Siqueira siqueira at igalia.com
Tue Aug 12 23:46:47 UTC 2025


On 07/31, Timur Kristóf 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>
> ---
>  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 =
> -			(uint10_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
>

Reviewed-by: Rodrigo Siqueira <siqueira at igalia.com> 

-- 
Rodrigo Siqueira


More information about the amd-gfx mailing list