Commit 43ba1649 authored by Sasha Levin's avatar Sasha Levin

Revert "drm/i915/ilk: Don't disable SSC source if it's in use"

This reverts commit bcb66592.
Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
parent 6e0f6268
...@@ -6526,14 +6526,12 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) ...@@ -6526,14 +6526,12 @@ static void ironlake_init_pch_refclk(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_encoder *encoder; struct intel_encoder *encoder;
int i;
u32 val, final; u32 val, final;
bool has_lvds = false; bool has_lvds = false;
bool has_cpu_edp = false; bool has_cpu_edp = false;
bool has_panel = false; bool has_panel = false;
bool has_ck505 = false; bool has_ck505 = false;
bool can_ssc = false; bool can_ssc = false;
bool using_ssc_source = false;
/* We need to take the global config into account */ /* We need to take the global config into account */
for_each_intel_encoder(dev, encoder) { for_each_intel_encoder(dev, encoder) {
...@@ -6558,22 +6556,8 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) ...@@ -6558,22 +6556,8 @@ static void ironlake_init_pch_refclk(struct drm_device *dev)
can_ssc = true; can_ssc = true;
} }
/* Check if any DPLLs are using the SSC source */ DRM_DEBUG_KMS("has_panel %d has_lvds %d has_ck505 %d\n",
for (i = 0; i < dev_priv->num_shared_dpll; i++) { has_panel, has_lvds, has_ck505);
u32 temp = I915_READ(PCH_DPLL(i));
if (!(temp & DPLL_VCO_ENABLE))
continue;
if ((temp & PLL_REF_INPUT_MASK) ==
PLLB_REF_INPUT_SPREADSPECTRUMIN) {
using_ssc_source = true;
break;
}
}
DRM_DEBUG_KMS("has_panel %d has_lvds %d has_ck505 %d using_ssc_source %d\n",
has_panel, has_lvds, has_ck505, using_ssc_source);
/* Ironlake: try to setup display ref clock before DPLL /* Ironlake: try to setup display ref clock before DPLL
* enabling. This is only under driver's control after * enabling. This is only under driver's control after
...@@ -6610,9 +6594,9 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) ...@@ -6610,9 +6594,9 @@ static void ironlake_init_pch_refclk(struct drm_device *dev)
final |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD; final |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD;
} else } else
final |= DREF_CPU_SOURCE_OUTPUT_DISABLE; final |= DREF_CPU_SOURCE_OUTPUT_DISABLE;
} else if (using_ssc_source) { } else {
final |= DREF_SSC_SOURCE_ENABLE; final |= DREF_SSC_SOURCE_DISABLE;
final |= DREF_SSC1_ENABLE; final |= DREF_CPU_SOURCE_OUTPUT_DISABLE;
} }
if (final == val) if (final == val)
...@@ -6658,7 +6642,7 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) ...@@ -6658,7 +6642,7 @@ static void ironlake_init_pch_refclk(struct drm_device *dev)
POSTING_READ(PCH_DREF_CONTROL); POSTING_READ(PCH_DREF_CONTROL);
udelay(200); udelay(200);
} else { } else {
DRM_DEBUG_KMS("Disabling CPU source output\n"); DRM_DEBUG_KMS("Disabling SSC entirely\n");
val &= ~DREF_CPU_SOURCE_OUTPUT_MASK; val &= ~DREF_CPU_SOURCE_OUTPUT_MASK;
...@@ -6669,9 +6653,6 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) ...@@ -6669,9 +6653,6 @@ static void ironlake_init_pch_refclk(struct drm_device *dev)
POSTING_READ(PCH_DREF_CONTROL); POSTING_READ(PCH_DREF_CONTROL);
udelay(200); udelay(200);
if (!using_ssc_source) {
DRM_DEBUG_KMS("Disabling SSC source\n");
/* Turn off the SSC source */ /* Turn off the SSC source */
val &= ~DREF_SSC_SOURCE_MASK; val &= ~DREF_SSC_SOURCE_MASK;
val |= DREF_SSC_SOURCE_DISABLE; val |= DREF_SSC_SOURCE_DISABLE;
...@@ -6683,7 +6664,6 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) ...@@ -6683,7 +6664,6 @@ static void ironlake_init_pch_refclk(struct drm_device *dev)
POSTING_READ(PCH_DREF_CONTROL); POSTING_READ(PCH_DREF_CONTROL);
udelay(200); udelay(200);
} }
}
BUG_ON(val != final); BUG_ON(val != final);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment