lkml.org 
[lkml]   [2020]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.7 014/376] drm/amd/display: Force watermark value propagation
    Date
    From: Joshua Aberback <joshua.aberback@amd.com>

    [ Upstream commit 868149c9a072cbdc22a73ce25a487f9fbfa171ef ]

    [Why]
    The HUBBUB watermark registers are in an area that cannot be power
    gated, but the HUBP copies of the watermark values are in areas that can
    be power gated. When we power on a pipe, it will not automatically take
    the HUBBUB values, we need to force propagation by writing to a
    watermark register.

    [How]
    - new HUBBUB function to re-write current value in a WM register
    - touch WM register after enabling the plane in program_pipe

    Signed-off-by: Joshua Aberback <joshua.aberback@amd.com>
    Reviewed-by: Jun Lei <Jun.Lei@amd.com>
    Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 5 ++++-
    drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h | 2 ++
    2 files changed, 6 insertions(+), 1 deletion(-)

    diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
    index a023a4d59f41..c4fa13e4eaf9 100644
    --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
    +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
    @@ -1478,8 +1478,11 @@ static void dcn20_program_pipe(
    if (pipe_ctx->update_flags.bits.odm)
    hws->funcs.update_odm(dc, context, pipe_ctx);

    - if (pipe_ctx->update_flags.bits.enable)
    + if (pipe_ctx->update_flags.bits.enable) {
    dcn20_enable_plane(dc, pipe_ctx, context);
    + if (dc->res_pool->hubbub->funcs->force_wm_propagate_to_pipes)
    + dc->res_pool->hubbub->funcs->force_wm_propagate_to_pipes(dc->res_pool->hubbub);
    + }

    if (pipe_ctx->update_flags.raw || pipe_ctx->plane_state->update_flags.raw || pipe_ctx->stream->update_flags.raw)
    dcn20_update_dchubp_dpp(dc, pipe_ctx, context);
    diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h b/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
    index f5dd0cc73c63..47a566d82d6e 100644
    --- a/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
    +++ b/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
    @@ -144,6 +144,8 @@ struct hubbub_funcs {
    void (*allow_self_refresh_control)(struct hubbub *hubbub, bool allow);

    void (*apply_DEDCN21_147_wa)(struct hubbub *hubbub);
    +
    + void (*force_wm_propagate_to_pipes)(struct hubbub *hubbub);
    };

    struct hubbub {
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-06-19 17:17    [W:3.207 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site