1 From 2e26ccb119bde03584be53406bbd22e711b0d6e6 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
3 Date: Mon, 6 May 2019 19:57:52 +0200
4 Subject: drm/radeon: prefer lower reference dividers
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
9 From: Christian König <christian.koenig@amd.com>
11 commit 2e26ccb119bde03584be53406bbd22e711b0d6e6 upstream.
13 Instead of the closest reference divider prefer the lowest,
14 this fixes flickering issues on HP Compaq nx9420.
16 Bugs: https://bugs.freedesktop.org/show_bug.cgi?id=108514
17 Suggested-by: Paul Dufresne <dufresnep@gmail.com>
18 Signed-off-by: Christian König <christian.koenig@amd.com>
19 Acked-by: Alex Deucher <alexander.deucher@amd.com>
20 Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
21 Cc: stable@vger.kernel.org
22 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25 drivers/gpu/drm/radeon/radeon_display.c | 4 ++--
26 1 file changed, 2 insertions(+), 2 deletions(-)
28 --- a/drivers/gpu/drm/radeon/radeon_display.c
29 +++ b/drivers/gpu/drm/radeon/radeon_display.c
30 @@ -922,12 +922,12 @@ static void avivo_get_fb_ref_div(unsigne
31 ref_div_max = max(min(100 / post_div, ref_div_max), 1u);
33 /* get matching reference and feedback divider */
34 - *ref_div = min(max(DIV_ROUND_CLOSEST(den, post_div), 1u), ref_div_max);
35 + *ref_div = min(max(den/post_div, 1u), ref_div_max);
36 *fb_div = DIV_ROUND_CLOSEST(nom * *ref_div * post_div, den);
38 /* limit fb divider to its maximum */
39 if (*fb_div > fb_div_max) {
40 - *ref_div = DIV_ROUND_CLOSEST(*ref_div * fb_div_max, *fb_div);
41 + *ref_div = (*ref_div * fb_div_max)/(*fb_div);