lkml.org 
[lkml]   [2013]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 166/221] drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards
    Date
    3.7-stable review patch.  If anyone has any objections, please let me know.

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

    From: Marcin Slusarz <marcin.slusarz@gmail.com>

    commit 92441b2263866c27ef48137be5aa6c8c692652fc upstream.

    Commit 2a44e499 ("drm/nouveau/disp: introduce proper init/fini, separate
    from create/destroy") started to call display init routines on pre-nv50
    hardware on module load. But LVDS init code sets driver state in a way
    which prevents modesetting code from operating properly.

    nv04_display_init calls nv04_dfp_restore, which sets encoder->last_dpms to
    NV_DPMS_CLEARED.

    drm_crtc_helper_set_mode
    nv04_dfp_prepare
    nv04_lvds_dpms(DRM_MODE_DPMS_OFF)

    nv04_lvds_dpms checks last_dpms mode (which is NV_DPMS_CLEARED) and wrongly
    assumes it's a "powersaving mode", the new one (DRM_MODE_DPMS_OFF) is too,
    so it skips calling some crucial lvds scripts.

    Reported-by: Chris Paulson-Ellis <chris@edesix.com>
    Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/nouveau/nv04_dfp.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/gpu/drm/nouveau/nv04_dfp.c
    +++ b/drivers/gpu/drm/nouveau/nv04_dfp.c
    @@ -505,7 +505,7 @@ static void nv04_dfp_update_backlight(st

    static inline bool is_powersaving_dpms(int mode)
    {
    - return (mode != DRM_MODE_DPMS_ON);
    + return mode != DRM_MODE_DPMS_ON && mode != NV_DPMS_CLEARED;
    }

    static void nv04_lvds_dpms(struct drm_encoder *encoder, int mode)



    \
     
     \ /
      Last update: 2013-01-16 00:41    [W:3.676 / U:0.492 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site