[PATCH 1/1] drm/radeon: prefer lower reference dividers

Kai-Heng Feng kai.heng.feng at canonical.com
Thu Jun 27 04:03:31 UTC 2019


at 02:07, Connor Kuehl <connor.kuehl at canonical.com> wrote:

> On 6/17/19 8:10 PM, Kai-Heng Feng wrote:
>> From: Christian König <christian.koenig at amd.com>
>>
>> BugLink: https://bugs.launchpad.net/bugs/1791312
>>
>> Instead of the closest reference divider prefer the lowest,
>> this fixes flickering issues on HP Compaq nx9420.
>>
>> Bugs: https://bugs.freedesktop.org/show_bug.cgi?id=108514
>> Suggested-by: Paul Dufresne <dufresnep at gmail.com>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>> Acked-by: Alex Deucher <alexander.deucher at amd.com>
>> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
>> Cc: stable at vger.kernel.org
>> (cherry picked from commit 2e26ccb119bde03584be53406bbd22e711b0d6e6)
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng at canonical.com>
>
> This seems reasonable with positive test results from other people that
> have observed this flickering.
>
> Could you please add the SRU paperwork to the Launchpad bug description?

Done, thanks for the notice.

Kai-Heng

>
>> ---
>>  drivers/gpu/drm/radeon/radeon_display.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/radeon/radeon_display.c  
>> b/drivers/gpu/drm/radeon/radeon_display.c
>> index 9d3ac8b981da..d8e2d7b3b836 100644
>> --- a/drivers/gpu/drm/radeon/radeon_display.c
>> +++ b/drivers/gpu/drm/radeon/radeon_display.c
>> @@ -921,12 +921,12 @@ static void avivo_get_fb_ref_div(unsigned nom,  
>> unsigned den, unsigned post_div,
>>  	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);
>> +	*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);
>> +		*ref_div = (*ref_div * fb_div_max)/(*fb_div);
>>  		*fb_div = fb_div_max;
>>  	}
>>  }
>
>
> -- 
> Connor
> <pEpkey.asc>





More information about the kernel-team mailing list