diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_crt.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index b84aaa0bb48a..6a2c76e367a5 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c | |||
@@ -138,18 +138,6 @@ static void hsw_crt_get_config(struct intel_encoder *encoder, | |||
138 | pipe_config->base.adjusted_mode.flags |= intel_crt_get_flags(encoder); | 138 | pipe_config->base.adjusted_mode.flags |= intel_crt_get_flags(encoder); |
139 | } | 139 | } |
140 | 140 | ||
141 | static void hsw_crt_pre_enable(struct intel_encoder *encoder) | ||
142 | { | ||
143 | struct drm_device *dev = encoder->base.dev; | ||
144 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
145 | |||
146 | WARN(I915_READ(SPLL_CTL) & SPLL_PLL_ENABLE, "SPLL already enabled\n"); | ||
147 | I915_WRITE(SPLL_CTL, | ||
148 | SPLL_PLL_ENABLE | SPLL_PLL_FREQ_1350MHz | SPLL_PLL_SSC); | ||
149 | POSTING_READ(SPLL_CTL); | ||
150 | udelay(20); | ||
151 | } | ||
152 | |||
153 | /* Note: The caller is required to filter out dpms modes not supported by the | 141 | /* Note: The caller is required to filter out dpms modes not supported by the |
154 | * platform. */ | 142 | * platform. */ |
155 | static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode) | 143 | static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode) |
@@ -216,19 +204,6 @@ static void pch_post_disable_crt(struct intel_encoder *encoder) | |||
216 | intel_disable_crt(encoder); | 204 | intel_disable_crt(encoder); |
217 | } | 205 | } |
218 | 206 | ||
219 | static void hsw_crt_post_disable(struct intel_encoder *encoder) | ||
220 | { | ||
221 | struct drm_device *dev = encoder->base.dev; | ||
222 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
223 | uint32_t val; | ||
224 | |||
225 | DRM_DEBUG_KMS("Disabling SPLL\n"); | ||
226 | val = I915_READ(SPLL_CTL); | ||
227 | WARN_ON(!(val & SPLL_PLL_ENABLE)); | ||
228 | I915_WRITE(SPLL_CTL, val & ~SPLL_PLL_ENABLE); | ||
229 | POSTING_READ(SPLL_CTL); | ||
230 | } | ||
231 | |||
232 | static void intel_enable_crt(struct intel_encoder *encoder) | 207 | static void intel_enable_crt(struct intel_encoder *encoder) |
233 | { | 208 | { |
234 | struct intel_crt *crt = intel_encoder_to_crt(encoder); | 209 | struct intel_crt *crt = intel_encoder_to_crt(encoder); |
@@ -280,6 +255,10 @@ static bool intel_crt_compute_config(struct intel_encoder *encoder, | |||
280 | if (HAS_DDI(dev)) { | 255 | if (HAS_DDI(dev)) { |
281 | pipe_config->ddi_pll_sel = PORT_CLK_SEL_SPLL; | 256 | pipe_config->ddi_pll_sel = PORT_CLK_SEL_SPLL; |
282 | pipe_config->port_clock = 135000 * 2; | 257 | pipe_config->port_clock = 135000 * 2; |
258 | |||
259 | pipe_config->dpll_hw_state.wrpll = 0; | ||
260 | pipe_config->dpll_hw_state.spll = | ||
261 | SPLL_PLL_ENABLE | SPLL_PLL_FREQ_1350MHz | SPLL_PLL_SSC; | ||
283 | } | 262 | } |
284 | 263 | ||
285 | return true; | 264 | return true; |
@@ -860,8 +839,6 @@ void intel_crt_init(struct drm_device *dev) | |||
860 | if (HAS_DDI(dev)) { | 839 | if (HAS_DDI(dev)) { |
861 | crt->base.get_config = hsw_crt_get_config; | 840 | crt->base.get_config = hsw_crt_get_config; |
862 | crt->base.get_hw_state = intel_ddi_get_hw_state; | 841 | crt->base.get_hw_state = intel_ddi_get_hw_state; |
863 | crt->base.pre_enable = hsw_crt_pre_enable; | ||
864 | crt->base.post_disable = hsw_crt_post_disable; | ||
865 | } else { | 842 | } else { |
866 | crt->base.get_config = intel_crt_get_config; | 843 | crt->base.get_config = intel_crt_get_config; |
867 | crt->base.get_hw_state = intel_crt_get_hw_state; | 844 | crt->base.get_hw_state = intel_crt_get_hw_state; |