diff --git a/common/ironlake/hw-gfx-gma-pch-lvds.adb b/common/ironlake/hw-gfx-gma-pch-lvds.adb
index 6ad334e..9867b2f 100644
--- a/common/ironlake/hw-gfx-gma-pch-lvds.adb
+++ b/common/ironlake/hw-gfx-gma-pch-lvds.adb
@@ -1,5 +1,6 @@
 --
 -- Copyright (C) 2015-2016 secunet Security Networks AG
+-- Copyright (C) 2016 Nico Huber <nico.h@gmx.de>
 --
 -- This program is free software; you can redistribute it and/or modify
 -- it under the terms of the GNU General Public License as published by
@@ -19,30 +20,44 @@
 
 package body HW.GFX.GMA.PCH.LVDS is
 
-   PCH_LVDS_ENABLE               : constant :=  1 * 2 ** 31;
-   PCH_LVDS_TWO_CHANNEL          : constant := 15 * 2 **  2;
-
-   PCH_LVDS_MASK : constant Word32 :=
-      PCH_TRANSCODER_SELECT_MASK or
-      PCH_LVDS_ENABLE or
-      PCH_LVDS_TWO_CHANNEL;
+   PCH_LVDS_ENABLE                     : constant :=  1 * 2 ** 31;
+   PCH_LVDS_VSYNC_POLARITY_INVERT      : constant :=  1 * 2 ** 21;
+   PCH_LVDS_HSYNC_POLARITY_INVERT      : constant :=  1 * 2 ** 20;
+   PCH_LVDS_CLK_A_DATA_A0A2_POWER_MASK : constant :=  3 * 2 **  8;
+   PCH_LVDS_CLK_A_DATA_A0A2_POWER_DOWN : constant :=  0 * 2 **  8;
+   PCH_LVDS_CLK_A_DATA_A0A2_POWER_UP   : constant :=  3 * 2 **  8;
+   PCH_LVDS_CLK_B_POWER_MASK           : constant :=  3 * 2 **  4;
+   PCH_LVDS_CLK_B_POWER_DOWN           : constant :=  0 * 2 **  4;
+   PCH_LVDS_CLK_B_POWER_UP             : constant :=  3 * 2 **  4;
+   PCH_LVDS_DATA_B0B2_POWER_MASK       : constant :=  3 * 2 **  2;
+   PCH_LVDS_DATA_B0B2_POWER_DOWN       : constant :=  0 * 2 **  2;
+   PCH_LVDS_DATA_B0B2_POWER_UP         : constant :=  3 * 2 **  2;
 
    ----------------------------------------------------------------------------
 
    procedure On (Port_Cfg : Port_Config; FDI_Port : FDI_Port_Type)
    is
+      Sync_Polarity : constant Word32 :=
+        (if Port_Cfg.Mode.H_Sync_Active_High then 0
+         else PCH_LVDS_HSYNC_POLARITY_INVERT) or
+        (if Port_Cfg.Mode.V_Sync_Active_High then 0
+         else PCH_LVDS_VSYNC_POLARITY_INVERT);
+
       Two_Channel : constant Word32 :=
         (if Port_Cfg.Mode.Dotclock >= Config.LVDS_Dual_Threshold then
-            PCH_LVDS_TWO_CHANNEL else 0);
+            PCH_LVDS_CLK_B_POWER_UP or PCH_LVDS_DATA_B0B2_POWER_UP else 0);
    begin
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
+      pragma Debug (Port_Cfg.Mode.BPC /= 6, Debug.Put_Line
+        ("WARNING: Only 18bpp LVDS mode implemented."));
 
-      Registers.Unset_And_Set_Mask
-         (Register   => Registers.PCH_LVDS,
-          Mask_Unset => PCH_LVDS_MASK,
-          Mask_Set   => PCH_LVDS_ENABLE or
-                        PCH_TRANSCODER_SELECT (FDI_Port) or
-                        Two_Channel);
+      Registers.Write
+        (Register => Registers.PCH_LVDS,
+         Value    => PCH_LVDS_ENABLE or
+                     PCH_TRANSCODER_SELECT (FDI_Port) or
+                     Sync_Polarity or
+                     PCH_LVDS_CLK_A_DATA_A0A2_POWER_UP or
+                     Two_Channel);
    end On;
 
    ----------------------------------------------------------------------------
@@ -52,7 +67,11 @@
    begin
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
 
-      Registers.Unset_Mask (Registers.PCH_LVDS, PCH_LVDS_ENABLE);
+      Registers.Write
+        (Register => Registers.PCH_LVDS,
+         Value    => PCH_LVDS_CLK_A_DATA_A0A2_POWER_DOWN or
+                     PCH_LVDS_CLK_B_POWER_DOWN or
+                     PCH_LVDS_DATA_B0B2_POWER_DOWN);
    end Off;
 
 end HW.GFX.GMA.PCH.LVDS;
