On Thu, Jul 31, 2025 at 5:53 AM Timur Kristóf <timur.kris...@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.kris...@gmail.com>
Acked-by: Alex Deucher <alexander.deuc...@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 >