drm/i915: don't disable a PCH DPLL that's in use
If a PCH pipe PLL is being used by transcoder C, don't disable it. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
e6bfaf8542
commit
7a4198664d
1 changed files with 11 additions and 1 deletions
|
@ -1204,7 +1204,8 @@ static void intel_disable_pch_pll(struct drm_i915_private *dev_priv,
|
|||
enum pipe pipe)
|
||||
{
|
||||
int reg;
|
||||
u32 val;
|
||||
u32 val, pll_mask = TRANSC_DPLL_ENABLE | TRANSC_DPLLB_SEL,
|
||||
pll_sel = TRANSC_DPLL_ENABLE;
|
||||
|
||||
if (pipe > 1)
|
||||
return;
|
||||
|
@ -1215,6 +1216,15 @@ static void intel_disable_pch_pll(struct drm_i915_private *dev_priv,
|
|||
/* Make sure transcoder isn't still depending on us */
|
||||
assert_transcoder_disabled(dev_priv, pipe);
|
||||
|
||||
if (pipe == 0)
|
||||
pll_sel |= TRANSC_DPLLA_SEL;
|
||||
else if (pipe == 1)
|
||||
pll_sel |= TRANSC_DPLLB_SEL;
|
||||
|
||||
|
||||
if ((I915_READ(PCH_DPLL_SEL) & pll_mask) == pll_sel)
|
||||
return;
|
||||
|
||||
reg = PCH_DPLL(pipe);
|
||||
val = I915_READ(reg);
|
||||
val &= ~DPLL_VCO_ENABLE;
|
||||
|
|
Loading…
Reference in a new issue