aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-06-09 11:02:04 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-06-10 03:59:26 -0400
commit7ba220cec0bbe9453c1f958cf282f84a157c924f (patch)
tree8e7099fd13ba1f0b11f70f615b237876727d73ed /drivers/gpu
parent7ee2aff373498a887cde0d564f89cf05377c538e (diff)
drm/i915: Enable hotplug interrupts after querying hw capabilities.
sdvo->hotplug_active is initialised during intel_sdvo_setup_outputs(), and so we never enabled the hotplug interrupts on SDVO as we were checking too early. This regression has been introduced somewhere in the hpd rework for the storm detection and handling starting with commit 1d843f9de4e6dc6a899b6f07f106c00da09925e6 Author: Egbert Eich <eich@suse.de> Date: Mon Feb 25 12:06:49 2013 -0500 DRM/I915: Add enum hpd_pin to intel_encoder. and the follow-up patches to use the new encoder->hpd_pin variable for the different irq setup functions. The problem is that encoder->hpd_pin was set up _before_ the output setup was done and so before we could assess the hotplug capabilities of the outputs on an sdvo encoder. Reported-by: Alex Fiestas <afiestas@kde.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58405 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> [danvet: Add regression note.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 69886d93312b..f44aa7503325 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -2790,14 +2790,6 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob)
2790 SDVOB_HOTPLUG_INT_STATUS_I915 : SDVOC_HOTPLUG_INT_STATUS_I915; 2790 SDVOB_HOTPLUG_INT_STATUS_I915 : SDVOC_HOTPLUG_INT_STATUS_I915;
2791 } 2791 }
2792 2792
2793 /* Only enable the hotplug irq if we need it, to work around noisy
2794 * hotplug lines.
2795 */
2796 if (intel_sdvo->hotplug_active) {
2797 intel_encoder->hpd_pin =
2798 intel_sdvo->is_sdvob ? HPD_SDVO_B : HPD_SDVO_C;
2799 }
2800
2801 intel_encoder->compute_config = intel_sdvo_compute_config; 2793 intel_encoder->compute_config = intel_sdvo_compute_config;
2802 intel_encoder->disable = intel_disable_sdvo; 2794 intel_encoder->disable = intel_disable_sdvo;
2803 intel_encoder->mode_set = intel_sdvo_mode_set; 2795 intel_encoder->mode_set = intel_sdvo_mode_set;
@@ -2816,6 +2808,14 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob)
2816 goto err_output; 2808 goto err_output;
2817 } 2809 }
2818 2810
2811 /* Only enable the hotplug irq if we need it, to work around noisy
2812 * hotplug lines.
2813 */
2814 if (intel_sdvo->hotplug_active) {
2815 intel_encoder->hpd_pin =
2816 intel_sdvo->is_sdvob ? HPD_SDVO_B : HPD_SDVO_C;
2817 }
2818
2819 /* 2819 /*
2820 * Cloning SDVO with anything is often impossible, since the SDVO 2820 * Cloning SDVO with anything is often impossible, since the SDVO
2821 * encoder can request a special input timing mode. And even if that's 2821 * encoder can request a special input timing mode. And even if that's