lkml.org 
[lkml]   [2011]   [Feb]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] [122/139] drm/radeon/kms: reorder display resume to avoid problems
    Date
    2.6.35-longterm review patch.  If anyone has any objections, please let me know.

    ------------------
    From: Alex Deucher <alexdeucher@gmail.com>

    commit a93f344d3c04e4b84490c65f2a574387c593be40 upstream.

    On resume, we were attemping to unblank the displays before the
    timing and plls had be reprogrammed which led to atom timeouts
    waiting for things that are not yet programmed. Re-program
    the mode first, then reset the dpms state.

    This fixes the infamous atombios timeouts on resume.

    Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    Signed-off-by: Andi Kleen <ak@linux.intel.com>

    ---
    drivers/gpu/drm/radeon/atombios_crtc.c | 3 ++-
    drivers/gpu/drm/radeon/radeon_device.c | 9 ++++-----
    2 files changed, 6 insertions(+), 6 deletions(-)

    Index: linux-2.6.35.y/drivers/gpu/drm/radeon/atombios_crtc.c
    ===================================================================
    --- linux-2.6.35.y.orig/drivers/gpu/drm/radeon/atombios_crtc.c
    +++ linux-2.6.35.y/drivers/gpu/drm/radeon/atombios_crtc.c
    @@ -259,7 +259,8 @@ void atombios_crtc_dpms(struct drm_crtc
    case DRM_MODE_DPMS_SUSPEND:
    case DRM_MODE_DPMS_OFF:
    drm_vblank_pre_modeset(dev, radeon_crtc->crtc_id);
    - atombios_blank_crtc(crtc, ATOM_ENABLE);
    + if (radeon_crtc->enabled)
    + atombios_blank_crtc(crtc, ATOM_ENABLE);
    if (ASIC_IS_DCE3(rdev))
    atombios_enable_crtc_memreq(crtc, ATOM_DISABLE);
    atombios_enable_crtc(crtc, ATOM_DISABLE);
    Index: linux-2.6.35.y/drivers/gpu/drm/radeon/radeon_device.c
    ===================================================================
    --- linux-2.6.35.y.orig/drivers/gpu/drm/radeon/radeon_device.c
    +++ linux-2.6.35.y/drivers/gpu/drm/radeon/radeon_device.c
    @@ -799,11 +799,6 @@ int radeon_resume_kms(struct drm_device
    radeon_pm_resume(rdev);
    radeon_restore_bios_scratch_regs(rdev);

    - /* turn on display hw */
    - list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
    - drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
    - }
    -
    radeon_fbdev_set_suspend(rdev, 0);
    release_console_sem();

    @@ -811,6 +806,10 @@ int radeon_resume_kms(struct drm_device
    radeon_hpd_init(rdev);
    /* blat the mode back in */
    drm_helper_resume_force_mode(dev);
    + /* turn on display hw */
    + list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
    + drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
    + }
    return 0;
    }


    \
     
     \ /
      Last update: 2011-02-02 01:53    [W:2.985 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site