• Nicholas Kazlauskas's avatar
    drm/amd/display: Reset planes that were disabled in init_pipes · 234b70f0
    Nicholas Kazlauskas authored
    [ Upstream commit 4bc46da4 ]
    
    [Why]
    Seamless boot tries to reuse planes that were enabled for the first
    commit applied.
    
    In the case where Raven is booting with two monitors connected and the
    first commit contains two streams the screen corruption would occur
    because the second stream was trying to re-use a tg and plane that
    weren't previously enabled.
    
    The state on the first commit looks something like the following:
    
    TG0: enabled=1
    TG1: enabled=0
    TG2: enabled=0
    TG3: enabled=0
    
    New state: pipe=0, stream=0,    plane=0,       new_tg=0
    New state: pipe=1, stream=1,    plane=1,       new_tg=1
    New state: pipe=2, stream=NULL, plane=NULL,    new_tg=NULL
    New state: pipe=3, stream=NULL, plane=NULL,    new_tg=NULL
    
    Only one plane/tg is setup before we enter accelerated mode so
    we really want to disabling everything but that first plane.
    
    [How]
    
    Check if the stream is not NULL and if the tg is enabled before
    deciding whether to skip the plane disable.
    
    Also ensure we're also disabling on the current state's pipe_ctx so
    we don't overwrite the fields in the new pending state.
    Signed-off-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: default avatarAnthony Koo <Anthony.Koo@amd.com>
    Acked-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
    Acked-by: default avatarLeo Li <sunpeng.li@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    234b70f0
dcn10_hw_sequencer.c 87.9 KB