aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_crt.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_crt.c')
-rw-r--r--drivers/gpu/drm/i915/intel_crt.c45
1 files changed, 24 insertions, 21 deletions
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index e115bcc6766f..5819d524d917 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -67,7 +67,7 @@ static bool intel_crt_get_hw_state(struct intel_encoder *encoder,
67 enum pipe *pipe) 67 enum pipe *pipe)
68{ 68{
69 struct drm_device *dev = encoder->base.dev; 69 struct drm_device *dev = encoder->base.dev;
70 struct drm_i915_private *dev_priv = dev->dev_private; 70 struct drm_i915_private *dev_priv = to_i915(dev);
71 struct intel_crt *crt = intel_encoder_to_crt(encoder); 71 struct intel_crt *crt = intel_encoder_to_crt(encoder);
72 enum intel_display_power_domain power_domain; 72 enum intel_display_power_domain power_domain;
73 u32 tmp; 73 u32 tmp;
@@ -98,7 +98,7 @@ out:
98 98
99static unsigned int intel_crt_get_flags(struct intel_encoder *encoder) 99static unsigned int intel_crt_get_flags(struct intel_encoder *encoder)
100{ 100{
101 struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; 101 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
102 struct intel_crt *crt = intel_encoder_to_crt(encoder); 102 struct intel_crt *crt = intel_encoder_to_crt(encoder);
103 u32 tmp, flags = 0; 103 u32 tmp, flags = 0;
104 104
@@ -146,7 +146,7 @@ static void hsw_crt_get_config(struct intel_encoder *encoder,
146static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode) 146static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode)
147{ 147{
148 struct drm_device *dev = encoder->base.dev; 148 struct drm_device *dev = encoder->base.dev;
149 struct drm_i915_private *dev_priv = dev->dev_private; 149 struct drm_i915_private *dev_priv = to_i915(dev);
150 struct intel_crt *crt = intel_encoder_to_crt(encoder); 150 struct intel_crt *crt = intel_encoder_to_crt(encoder);
151 struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); 151 struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
152 const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode; 152 const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
@@ -281,7 +281,7 @@ static bool intel_ironlake_crt_detect_hotplug(struct drm_connector *connector)
281{ 281{
282 struct drm_device *dev = connector->dev; 282 struct drm_device *dev = connector->dev;
283 struct intel_crt *crt = intel_attached_crt(connector); 283 struct intel_crt *crt = intel_attached_crt(connector);
284 struct drm_i915_private *dev_priv = dev->dev_private; 284 struct drm_i915_private *dev_priv = to_i915(dev);
285 u32 adpa; 285 u32 adpa;
286 bool ret; 286 bool ret;
287 287
@@ -301,8 +301,10 @@ static bool intel_ironlake_crt_detect_hotplug(struct drm_connector *connector)
301 301
302 I915_WRITE(crt->adpa_reg, adpa); 302 I915_WRITE(crt->adpa_reg, adpa);
303 303
304 if (wait_for((I915_READ(crt->adpa_reg) & ADPA_CRT_HOTPLUG_FORCE_TRIGGER) == 0, 304 if (intel_wait_for_register(dev_priv,
305 1000)) 305 crt->adpa_reg,
306 ADPA_CRT_HOTPLUG_FORCE_TRIGGER, 0,
307 1000))
306 DRM_DEBUG_KMS("timed out waiting for FORCE_TRIGGER"); 308 DRM_DEBUG_KMS("timed out waiting for FORCE_TRIGGER");
307 309
308 if (turn_off_dac) { 310 if (turn_off_dac) {
@@ -326,7 +328,7 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
326{ 328{
327 struct drm_device *dev = connector->dev; 329 struct drm_device *dev = connector->dev;
328 struct intel_crt *crt = intel_attached_crt(connector); 330 struct intel_crt *crt = intel_attached_crt(connector);
329 struct drm_i915_private *dev_priv = dev->dev_private; 331 struct drm_i915_private *dev_priv = to_i915(dev);
330 u32 adpa; 332 u32 adpa;
331 bool ret; 333 bool ret;
332 u32 save_adpa; 334 u32 save_adpa;
@@ -338,8 +340,10 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
338 340
339 I915_WRITE(crt->adpa_reg, adpa); 341 I915_WRITE(crt->adpa_reg, adpa);
340 342
341 if (wait_for((I915_READ(crt->adpa_reg) & ADPA_CRT_HOTPLUG_FORCE_TRIGGER) == 0, 343 if (intel_wait_for_register(dev_priv,
342 1000)) { 344 crt->adpa_reg,
345 ADPA_CRT_HOTPLUG_FORCE_TRIGGER, 0,
346 1000)) {
343 DRM_DEBUG_KMS("timed out waiting for FORCE_TRIGGER"); 347 DRM_DEBUG_KMS("timed out waiting for FORCE_TRIGGER");
344 I915_WRITE(crt->adpa_reg, save_adpa); 348 I915_WRITE(crt->adpa_reg, save_adpa);
345 } 349 }
@@ -367,7 +371,7 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
367static bool intel_crt_detect_hotplug(struct drm_connector *connector) 371static bool intel_crt_detect_hotplug(struct drm_connector *connector)
368{ 372{
369 struct drm_device *dev = connector->dev; 373 struct drm_device *dev = connector->dev;
370 struct drm_i915_private *dev_priv = dev->dev_private; 374 struct drm_i915_private *dev_priv = to_i915(dev);
371 u32 stat; 375 u32 stat;
372 bool ret = false; 376 bool ret = false;
373 int i, tries = 0; 377 int i, tries = 0;
@@ -394,9 +398,9 @@ static bool intel_crt_detect_hotplug(struct drm_connector *connector)
394 CRT_HOTPLUG_FORCE_DETECT, 398 CRT_HOTPLUG_FORCE_DETECT,
395 CRT_HOTPLUG_FORCE_DETECT); 399 CRT_HOTPLUG_FORCE_DETECT);
396 /* wait for FORCE_DETECT to go off */ 400 /* wait for FORCE_DETECT to go off */
397 if (wait_for((I915_READ(PORT_HOTPLUG_EN) & 401 if (intel_wait_for_register(dev_priv, PORT_HOTPLUG_EN,
398 CRT_HOTPLUG_FORCE_DETECT) == 0, 402 CRT_HOTPLUG_FORCE_DETECT, 0,
399 1000)) 403 1000))
400 DRM_DEBUG_KMS("timed out waiting for FORCE_DETECT to go off"); 404 DRM_DEBUG_KMS("timed out waiting for FORCE_DETECT to go off");
401 } 405 }
402 406
@@ -449,7 +453,7 @@ static int intel_crt_ddc_get_modes(struct drm_connector *connector,
449static bool intel_crt_detect_ddc(struct drm_connector *connector) 453static bool intel_crt_detect_ddc(struct drm_connector *connector)
450{ 454{
451 struct intel_crt *crt = intel_attached_crt(connector); 455 struct intel_crt *crt = intel_attached_crt(connector);
452 struct drm_i915_private *dev_priv = crt->base.base.dev->dev_private; 456 struct drm_i915_private *dev_priv = to_i915(crt->base.base.dev);
453 struct edid *edid; 457 struct edid *edid;
454 struct i2c_adapter *i2c; 458 struct i2c_adapter *i2c;
455 459
@@ -485,7 +489,7 @@ static enum drm_connector_status
485intel_crt_load_detect(struct intel_crt *crt, uint32_t pipe) 489intel_crt_load_detect(struct intel_crt *crt, uint32_t pipe)
486{ 490{
487 struct drm_device *dev = crt->base.base.dev; 491 struct drm_device *dev = crt->base.base.dev;
488 struct drm_i915_private *dev_priv = dev->dev_private; 492 struct drm_i915_private *dev_priv = to_i915(dev);
489 uint32_t save_bclrpat; 493 uint32_t save_bclrpat;
490 uint32_t save_vtotal; 494 uint32_t save_vtotal;
491 uint32_t vtotal, vactive; 495 uint32_t vtotal, vactive;
@@ -600,7 +604,7 @@ static enum drm_connector_status
600intel_crt_detect(struct drm_connector *connector, bool force) 604intel_crt_detect(struct drm_connector *connector, bool force)
601{ 605{
602 struct drm_device *dev = connector->dev; 606 struct drm_device *dev = connector->dev;
603 struct drm_i915_private *dev_priv = dev->dev_private; 607 struct drm_i915_private *dev_priv = to_i915(dev);
604 struct intel_crt *crt = intel_attached_crt(connector); 608 struct intel_crt *crt = intel_attached_crt(connector);
605 struct intel_encoder *intel_encoder = &crt->base; 609 struct intel_encoder *intel_encoder = &crt->base;
606 enum intel_display_power_domain power_domain; 610 enum intel_display_power_domain power_domain;
@@ -681,7 +685,7 @@ static void intel_crt_destroy(struct drm_connector *connector)
681static int intel_crt_get_modes(struct drm_connector *connector) 685static int intel_crt_get_modes(struct drm_connector *connector)
682{ 686{
683 struct drm_device *dev = connector->dev; 687 struct drm_device *dev = connector->dev;
684 struct drm_i915_private *dev_priv = dev->dev_private; 688 struct drm_i915_private *dev_priv = to_i915(dev);
685 struct intel_crt *crt = intel_attached_crt(connector); 689 struct intel_crt *crt = intel_attached_crt(connector);
686 struct intel_encoder *intel_encoder = &crt->base; 690 struct intel_encoder *intel_encoder = &crt->base;
687 enum intel_display_power_domain power_domain; 691 enum intel_display_power_domain power_domain;
@@ -716,7 +720,7 @@ static int intel_crt_set_property(struct drm_connector *connector,
716static void intel_crt_reset(struct drm_connector *connector) 720static void intel_crt_reset(struct drm_connector *connector)
717{ 721{
718 struct drm_device *dev = connector->dev; 722 struct drm_device *dev = connector->dev;
719 struct drm_i915_private *dev_priv = dev->dev_private; 723 struct drm_i915_private *dev_priv = to_i915(dev);
720 struct intel_crt *crt = intel_attached_crt(connector); 724 struct intel_crt *crt = intel_attached_crt(connector);
721 725
722 if (INTEL_INFO(dev)->gen >= 5) { 726 if (INTEL_INFO(dev)->gen >= 5) {
@@ -743,6 +747,7 @@ static const struct drm_connector_funcs intel_crt_connector_funcs = {
743 .dpms = drm_atomic_helper_connector_dpms, 747 .dpms = drm_atomic_helper_connector_dpms,
744 .detect = intel_crt_detect, 748 .detect = intel_crt_detect,
745 .fill_modes = drm_helper_probe_single_connector_modes, 749 .fill_modes = drm_helper_probe_single_connector_modes,
750 .late_register = intel_connector_register,
746 .early_unregister = intel_connector_unregister, 751 .early_unregister = intel_connector_unregister,
747 .destroy = intel_crt_destroy, 752 .destroy = intel_crt_destroy,
748 .set_property = intel_crt_set_property, 753 .set_property = intel_crt_set_property,
@@ -791,7 +796,7 @@ void intel_crt_init(struct drm_device *dev)
791 struct drm_connector *connector; 796 struct drm_connector *connector;
792 struct intel_crt *crt; 797 struct intel_crt *crt;
793 struct intel_connector *intel_connector; 798 struct intel_connector *intel_connector;
794 struct drm_i915_private *dev_priv = dev->dev_private; 799 struct drm_i915_private *dev_priv = to_i915(dev);
795 i915_reg_t adpa_reg; 800 i915_reg_t adpa_reg;
796 u32 adpa; 801 u32 adpa;
797 802
@@ -879,8 +884,6 @@ void intel_crt_init(struct drm_device *dev)
879 884
880 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); 885 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
881 886
882 drm_connector_register(connector);
883
884 if (!I915_HAS_HOTPLUG(dev)) 887 if (!I915_HAS_HOTPLUG(dev))
885 intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT; 888 intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT;
886 889