diff --git a/common/haswell_shared/hw-gfx-gma-port_detect.adb b/common/haswell_shared/hw-gfx-gma-port_detect.adb
index 01bd0fe..bf9fba5 100644
--- a/common/haswell_shared/hw-gfx-gma-port_detect.adb
+++ b/common/haswell_shared/hw-gfx-gma-port_detect.adb
@@ -19,9 +19,6 @@
 package body HW.GFX.GMA.Port_Detect
 is
 
-   PCH_ADPA_CRT_HPD_CHANNEL_MASK       : constant := 3 * 2 ** 24;
-   PCH_ADPA_CRT_HPD_ENABLE             : constant := 1 * 2 ** 23;
-
    SFUSE_STRAP_CRT_DAC_CAP_DISABLE     : constant := 1 * 2 **  6;
 
    HOTPLUG_CTL_DDI_A_HPD_INPUT_ENABLE  : constant := 1 * 2 **  4;
@@ -83,12 +80,6 @@
            (Register => Registers.SFUSE_STRAP,
             Mask     => SFUSE_STRAP_CRT_DAC_CAP_DISABLE,
             Result   => DAC_Disabled);
-         if not DAC_Disabled then
-            Registers.Set_Mask
-              (Register => Registers.PCH_ADPA,
-               Mask     => PCH_ADPA_CRT_HPD_CHANNEL_MASK or   -- clear status
-                           PCH_ADPA_CRT_HPD_ENABLE);
-         end if;
          Config.Valid_Port (Analog) := not DAC_Disabled;
       end if;
 
@@ -156,16 +147,7 @@
       GPU_Port : constant GMA.GPU_Port :=
          Config_Helpers.To_GPU_Port (Primary, Port);
    begin
-      if Port = Analog then
-         Registers.Read (Registers.PCH_ADPA, Ctl32, Verbose => False);
-         Ctl32 := Ctl32 and PCH_ADPA_CRT_HPD_CHANNEL_MASK;
-         Detected := Ctl32 = PCH_ADPA_CRT_HPD_CHANNEL_MASK;
-         if Ctl32 /= 0 then
-            Registers.Set_Mask
-              (Register => Registers.PCH_ADPA,
-               Mask     => PCH_ADPA_CRT_HPD_CHANNEL_MASK);
-         end if;
-      elsif Config.Has_HOTPLUG_CTL and then GPU_Port = DIGI_A then
+      if Config.Has_HOTPLUG_CTL and then GPU_Port = DIGI_A then
          Registers.Read (Registers.HOTPLUG_CTL, Ctl32, Verbose => False);
          Detected := (Ctl32 and HOTPLUG_CTL_DDI_A_HPD_LONG_DETECT) /= 0;
 
diff --git a/common/ironlake/hw-gfx-gma-port_detect.adb b/common/ironlake/hw-gfx-gma-port_detect.adb
index 142f712..900c505 100644
--- a/common/ironlake/hw-gfx-gma-port_detect.adb
+++ b/common/ironlake/hw-gfx-gma-port_detect.adb
@@ -19,9 +19,6 @@
 package body HW.GFX.GMA.Port_Detect
 is
 
-   PCH_ADPA_CRT_HPD_CHANNEL_MASK       : constant := 3 * 2 ** 24;
-   PCH_ADPA_CRT_HPD_ENABLE             : constant := 1 * 2 ** 23;
-
    DP_PORT_DETECTED                    : constant := 1 * 2 **  2;
    PCH_DIGI_PORT_DETECTED              : constant := 1 * 2 **  2;
    PCH_LVDS_PORT_DETECTED              : constant := 1 * 2 **  1;
@@ -72,12 +69,6 @@
          PCH_HDMI_C => DP2,
          PCH_HDMI_D => DP3);
    begin
-      -- PCH_DAC (_A)
-      Registers.Set_Mask
-        (Register => Registers.PCH_ADPA,
-         Mask     => PCH_ADPA_CRT_HPD_CHANNEL_MASK or   -- clear status
-                     PCH_ADPA_CRT_HPD_ENABLE);
-
       case Config.Internal_Display is
          when LVDS =>
             -- PCH_LVDS
@@ -136,27 +127,19 @@
             when DP3    => PCH_HDMI_D,
             when others => Config_Helpers.To_PCH_Port (Port));
    begin
-      case PCH_Port is
-         when PCH_DAC =>
-            Registers.Read (Registers.PCH_ADPA, Ctl32, Verbose => False);
-            Ctl32 := Ctl32 and PCH_ADPA_CRT_HPD_CHANNEL_MASK;
-            Detected := Ctl32 = PCH_ADPA_CRT_HPD_CHANNEL_MASK;
-            if Ctl32 /= 0 then
-               Registers.Set_Mask (Registers.PCH_ADPA, Ctl32);
-            end if;
-         when PCH_HDMI_B .. PCH_HDMI_D =>
-            Registers.Read (Registers.SHOTPLUG_CTL, Ctl32, Verbose => False);
-            Detected := (Ctl32 and SHOTPLUG_CTL_LONG_DETECT (PCH_Port)) /= 0;
+      if PCH_Port in PCH_HDMI_B .. PCH_HDMI_D then
+         Registers.Read (Registers.SHOTPLUG_CTL, Ctl32, Verbose => False);
+         Detected := (Ctl32 and SHOTPLUG_CTL_LONG_DETECT (PCH_Port)) /= 0;
 
-            if (Ctl32 and SHOTPLUG_CTL_HPD_STATUS (PCH_Port)) /= 0 then
-               Registers.Unset_And_Set_Mask
-                 (Register    => Registers.SHOTPLUG_CTL,
-                  Mask_Unset  => SHOTPLUG_CTL_DETECT_MASK,
-                  Mask_Set    => SHOTPLUG_CTL_HPD_STATUS (PCH_Port));
-            end if;
-         when others =>
-            Detected := False;
-      end case;
+         if (Ctl32 and SHOTPLUG_CTL_HPD_STATUS (PCH_Port)) /= 0 then
+            Registers.Unset_And_Set_Mask
+              (Register    => Registers.SHOTPLUG_CTL,
+               Mask_Unset  => SHOTPLUG_CTL_DETECT_MASK,
+               Mask_Set    => SHOTPLUG_CTL_HPD_STATUS (PCH_Port));
+         end if;
+      else
+         Detected := False;
+      end if;
    end Hotplug_Detect;
 
    procedure Clear_Hotplug_Detect (Port : Active_Port_Type)
