• Daniel Vetter's avatar
    drm/i915: consolidate pch pll enable sequence · 15bdd4cf
    Daniel Vetter authored
    It's been splattered over 3 different places all doing random things.
    Now we have (mostly) the same sequence as i8xx/i9xx, but all called
    from the crtc_enable hook (through the pll->enable function):
    - write new dividers
    - enable vco and wait for stable clocks
    - write again for the pixel mutliplier
    
    I've left the seemingly random 200 usec delay in there, just in case.
    
    Also move the encoder->pre_pll_enable hook into the crtc_enable
    function, at the same spot we currently have a hack to enable the lvds
    port. Since that hack is now redundant, kill it.
    
    While doing this patch I've learned the hard way that we can only fire
    up the LVDS port if both the pch dpll _and_ the fdi rc pll are not yet
    enabled. Otherwise things go haywire, at least on cpt.
    
    v2: It is paramount to write the FPx divisors before we enable the
    the vco by writing to the DPLL registers, for otherwise the divisors
    won't get updated. This is in line with the i8xx/i9xx dpll.
    
    v3: To keep the nice abstraction add a ->mode_set callback to set the
    divisors. Also streamline the enabling/disabling code a bit by
    removing some cargo-cult duplication and clearing registers where
    possible in the ->disable hook.
    
    v4: Remove now unused local variable.
    Acked-by: default avatarDamien Lespiau <damien.lespiau@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    15bdd4cf
intel_display.c 274 KB