diff --git a/common/hw-gfx-dp_info.ads b/common/hw-gfx-dp_info.ads
new file mode 100644
index 0000000..d793dff
--- /dev/null
+++ b/common/hw-gfx-dp_info.ads
@@ -0,0 +1,135 @@
+--
+-- Copyright (C) 2015 secunet Security Networks AG
+--
+-- 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
+-- the Free Software Foundation; version 2 of the License.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+
+with HW.GFX.DP_Aux_Ch;
+
+private generic
+
+   type T (<>) is limited private;
+
+   with package Aux_Ch is new DP_Aux_Ch (T => T, others => <>);
+
+package HW.GFX.DP_Info is
+
+   type DP_Voltage_Swing is (VS_Level_0, VS_Level_1, VS_Level_2, VS_Level_3);
+
+   type DP_Pre_Emph is (Emph_Level_0, Emph_Level_1, Emph_Level_2, Emph_Level_3);
+
+   type Train_Set is record
+      Voltage_Swing  : DP_Voltage_Swing;
+      Pre_Emph       : DP_Pre_Emph;
+   end record;
+
+   type Training_Pattern is (TP_1, TP_2, TP_3, TP_Idle, TP_None);
+
+   ----------------------------------------------------------------------------
+
+   type Lane_Index is new Natural range 0 .. 3;
+
+   type Lane_Status is record
+      CR_Done           : Boolean;
+      Channel_EQ_Done   : Boolean;
+      Symbol_Locked     : Boolean;
+      Reserved          : Boolean;
+   end record;
+   for Lane_Status use record
+      CR_Done           at 16#00# range 0 .. 0;
+      Channel_EQ_Done   at 16#00# range 1 .. 1;
+      Symbol_Locked     at 16#00# range 2 .. 2;
+      Reserved          at 16#00# range 3 .. 3;
+   end record;
+   type Lanes_Status is array (Lane_Index) of Lane_Status;
+   pragma Pack (Lanes_Status);
+
+   type Adjust_Request is record
+      Voltage_Swing  : DP_Voltage_Swing;
+      Pre_Emph       : DP_Pre_Emph;
+   end record;
+   for Adjust_Request use record
+      Voltage_Swing  at 16#00# range 0 .. 1;
+      Pre_Emph       at 16#00# range 2 .. 3;
+   end record;
+   type Adjust_Requests_Array is array (Lane_Index) of Adjust_Request;
+   pragma Pack (Adjust_Requests_Array);
+
+   type Link_Status is record
+      Lanes                : Lanes_Status;
+      Interlane_Align_Done : Boolean;
+      Adjust_Requests      : Adjust_Requests_Array;
+   end record;
+   for Link_Status use record
+      Lanes                at 16#00# range 0 .. 15;
+      Interlane_Align_Done at 16#02# range 0 ..  0;
+      Adjust_Requests      at 16#04# range 0 .. 15;
+   end record;
+
+   ----------------------------------------------------------------------------
+
+   procedure Read_Caps
+     (Link     : in out DP_Link;
+      Port     : in     T;
+      Success  :    out Boolean);
+
+   procedure Preferred_Link_Setting
+     (Link        : in out DP_Link;
+      Mode        : in     Mode_Type;
+      Success     :    out Boolean);
+
+   procedure Next_Link_Setting
+     (Link        : in out DP_Link;
+      Mode        : in     Mode_Type;
+      Success     :    out Boolean);
+
+   ----------------------------------------------------------------------------
+
+   M_N_Max : constant := 2 ** 24 - 1;
+
+   subtype M_Type is Int64 range 0 .. M_N_Max;
+   subtype N_Type is Int64 range 0 .. M_N_Max;
+
+   procedure Calculate_M_N
+     (Link     : in     DP_Link;
+      Mode     : in     Mode_Type;
+      Data_M   :    out M_Type;
+      Data_N   :    out N_Type;
+      Link_M   :    out M_Type;
+      Link_N   :    out N_Type);
+
+   ----------------------------------------------------------------------------
+
+   procedure Read_Link_Status
+     (Port     : in     T;
+      Status   :    out Link_Status;
+      Success  :    out Boolean);
+
+   function All_CR_Done
+     (Status   : Link_Status;
+      Link     : DP_Link)
+      return Boolean;
+
+   function All_EQ_Done
+     (Status   : Link_Status;
+      Link     : DP_Link)
+      return Boolean;
+
+   function Max_Requested_VS
+     (Status   : Link_Status;
+      Link     : DP_Link)
+      return DP_Voltage_Swing;
+
+   function Max_Requested_Emph
+     (Status   : Link_Status;
+      Link     : DP_Link)
+      return DP_Pre_Emph;
+
+end HW.GFX.DP_Info;
