|
@@ -1380,6 +1380,16 @@ static void bxt_ddi_pll_enable(struct drm_i915_private *dev_priv,
|
|
temp |= PORT_PLL_REF_SEL;
|
|
temp |= PORT_PLL_REF_SEL;
|
|
I915_WRITE(BXT_PORT_PLL_ENABLE(port), temp);
|
|
I915_WRITE(BXT_PORT_PLL_ENABLE(port), temp);
|
|
|
|
|
|
|
|
+ if (IS_GEMINILAKE(dev_priv)) {
|
|
|
|
+ temp = I915_READ(BXT_PORT_PLL_ENABLE(port));
|
|
|
|
+ temp |= PORT_PLL_POWER_ENABLE;
|
|
|
|
+ I915_WRITE(BXT_PORT_PLL_ENABLE(port), temp);
|
|
|
|
+
|
|
|
|
+ if (wait_for_us((I915_READ(BXT_PORT_PLL_ENABLE(port)) &
|
|
|
|
+ PORT_PLL_POWER_STATE), 200))
|
|
|
|
+ DRM_ERROR("Power state not set for PLL:%d\n", port);
|
|
|
|
+ }
|
|
|
|
+
|
|
/* Disable 10 bit clock */
|
|
/* Disable 10 bit clock */
|
|
temp = I915_READ(BXT_PORT_PLL_EBB_4(phy, ch));
|
|
temp = I915_READ(BXT_PORT_PLL_EBB_4(phy, ch));
|
|
temp &= ~PORT_PLL_10BIT_CLK_ENABLE;
|
|
temp &= ~PORT_PLL_10BIT_CLK_ENABLE;
|
|
@@ -1485,6 +1495,16 @@ static void bxt_ddi_pll_disable(struct drm_i915_private *dev_priv,
|
|
temp &= ~PORT_PLL_ENABLE;
|
|
temp &= ~PORT_PLL_ENABLE;
|
|
I915_WRITE(BXT_PORT_PLL_ENABLE(port), temp);
|
|
I915_WRITE(BXT_PORT_PLL_ENABLE(port), temp);
|
|
POSTING_READ(BXT_PORT_PLL_ENABLE(port));
|
|
POSTING_READ(BXT_PORT_PLL_ENABLE(port));
|
|
|
|
+
|
|
|
|
+ if (IS_GEMINILAKE(dev_priv)) {
|
|
|
|
+ temp = I915_READ(BXT_PORT_PLL_ENABLE(port));
|
|
|
|
+ temp &= ~PORT_PLL_POWER_ENABLE;
|
|
|
|
+ I915_WRITE(BXT_PORT_PLL_ENABLE(port), temp);
|
|
|
|
+
|
|
|
|
+ if (wait_for_us(!(I915_READ(BXT_PORT_PLL_ENABLE(port)) &
|
|
|
|
+ PORT_PLL_POWER_STATE), 200))
|
|
|
|
+ DRM_ERROR("Power state not reset for PLL:%d\n", port);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
static bool bxt_ddi_pll_get_hw_state(struct drm_i915_private *dev_priv,
|
|
static bool bxt_ddi_pll_get_hw_state(struct drm_i915_private *dev_priv,
|