lkml.org 
[lkml]   [2012]   [Feb]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 31/86] drm/radeon: Set DESKTOP_HEIGHT register to the framebuffer (not mode) height.
    3.2-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>

    commit 1b61925061660009f5b8047f93c5297e04541273 upstream.

    The value of this register is transferred to the V_COUNTER register at the
    beginning of vertical blank. V_COUNTER is the reference for VLINE waits and
    goes from VIEWPORT_Y_START to VIEWPORT_Y_START+VIEWPORT_HEIGHT during scanout,
    so if VIEWPORT_Y_START is not 0, V_COUNTER actually went backwards at the
    beginning of vertical blank, and VLINE waits excluding the whole scanout area
    could never finish (possibly only if VIEWPORT_Y_START is larger than the length
    of vertical blank in scanlines). Setting DESKTOP_HEIGHT to the framebuffer
    height should prevent this for any kind of VLINE wait.

    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=45329 .

    Signed-off-by: Michel DÀnzer <michel.daenzer@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/radeon/atombios_crtc.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/gpu/drm/radeon/atombios_crtc.c
    +++ b/drivers/gpu/drm/radeon/atombios_crtc.c
    @@ -1189,7 +1189,7 @@ static int dce4_crtc_do_set_base(struct
    WREG32(EVERGREEN_GRPH_ENABLE + radeon_crtc->crtc_offset, 1);

    WREG32(EVERGREEN_DESKTOP_HEIGHT + radeon_crtc->crtc_offset,
    - crtc->mode.vdisplay);
    + target_fb->height);
    x &= ~3;
    y &= ~1;
    WREG32(EVERGREEN_VIEWPORT_START + radeon_crtc->crtc_offset,
    @@ -1358,7 +1358,7 @@ static int avivo_crtc_do_set_base(struct
    WREG32(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1);

    WREG32(AVIVO_D1MODE_DESKTOP_HEIGHT + radeon_crtc->crtc_offset,
    - crtc->mode.vdisplay);
    + target_fb->height);
    x &= ~3;
    y &= ~1;
    WREG32(AVIVO_D1MODE_VIEWPORT_START + radeon_crtc->crtc_offset,



    \
     
     \ /
      Last update: 2012-02-10 23:45    [W:0.053 / U:60.216 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site