• Daniel Vetter's avatar
    drm/i915: Quirk the pipe A quirk in the modeset state checker · d62cf62a
    Daniel Vetter authored
    If we always force the pipe A to on we can't use the hw state to
    decide whether it should be on. Hence quirk the quirk.
    
    The problem is that crtc->active tracks the state of the entire
    display pipe, i.e. including planes, encoders and all. But our hw
    state readout simply looks at the pipe. But with the pipe A quirk we
    force-enable that (together with it's pll). To fix that mismatch we
    have two options:
    - Quirk the checked state to match what our sw tracking states if the
      pipe A quirk is in effect.
    - Improve the hw state readout to not get fooled by the pipe A quirk.
    
    Since we already have similar state clamping in e.g. assert_pipe I've
    opted for the first variant. Also note that we don't really loose any
    state checking: Individual pieces of the abstract crtc pipe are
    checked in the enable/disable functions with the various asssert_*
    checks we have, and the hw state check code doesn't check anything if
    the pipe is off anyway.
    
    v2: Pimp commit message after discussion with Chris and only apply the
    quirk for the quirk if we're checking pipe A. Otherwise we'll miss
    state checking for pipe B on i830M ...
    
    v3: Make the code comment consistent with the improved commit message,
    too (Chris).
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=64764
    Cc: stable@vger.kernel.org
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Reported-and-Tested-by: mlsemon35@gmail.com (v1)
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    d62cf62a
intel_display.c 258 KB