• Marcin Slusarz's avatar
    drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards · 92441b22
    Marcin Slusarz authored
    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: default avatarChris Paulson-Ellis <chris@edesix.com>
    Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
    Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
    Cc: stable@vger.kernel.org
    92441b22
nv04_dfp.c 23.9 KB