• Daniel Vetter's avatar
    drm/i915: clean up crtc timings computation · 135c81b8
    Daniel Vetter authored
    In the old days of the crtc helpers we've only had the encoder and
    crtc ->mode_fixup callbacks. So when the lvds connector wanted to
    adjust the crtc timings it had to set a driver-private mode flag to
    tell the crtc mode fixup code to not overwrite them with the generic
    ones.
    
    When converting things to the new infrastructure I've kept the entire
    logic and only moved the flag to pipe_config->timings_set. But this
    logic is pretty tricky and already caused regressions:
    
    commit 21d8a475
    Author: Daniel Vetter <daniel.vetter@ffwll.ch>
    Date:   Fri Jul 12 08:07:30 2013 +0200
    
        drm/i915: fix pfit regression for non-autoscaled resolutions
    
    So take advantage of the flexibility our own modeset infrastructure
    affords us and prefill default crtc timings. This allows us to rip out
    ->timings_set. Note that we overwrite things again when retrying the
    pipe config computation due to bandwidth constraints to avoid bogus
    crtc timings if the encoder only does relative adjustments (which is
    how the pfit code works). Only a theoretical concern though since
    platforms where we retry (pch-split platforms) do not need
    adjustements (since only the old gmch pfit needs that). But let's
    better be safe than sorry.
    
    Since we now initialize the crtc timings before calling the
    encoder->compute_config functions the crtc initialization in the gmch
    pfit code is now redudant and so can be removed.
    
    Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
    Cc: Mika Kuoppala <mika.kuoppala@intel.com>
    Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@gmail.com>
    [danvet: Add a paragraph to the commit message to explain why we can
    ditch the crtc timings initialization call from the gmch pfit code, to
    answer a question from Rodrigo's review.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    135c81b8
intel_panel.c 20.3 KB