• Imre Deak's avatar
    drm/i915: Fix scaler init during CRTC HW state readout · 5fb9dadf
    Imre Deak authored
    The scaler allocation code depends on a non-zero default value for the
    crtc scaler_id, so make sure we initialize the scaler state accordingly
    even if the crtc is off. This fixes at least an initial YUV420 modeset
    (added in a follow-up patchset by Shashank) when booting with the screen
    off: after the initial HW readout and modeset which enables the scaler a
    subsequent modeset will disable the scaler which isn't properly
    allocated. This results in a funky HW state where the pipe scaler HW
    registers can't be modified and the normally black screen is grey and
    shifted to the right or jitters.
    
    The problem was revealed by Shashank's YUV420 patchset and first
    reported by Ville.
    
    v2:
    - In the stable tag also include versions which need backporting (Jani)
    
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Shashank Sharma <shashank.sharma@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Chandra Konduru <chandra.konduru@intel.com>
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: <stable@vger.kernel.org> # 4.2.x
    Reported-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Fixes: a1b2278e ("drm/i915: skylake panel fitting using shared scalers")
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarMahesh Kumar <mahesh1.kumar@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170720112820.26816-1-imre.deak@intel.comSigned-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    5fb9dadf
intel_display.c 424 KB