diff mbox

[10/10] drm/i915: Fix intel_dp_hot_plug()

Message ID 1412869090-48010-11-git-send-email-tprevite@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Todd Previte Oct. 9, 2014, 3:38 p.m. UTC
The hot plug function for DP appears to have been broken somewhere along the way. Without
this function being operational, hot plug events are not correctly received for compliance
testing. This patch implements the necessary functionality to resolve that issue.

Signed-off-by: Todd Previte <tprevite@gmail.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Chris Wilson Oct. 9, 2014, 3:49 p.m. UTC | #1
On Thu, Oct 09, 2014 at 08:38:10AM -0700, Todd Previte wrote:
> The hot plug function for DP appears to have been broken somewhere along the way. Without
> this function being operational, hot plug events are not correctly received for compliance
> testing. This patch implements the necessary functionality to resolve that issue.

Perhaps a discussion of why it was removed and how the apparent conflict
should be resolved?

In particular citing the commit that gutted the function and cc'ing the
author (Dave Airlie) and reviwers (you) are in order.

commit 0e32b39ceed665bfa4a77a4bc307b6652b991632
Author: Dave Airlie <airlied@redhat.com>
Date:   Fri May 2 14:02:48 2014 +1000

    drm/i915: add DP 1.2 MST support (v0.7)
-Chris
Dave Airlie Oct. 10, 2014, 3:38 a.m. UTC | #2
On 10 October 2014 01:49, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> On Thu, Oct 09, 2014 at 08:38:10AM -0700, Todd Previte wrote:
>> The hot plug function for DP appears to have been broken somewhere along the way. Without
>> this function being operational, hot plug events are not correctly received for compliance
>> testing. This patch implements the necessary functionality to resolve that issue.
>
> Perhaps a discussion of why it was removed and how the apparent conflict
> should be resolved?
>
> In particular citing the commit that gutted the function and cc'ing the
> author (Dave Airlie) and reviwers (you) are in order.
>
> commit 0e32b39ceed665bfa4a77a4bc307b6652b991632
> Author: Dave Airlie <airlied@redhat.com>
> Date:   Fri May 2 14:02:48 2014 +1000
>
>     drm/i915: add DP 1.2 MST support (v0.7)

I'm sure this shouldn't be needed as we get short/long hotplug DP
events in the pulse handler,
not here.

Dave.
Todd Previte Oct. 11, 2014, 12:20 a.m. UTC | #3
On 10/9/14 8:38 PM, Dave Airlie wrote:
> On 10 October 2014 01:49, Chris Wilson <chris@chris-wilson.co.uk> wrote:
>> On Thu, Oct 09, 2014 at 08:38:10AM -0700, Todd Previte wrote:
>>> The hot plug function for DP appears to have been broken somewhere along the way. Without
>>> this function being operational, hot plug events are not correctly received for compliance
>>> testing. This patch implements the necessary functionality to resolve that issue.
>> Perhaps a discussion of why it was removed and how the apparent conflict
>> should be resolved?
>>
>> In particular citing the commit that gutted the function and cc'ing the
>> author (Dave Airlie) and reviwers (you) are in order.
>>
>> commit 0e32b39ceed665bfa4a77a4bc307b6652b991632
>> Author: Dave Airlie <airlied@redhat.com>
>> Date:   Fri May 2 14:02:48 2014 +1000
>>
>>      drm/i915: add DP 1.2 MST support (v0.7)
> I'm sure this shouldn't be needed as we get short/long hotplug DP
> events in the pulse handler,
> not here.
>
> Dave.
Sounds good. Looking at the HPD pulse handler, I think I can get the 
necessary code in there for the non-MST case to get compliance testing 
working with just the pulse handler. The short pulse will catch it 
already, but I need to add code to the long pulse segment in order to 
get the correct notification there.

-T
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 9da948c..8005955 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4807,6 +4807,13 @@  static const struct drm_encoder_funcs intel_dp_enc_funcs = {
 void
 intel_dp_hot_plug(struct intel_encoder *intel_encoder)
 {
+	struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base);
+	struct drm_device *dev = intel_encoder->base.dev;
+
+	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
+	intel_dp_check_link_status(intel_dp);
+	drm_modeset_unlock(&dev->mode_config.connection_mutex);
+
 	return;
 }