[Bug 1196556] Fwd: Patch "drm/i915: Fix up sdvo hpd pins for i965g/gm" has been added to the 3.10-stable tree

Harald Sitter sitter.harald at gmail.com
Wed Jul 24 14:13:06 UTC 2013


---------- Forwarded message ----------
From: gregkh at linuxfoundation.org
To: daniel.vetter at ffwll.ch, afiestas at kde.org,
arthur.j.runyan at intel.com, chris at chris-wilson.co.uk,
gregkh at linuxfoundation.org
Cc: stable at vger.kernel.org, stable-commits at vger.kernel.org
Date: Tue, 23 Jul 2013 09:56:48 -0700
Subject: Patch "drm/i915: Fix up sdvo hpd pins for i965g/gm" has been
added to the 3.10-stable tree

This is a note to let you know that I've just added the patch titled

    drm/i915: Fix up sdvo hpd pins for i965g/gm

to the 3.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-i915-fix-up-sdvo-hpd-pins-for-i965g-gm.patch
and it can be found in the queue-3.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable at vger.kernel.org> know about it.


>From 4f7fd7095d85cd31c86cb9ba87bc301319630ccc Mon Sep 17 00:00:00 2001
From: Daniel Vetter <daniel.vetter at ffwll.ch>
Date: Mon, 24 Jun 2013 21:33:28 +0200
Subject: drm/i915: Fix up sdvo hpd pins for i965g/gm

From: Daniel Vetter <daniel.vetter at ffwll.ch>

commit 4f7fd7095d85cd31c86cb9ba87bc301319630ccc upstream.

Bspec seems to be full of lies, at least it disagress with reality:
Two systems corrobated that SDVO hpd bits are the same as on gen3.

v2: Update comment a bit.

Tested-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Arthur Ranyan <arthur.j.runyan at intel.com>
Reported-and-tested-by: Alex Fiestas <afiestas at kde.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58405
Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>

---
 drivers/gpu/drm/i915/i915_irq.c |   13 ++-----------
 drivers/gpu/drm/i915/i915_reg.h |   13 ++++++-------
 2 files changed, 8 insertions(+), 18 deletions(-)

--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -70,15 +70,6 @@ static const u32 hpd_status_gen4[] = {
        [HPD_PORT_D] = PORTD_HOTPLUG_INT_STATUS
 };

-static const u32 hpd_status_i965[] = {
-        [HPD_CRT] = CRT_HOTPLUG_INT_STATUS,
-        [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_STATUS_I965,
-        [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_STATUS_I965,
-        [HPD_PORT_B] = PORTB_HOTPLUG_INT_STATUS,
-        [HPD_PORT_C] = PORTC_HOTPLUG_INT_STATUS,
-        [HPD_PORT_D] = PORTD_HOTPLUG_INT_STATUS
-};
-
 static const u32 hpd_status_i915[] = { /* i915 and valleyview are the same */
        [HPD_CRT] = CRT_HOTPLUG_INT_STATUS,
        [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_STATUS_I915,
@@ -2952,13 +2943,13 @@ static irqreturn_t i965_irq_handler(int
                        u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT);
                        u32 hotplug_trigger = hotplug_status & (IS_G4X(dev) ?

HOTPLUG_INT_STATUS_G4X :
-
HOTPLUG_INT_STATUS_I965);
+
HOTPLUG_INT_STATUS_I915);

                        DRM_DEBUG_DRIVER("hotplug event received, stat
0x%08x\n",
                                  hotplug_status);
                        if (hotplug_trigger) {
                                if (hotplug_irq_storm_detect(dev,
hotplug_trigger,
-
IS_G4X(dev) ? hpd_status_gen4 : hpd_status_i965))
+
IS_G4X(dev) ? hpd_status_gen4 : hpd_status_i915))
                                        i915_hpd_irq_setup(dev);
                                queue_work(dev_priv->wq,
                                           &dev_priv->hotplug_work);
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1691,6 +1691,12 @@
 /* SDVO is different across gen3/4 */
 #define   SDVOC_HOTPLUG_INT_STATUS_G4X         (1 << 3)
 #define   SDVOB_HOTPLUG_INT_STATUS_G4X         (1 << 2)
+/*
+ * Bspec seems to be seriously misleaded about the SDVO hpd bits on i965g/gm,
+ * since reality corrobates that they're the same as on gen3. But keep these
+ * bits here (and the comment!) to help any other lost wanderers back onto the
+ * right tracks.
+ */
 #define   SDVOC_HOTPLUG_INT_STATUS_I965                (3 << 4)
 #define   SDVOB_HOTPLUG_INT_STATUS_I965                (3 << 2)
 #define   SDVOC_HOTPLUG_INT_STATUS_I915                (1 << 7)
@@ -1701,13 +1707,6 @@
                                                 PORTB_HOTPLUG_INT_STATUS | \
                                                 PORTC_HOTPLUG_INT_STATUS | \
                                                 PORTD_HOTPLUG_INT_STATUS)
-
-#define HOTPLUG_INT_STATUS_I965
(CRT_HOTPLUG_INT_STATUS | \
-
SDVOB_HOTPLUG_INT_STATUS_I965 | \
-
SDVOC_HOTPLUG_INT_STATUS_I965 | \
-                                                PORTB_HOTPLUG_INT_STATUS | \
-                                                PORTC_HOTPLUG_INT_STATUS | \
-                                                PORTD_HOTPLUG_INT_STATUS)

 #define HOTPLUG_INT_STATUS_I915
(CRT_HOTPLUG_INT_STATUS | \

SDVOB_HOTPLUG_INT_STATUS_I915 | \


Patches currently in stable-queue which might be from daniel.vetter at ffwll.ch are

queue-3.10/drm-i915-only-clear-write-domains-after-a-successful-wait-seqno.patch
queue-3.10/drm-i915-fix-up-sdvo-hpd-pins-for-i965g-gm.patch
queue-3.10/drm-i915-fix-context-sizes-on-hsw.patch

-- 
You received this bug notification because you are a member of Kubuntu
Bugs, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1196556

Title:
  Hot plug events not detected in i965

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1196556/+subscriptions




More information about the kubuntu-bugs mailing list