]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
UBUNTU: SAUCE: Revert "drm/i915: Fix hotplug irq ack on i965/g4x"
authorKai-Heng Feng <kai.heng.feng@canonical.com>
Tue, 12 Mar 2019 17:30:42 +0000 (01:30 +0800)
committerStefan Bader <stefan.bader@canonical.com>
Mon, 1 Apr 2019 12:37:29 +0000 (14:37 +0200)
BugLink: https://bugs.launchpad.net/bugs/1819486
This reverts commit 2f2a7c6570455b1d49161f14ecd1438b3504deab.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Acked-by: Kleber Souza <kleber.souza@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/gpu/drm/i915/i915_irq.c

index 38d6d1bfe14eadae2e6d44d8c7f669f4dffb1169..f6d496c09d3f0ba9a3469f6e39cdb19a7a98f72c 100644 (file)
@@ -1956,38 +1956,10 @@ static void valleyview_pipestat_irq_handler(struct drm_i915_private *dev_priv,
 
 static u32 i9xx_hpd_irq_ack(struct drm_i915_private *dev_priv)
 {
-       u32 hotplug_status = 0, hotplug_status_mask;
-       int i;
-
-       if (IS_G4X(dev_priv) ||
-           IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
-               hotplug_status_mask = HOTPLUG_INT_STATUS_G4X |
-                       DP_AUX_CHANNEL_MASK_INT_STATUS_G4X;
-       else
-               hotplug_status_mask = HOTPLUG_INT_STATUS_I915;
+       u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT);
 
-       /*
-        * We absolutely have to clear all the pending interrupt
-        * bits in PORT_HOTPLUG_STAT. Otherwise the ISR port
-        * interrupt bit won't have an edge, and the i965/g4x
-        * edge triggered IIR will not notice that an interrupt
-        * is still pending. We can't use PORT_HOTPLUG_EN to
-        * guarantee the edge as the act of toggling the enable
-        * bits can itself generate a new hotplug interrupt :(
-        */
-       for (i = 0; i < 10; i++) {
-               u32 tmp = I915_READ(PORT_HOTPLUG_STAT) & hotplug_status_mask;
-
-               if (tmp == 0)
-                       return hotplug_status;
-
-               hotplug_status |= tmp;
+       if (hotplug_status)
                I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status);
-       }
-
-       WARN_ONCE(1,
-                 "PORT_HOTPLUG_STAT did not clear (0x%08x)\n",
-                 I915_READ(PORT_HOTPLUG_STAT));
 
        return hotplug_status;
 }