diff --git a/common/hw-gfx-edid.ads b/common/hw-gfx-edid.ads
new file mode 100644
index 0000000..28dc2db
--- /dev/null
+++ b/common/hw-gfx-edid.ads
@@ -0,0 +1,79 @@
+--
+-- Copyright (C) 2016 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.
+--
+
+package HW.GFX.EDID
+is
+
+   use type Word8;
+   use type Word16;
+
+   subtype Raw_EDID_Index is Natural range 0 .. 127;
+   subtype Raw_EDID_Data is Buffer (Raw_EDID_Index);
+
+   function Valid (Raw_EDID : Raw_EDID_Data) return Boolean;
+
+   DESCRIPTOR_1 : constant := 54;
+
+   function Read_LE16
+     (Raw_EDID : Raw_EDID_Data;
+      Offset   : Raw_EDID_Index)
+      return Word16
+   with
+      Pre => Offset < Raw_EDID_Index'Last;
+
+   function Has_Preferred_Mode (Raw_EDID : Raw_EDID_Data) return Boolean
+   with
+      Pre => Valid (Raw_EDID),
+      Post =>
+        (Has_Preferred_Mode'Result =
+           (Int64 (Read_LE16 (Raw_EDID, DESCRIPTOR_1)) * 10_000
+               in Frequency_Type and
+            ( Raw_EDID (DESCRIPTOR_1 +  2) /= 0 or
+             (Raw_EDID (DESCRIPTOR_1 +  4) and 16#f0#) /= 0) and
+            ( Raw_EDID (DESCRIPTOR_1 +  8) /= 0 or
+             (Raw_EDID (DESCRIPTOR_1 + 11) and 16#c0#) /= 0) and
+            ( Raw_EDID (DESCRIPTOR_1 +  9) /= 0 or
+             (Raw_EDID (DESCRIPTOR_1 + 11) and 16#30#) /= 0) and
+            ( Raw_EDID (DESCRIPTOR_1 +  3) /= 0 or
+             (Raw_EDID (DESCRIPTOR_1 +  4) and 16#0f#) /= 0) and
+            ( Raw_EDID (DESCRIPTOR_1 +  5) /= 0 or
+             (Raw_EDID (DESCRIPTOR_1 +  7) and 16#f0#) /= 0) and
+            ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#f0#) /= 0 or
+             (Raw_EDID (DESCRIPTOR_1 + 11) and 16#0c#) /= 0) and
+            ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#0f#) /= 0 or
+             (Raw_EDID (DESCRIPTOR_1 + 11) and 16#03#) /= 0) and
+            ( Raw_EDID (DESCRIPTOR_1 +  6) /= 0 or
+             (Raw_EDID (DESCRIPTOR_1 +  7) and 16#0f#) /= 0)));
+   function Preferred_Mode (Raw_EDID : Raw_EDID_Data) return Mode_Type
+   with
+      Pre =>
+         Int64 (Read_LE16 (Raw_EDID, DESCRIPTOR_1)) * 10_000
+            in Frequency_Type and
+         ( Raw_EDID (DESCRIPTOR_1 +  2) /= 0 or
+          (Raw_EDID (DESCRIPTOR_1 +  4) and 16#f0#) /= 0) and
+         ( Raw_EDID (DESCRIPTOR_1 +  8) /= 0 or
+          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#c0#) /= 0) and
+         ( Raw_EDID (DESCRIPTOR_1 +  9) /= 0 or
+          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#30#) /= 0) and
+         ( Raw_EDID (DESCRIPTOR_1 +  3) /= 0 or
+          (Raw_EDID (DESCRIPTOR_1 +  4) and 16#0f#) /= 0) and
+         ( Raw_EDID (DESCRIPTOR_1 +  5) /= 0 or
+          (Raw_EDID (DESCRIPTOR_1 +  7) and 16#f0#) /= 0) and
+         ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#f0#) /= 0 or
+          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#0c#) /= 0) and
+         ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#0f#) /= 0 or
+          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#03#) /= 0) and
+         ( Raw_EDID (DESCRIPTOR_1 +  6) /= 0 or
+          (Raw_EDID (DESCRIPTOR_1 +  7) and 16#0f#) /= 0);
+
+end HW.GFX.EDID;
