diff options
Diffstat (limited to 'drivers/gpu/drm/amd/display/modules/freesync/freesync.c')
| -rw-r--r-- | drivers/gpu/drm/amd/display/modules/freesync/freesync.c | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c index 237dda751380..ee89bd2f7fe4 100644 --- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c +++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c @@ -743,6 +743,10 @@ void mod_freesync_build_vrr_params(struct mod_freesync *mod_freesync,  	nominal_field_rate_in_uhz =  			mod_freesync_calc_nominal_field_rate(stream); +	/* Rounded to the nearest Hz */ +	nominal_field_rate_in_uhz = 1000000ULL * +			div_u64(nominal_field_rate_in_uhz + 500000, 1000000); +  	min_refresh_in_uhz = in_config->min_refresh_in_uhz;  	max_refresh_in_uhz = in_config->max_refresh_in_uhz; @@ -998,14 +1002,13 @@ unsigned long long mod_freesync_calc_nominal_field_rate(  			const struct dc_stream_state *stream)  {  	unsigned long long nominal_field_rate_in_uhz = 0; +	unsigned int total = stream->timing.h_total * stream->timing.v_total; -	/* Calculate nominal field rate for stream */ +	/* Calculate nominal field rate for stream, rounded up to nearest integer */  	nominal_field_rate_in_uhz = stream->timing.pix_clk_100hz / 10;  	nominal_field_rate_in_uhz *= 1000ULL * 1000ULL * 1000ULL; -	nominal_field_rate_in_uhz = div_u64(nominal_field_rate_in_uhz, -						stream->timing.h_total); -	nominal_field_rate_in_uhz = div_u64(nominal_field_rate_in_uhz, -						stream->timing.v_total); + +	nominal_field_rate_in_uhz =	div_u64(nominal_field_rate_in_uhz, total);  	return nominal_field_rate_in_uhz;  } | 
