• D
    drm/i915/dp: convert to encoder disable/enable · e8cb4558
    Daniel Vetter 提交于
    DP is the first encoder which isn't simple. As
    
    commit d240f20f
    Author: Jesse Barnes <jbarnes@virtuousgeek.org>
    Date:   Fri Aug 13 15:43:26 2010 -0700
    
        drm/i915: make sure eDP PLL is enabled at the right time
    
    discovered, we need to enable the eDP PLL for the cpu port _before_ we
    enable the pipes and planes. After a few more commits the current
    solution is to enable the PLL in the dp mode_set function (because
    this is the only encoder callback the crtc helper code calls before it
    calls the crtc's commit function).
    
    Now I suspect that we actually should enable/disable the entire cpu
    eDP port before/after planes, but thanks to how the crtc helper code
    assumes that you can disable an encoder without disabling it's crtc
    right away, this won't work.
    
    The result is that the current prepare/commit hooks don't touch the
    eDP PLL, but instead it get's frobbed in dp_mode_set and in the dp
    dpms function. Hence we need to keep things (at least for now)
    bug-for-bug compatible by using our own special dp dpms function and
    keep everything else more-or-less as-is (just using our own
    infrastrucutre now).
    
    This mess can only be cleaned up once we control the entire modeset
    sequence and can move things around freely.
    
    v2: Squash unsupported dpms modes to OFF at the beginning of the DP
    dpms function.
    
    v3: Need to set the dpms state to off in dp_disable, otherwise this
    breaks the newly added WARNs ...
    
    v4: Rebased against edp panel off sequence changes in 3.6-rc2
    Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
    Signed-Off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
    e8cb4558
intel_dp.c 69.4 KB