diff --git a/common/broxton/hw-gfx-gma-ddi_phy.adb b/common/broxton/hw-gfx-gma-ddi_phy.adb
index 83c7c28..b1e8344 100644
--- a/common/broxton/hw-gfx-gma-ddi_phy.adb
+++ b/common/broxton/hw-gfx-gma-ddi_phy.adb
@@ -259,4 +259,67 @@
       Unset_Mask (BXT_P_CR_GT_DISP_PWRON, GT_DISPLAY_POWER_ON (Phy));
    end Power_Off;
 
+   ----------------------------------------------------------------------------
+
+   type Lanes is range 0 .. 3;
+   type Lane_Reg_Array is array (Lanes) of Registers_Index;
+
+   type Port_TX_Regs is record
+      DW14_LN : Lane_Reg_Array;
+   end record;
+   type Port_TX_Array is array (DDI_Phy_Port) of Port_TX_Regs;
+
+   PORT_TX : constant Port_TX_Array :=
+     (DIGI_A =>
+        (DW14_LN =>
+           (BXT_PORT_TX_DW14_LN0_A,
+            BXT_PORT_TX_DW14_LN1_A,
+            BXT_PORT_TX_DW14_LN2_A,
+            BXT_PORT_TX_DW14_LN3_A)),
+      DIGI_B =>
+        (DW14_LN =>
+           (BXT_PORT_TX_DW14_LN0_B,
+            BXT_PORT_TX_DW14_LN1_B,
+            BXT_PORT_TX_DW14_LN2_B,
+            BXT_PORT_TX_DW14_LN3_B)),
+      DIGI_C =>
+        (DW14_LN =>
+           (BXT_PORT_TX_DW14_LN0_C,
+            BXT_PORT_TX_DW14_LN1_C,
+            BXT_PORT_TX_DW14_LN2_C,
+            BXT_PORT_TX_DW14_LN3_C)));
+
+   PORT_TX_DW14_LN_LATENCY_OPTIM       : constant := 1 * 2 ** 30;
+
+   procedure Pre_PLL (Port_Cfg : Port_Config)
+   is
+      type Lane_Values is array (Lanes) of Word32;
+      Lane_Optim : constant Lane_Values :=
+        (if Port_Cfg.Display = HDMI or
+            Port_Cfg.DP.Lane_Count = DP_Lane_Count_4
+         then
+            (0 => PORT_TX_DW14_LN_LATENCY_OPTIM,
+             1 => 0,
+             2 => PORT_TX_DW14_LN_LATENCY_OPTIM,
+             3 => PORT_TX_DW14_LN_LATENCY_OPTIM)
+         elsif Port_Cfg.DP.Lane_Count = DP_Lane_Count_2 then
+            (0 => PORT_TX_DW14_LN_LATENCY_OPTIM,
+             1 => 0,
+             2 => PORT_TX_DW14_LN_LATENCY_OPTIM,
+             3 => 0)
+         else
+            (Lanes => 0));
+   begin
+      pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
+
+      if Port_Cfg.Port in DDI_Phy_Port then
+         for Lane in Lanes loop
+            Unset_And_Set_Mask
+              (Register    => PORT_TX (Port_Cfg.Port).DW14_LN (Lane),
+               Mask_Unset  => PORT_TX_DW14_LN_LATENCY_OPTIM,
+               Mask_Set    => Lane_Optim (Lane));
+         end loop;
+      end if;
+   end Pre_PLL;
+
 end HW.GFX.GMA.DDI_Phy;
diff --git a/common/broxton/hw-gfx-gma-ddi_phy.ads b/common/broxton/hw-gfx-gma-ddi_phy.ads
index 51221b0..a303b2f 100644
--- a/common/broxton/hw-gfx-gma-ddi_phy.ads
+++ b/common/broxton/hw-gfx-gma-ddi_phy.ads
@@ -21,4 +21,6 @@
 
    subtype DDI_Phy_Port is GPU_Port range DIGI_A .. DIGI_C;
 
+   procedure Pre_PLL (Port_Cfg : Port_Config);
+
 end HW.GFX.GMA.DDI_Phy;
diff --git a/common/broxton/hw-gfx-gma-plls.adb b/common/broxton/hw-gfx-gma-plls.adb
index 8c87507..7da47f2 100644
--- a/common/broxton/hw-gfx-gma-plls.adb
+++ b/common/broxton/hw-gfx-gma-plls.adb
@@ -17,6 +17,7 @@
 
 with HW.GFX.GMA.Config;
 with HW.GFX.GMA.Registers;
+with HW.GFX.GMA.DDI_Phy;
 
 use HW.GFX.GMA.Registers;
 
@@ -461,6 +462,7 @@
       end if;
 
       if Success then
+         DDI_Phy.Pre_PLL (Port_Cfg);
          Program_DPLL (PLL, Clock);
       end if;
    end Alloc;
