The following patch seems to work for me: client@client-LIFEBOOK-AH531 ~/Téléchargements $ diff -u old/linux-4.19.21/drivers/gpu/drm/radeon/radeon_display.c linux-4.19.21/drivers/gpu/drm/radeon/radeon_display.c --- old/linux-4.19.21/drivers/gpu/drm/radeon/radeon_display.c 2019-02-12 13:47:27.000000000 -0500 +++ linux-4.19.21/drivers/gpu/drm/radeon/radeon_display.c 2019-02-14 15:29:37.743229474 -0500 @@ -921,12 +921,14 @@ ref_div_max = max(min(100 / post_div, ref_div_max), 1u);
/* get matching reference and feedback divider */ - *ref_div = min(max(DIV_ROUND_CLOSEST(den, post_div), 1u), ref_div_max); + // was: *ref_div = min(max(DIV_ROUND_CLOSEST(den, post_div), 1u), ref_div_max); + *ref_div = min(max((den/post_div), 1u), ref_div_max); *fb_div = DIV_ROUND_CLOSEST(nom * *ref_div * post_div, den);
/* limit fb divider to its maximum */ if (*fb_div > fb_div_max) { - *ref_div = DIV_ROUND_CLOSEST(*ref_div * fb_div_max, *fb_div); + // was: *ref_div = DIV_ROUND_CLOSEST(*ref_div * fb_div_max, *fb_div); + *ref_div = (*ref_div * fb_div_max) / (*fb_div); *fb_div = fb_div_max; } } client@client-LIFEBOOK-AH531 ~/Téléchargements $
The following patch seems to work for me: client- LIFEBOOK- AH531 ~/Téléchargements $ diff -u old/linux- 4.19.21/ drivers/ gpu/drm/ radeon/ radeon_ display. c linux-4. 19.21/drivers/ gpu/drm/ radeon/ radeon_ display. c 4.19.21/ drivers/ gpu/drm/ radeon/ radeon_ display. c 2019-02-12 13:47:27.000000000 -0500 19.21/drivers/ gpu/drm/ radeon/ radeon_ display. c 2019-02-14 15:29:37.743229474 -0500
client@
--- old/linux-
+++ linux-4.
@@ -921,12 +921,14 @@
ref_div_max = max(min(100 / post_div, ref_div_max), 1u);
/* get matching reference and feedback divider */ DIV_ROUND_ CLOSEST( den, post_div), 1u), ref_div_max); DIV_ROUND_ CLOSEST( den, post_div), 1u), ref_div_max); (den/post_ div), 1u), ref_div_max); CLOSEST( nom * *ref_div * post_div, den);
- *ref_div = min(max(
+ // was: *ref_div = min(max(
+ *ref_div = min(max(
*fb_div = DIV_ROUND_
/* limit fb divider to its maximum */ CLOSEST( *ref_div * fb_div_max, *fb_div); CLOSEST( *ref_div * fb_div_max, *fb_div); client- LIFEBOOK- AH531 ~/Téléchargements $
if (*fb_div > fb_div_max) {
- *ref_div = DIV_ROUND_
+ // was: *ref_div = DIV_ROUND_
+ *ref_div = (*ref_div * fb_div_max) / (*fb_div);
*fb_div = fb_div_max;
}
}
client@