diff --git a/common/haswell_shared/hw-gfx-gma-connectors-ddi.ads b/common/haswell_shared/hw-gfx-gma-connectors-ddi.ads
index ec1fce2..d43db97 100644
--- a/common/haswell_shared/hw-gfx-gma-connectors-ddi.ads
+++ b/common/haswell_shared/hw-gfx-gma-connectors-ddi.ads
@@ -22,9 +22,14 @@
    procedure Pre_On
      (Port_Cfg : in     Port_Config;
       PLL_Hint : in     Word32;
-      Success  :    out Boolean);
+      Success  :    out Boolean)
+   with
+     Pre => Port_Cfg.Port in Digital_Port;
 
-   procedure Post_On (Port_Cfg : Port_Config);
+   procedure Post_On (Port_Cfg : Port_Config)
+   with
+     Pre => Port_Cfg.Port in Digital_Port;
+
 
    procedure Off (Port : Digital_Port);
 
diff --git a/common/haswell_shared/hw-gfx-gma-connectors.adb b/common/haswell_shared/hw-gfx-gma-connectors.adb
index 0d0ed71..2b29f99 100644
--- a/common/haswell_shared/hw-gfx-gma-connectors.adb
+++ b/common/haswell_shared/hw-gfx-gma-connectors.adb
@@ -41,8 +41,11 @@
    is
    begin
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
-
-      DDI.Pre_On (Port_Cfg, PLL_Hint, Success);
+      if Port_Cfg.Port in Digital_Port then
+         DDI.Pre_On (Port_Cfg, PLL_Hint, Success);
+      else
+         Success := False; -- Should not happen
+      end if;
    end Pre_On;
 
    procedure Post_On
@@ -53,13 +56,16 @@
    begin
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
 
-      DDI.Post_On (Port_Cfg);
+      if Port_Cfg.Port in Digital_Port then
+         DDI.Post_On (Port_Cfg);
 
-      if Port_Cfg.Port = DIGI_A then
-         Panel.Backlight_On;
+         if Port_Cfg.Port = DIGI_A then
+            Panel.Backlight_On;
+         end if;
+         Success := True;
+      else
+         Success := False; -- Should not happen
       end if;
-
-      Success := True;
    end Post_On;
 
    ----------------------------------------------------------------------------
@@ -79,8 +85,9 @@
    is
    begin
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
-
-      DDI.Off (Port_Cfg.Port);
+      if Port_Cfg.Port in Digital_Port then
+         DDI.Off (Port_Cfg.Port);
+      end if;
    end Post_Off;
 
    ----------------------------------------------------------------------------
diff --git a/common/hw-gfx-gma-connector_info.adb b/common/hw-gfx-gma-connector_info.adb
index 798e61c..e8357be 100644
--- a/common/hw-gfx-gma-connector_info.adb
+++ b/common/hw-gfx-gma-connector_info.adb
@@ -87,7 +87,8 @@
    begin
       return
         (if Port_Cfg.Port = DIGI_A or
-            (Port_Cfg.Is_FDI and Port_Cfg.PCH_Port = PCH_LVDS)
+           (Port_Cfg.Is_FDI and Port_Cfg.PCH_Port = PCH_LVDS) or
+           Port_Cfg.Port = LVDS
          then 6
          else 8);
    end Default_BPC;
diff --git a/common/hw-gfx-gma-transcoder.adb b/common/hw-gfx-gma-transcoder.adb
index 5990fcf..97ad069 100644
--- a/common/hw-gfx-gma-transcoder.adb
+++ b/common/hw-gfx-gma-transcoder.adb
@@ -218,7 +218,8 @@
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
 
       if Config.Has_Trans_Clk_Sel and then
-         Trans.CLK_SEL /= Registers.Invalid_Register
+         Trans.CLK_SEL /= Registers.Invalid_Register and then
+         Port_Cfg.Port in Digital_Port
       then
          Registers.Write
            (Register => Trans.CLK_SEL,
@@ -249,7 +250,7 @@
       Trans : Transcoder_Regs renames
                Transcoders (Get_Idx (Pipe, Port_Cfg.Port));
    begin
-      if Config.Has_Pipe_DDI_Func then
+      if Config.Has_Pipe_DDI_Func and Port_Cfg.Port in Digital_Port then
          Registers.Write
            (Register => Trans.DDI_FUNC_CTL,
             Value    => DDI_FUNC_CTL_ENABLE or
diff --git a/common/hw-gfx-gma.ads b/common/hw-gfx-gma.ads
index 50a76a0..fadf437 100644
--- a/common/hw-gfx-gma.ads
+++ b/common/hw-gfx-gma.ads
@@ -126,9 +126,11 @@
    subtype Active_Port_Type is Port_Type
       range Port_Type'Succ (Disabled) .. Port_Type'Last;
 
-   type GPU_Port is (DIGI_A, DIGI_B, DIGI_C, DIGI_D, DIGI_E);
+   type GPU_Port is (DIGI_A, DIGI_B, DIGI_C, DIGI_D, DIGI_E, LVDS, VGA);
 
    subtype Digital_Port is GPU_Port range DIGI_A .. DIGI_E;
+   subtype GMCH_DP_Port is GPU_Port range DIGI_B .. DIGI_D;
+   subtype GMCH_HDMI_Port is GPU_Port range DIGI_B .. DIGI_C;
 
    type PCH_Port is
      (PCH_DAC, PCH_LVDS,
