lkml.org 
[lkml]   [2019]   [Dec]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 133/434] drm/amd/display: Properly round nominal frequency for SPD
    Date
    From: Aric Cyr <aric.cyr@amd.com>

    [ Upstream commit c59802313e84bede954235b3a5dd0dd5325f49c5 ]

    [Why]
    Some displays rely on the SPD verticle frequency maximum value.
    Must round the calculated refresh rate to the nearest integer.

    [How]
    Round the nominal calculated refresh rate to the nearest whole
    integer.

    Signed-off-by: Aric Cyr <aric.cyr@amd.com>
    Reviewed-by: Anthony Koo <Anthony.Koo@amd.com>
    Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../gpu/drm/amd/display/modules/freesync/freesync.c | 13 ++++++++-----
    1 file 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 ec70c9b12e1a..0978c698f0f8 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;

    @@ -996,14 +1000,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;
    }
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-29 18:47    [W:4.036 / U:0.336 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site