<p>Nico Huber has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26843">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">edid: Use expression functions to rely less on proof inlining<br><br>Change-Id: I7c116762c2b3fa366318b09e60d0e1945057eec6<br>Signed-off-by: Nico Huber <nico.huber@secunet.com><br>---<br>M common/hw-gfx-edid.adb<br>M common/hw-gfx-edid.ads<br>2 files changed, 29 insertions(+), 87 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/libgfxinit refs/changes/43/26843/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/common/hw-gfx-edid.adb b/common/hw-gfx-edid.adb</span><br><span>index f6afb56..83e9cf6 100644</span><br><span>--- a/common/hw-gfx-edid.adb</span><br><span>+++ b/common/hw-gfx-edid.adb</span><br><span>@@ -108,30 +108,6 @@</span><br><span>              Word16 (Raw_EDID (Offset));</span><br><span>    end Read_LE16;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   function Has_Preferred_Mode (Raw_EDID : Raw_EDID_Data) return Boolean</span><br><span style="color: hsl(0, 100%, 40%);">-   is</span><br><span style="color: hsl(0, 100%, 40%);">-   begin</span><br><span style="color: hsl(0, 100%, 40%);">-      return</span><br><span style="color: hsl(0, 100%, 40%);">-         Int64 (Read_LE16 (Raw_EDID, DESCRIPTOR_1)) * 10_000</span><br><span style="color: hsl(0, 100%, 40%);">-            in Frequency_Type and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  2) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 +  4) and 16#f0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  8) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#c0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  9) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#30#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  3) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 +  4) and 16#0f#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  5) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 +  7) and 16#f0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#f0#) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#0c#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#0f#) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#03#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  6) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 +  7) and 16#0f#) /= 0);</span><br><span style="color: hsl(0, 100%, 40%);">-   end Has_Preferred_Mode;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    function Preferred_Mode (Raw_EDID : Raw_EDID_Data) return Mode_Type</span><br><span>    is</span><br><span>       Base : constant := DESCRIPTOR_1;</span><br><span>@@ -140,38 +116,25 @@</span><br><span>       function Read_12</span><br><span>         (Lower_8, Upper_4  : Raw_EDID_Index;</span><br><span>          Shift             : Natural)</span><br><span style="color: hsl(0, 100%, 40%);">-         return Word16</span><br><span style="color: hsl(0, 100%, 40%);">-      is</span><br><span style="color: hsl(0, 100%, 40%);">-      begin</span><br><span style="color: hsl(0, 100%, 40%);">-         return</span><br><span style="color: hsl(0, 100%, 40%);">-            Word16 (Raw_EDID (Lower_8)) or</span><br><span style="color: hsl(0, 100%, 40%);">-            (Shift_Left (Word16 (Raw_EDID (Upper_4)), Shift) and 16#0f00#);</span><br><span style="color: hsl(0, 100%, 40%);">-      end Read_12;</span><br><span style="color: hsl(120, 100%, 40%);">+         return Word16 is</span><br><span style="color: hsl(120, 100%, 40%);">+        (             Word16 (Raw_EDID (Lower_8)) or</span><br><span style="color: hsl(120, 100%, 40%);">+         (Shift_Left (Word16 (Raw_EDID (Upper_4)), Shift) and 16#0f00#));</span><br><span> </span><br><span>       function Read_10</span><br><span>         (Lower_8, Upper_2  : Raw_EDID_Index;</span><br><span>          Shift             : Natural)</span><br><span style="color: hsl(0, 100%, 40%);">-         return Word16</span><br><span style="color: hsl(0, 100%, 40%);">-      is</span><br><span style="color: hsl(0, 100%, 40%);">-      begin</span><br><span style="color: hsl(0, 100%, 40%);">-         return</span><br><span style="color: hsl(0, 100%, 40%);">-            Word16 (Raw_EDID (Lower_8)) or</span><br><span style="color: hsl(0, 100%, 40%);">-            (Shift_Left (Word16 (Raw_EDID (Upper_2)), Shift) and 16#0300#);</span><br><span style="color: hsl(0, 100%, 40%);">-      end Read_10;</span><br><span style="color: hsl(120, 100%, 40%);">+         return Word16 is</span><br><span style="color: hsl(120, 100%, 40%);">+        (             Word16 (Raw_EDID (Lower_8)) or</span><br><span style="color: hsl(120, 100%, 40%);">+         (Shift_Left (Word16 (Raw_EDID (Upper_2)), Shift) and 16#0300#));</span><br><span> </span><br><span>       function Read_6</span><br><span>         (Lower_4     : Raw_EDID_Index;</span><br><span>          Lower_Shift : Natural;</span><br><span>          Upper_2     : Raw_EDID_Index;</span><br><span>          Upper_Shift : Natural)</span><br><span style="color: hsl(0, 100%, 40%);">-         return Word8</span><br><span style="color: hsl(0, 100%, 40%);">-      is</span><br><span style="color: hsl(0, 100%, 40%);">-      begin</span><br><span style="color: hsl(0, 100%, 40%);">-         return</span><br><span style="color: hsl(0, 100%, 40%);">-            (Shift_Right (Word8 (Raw_EDID (Lower_4)), Lower_Shift) and 16#0f#)</span><br><span style="color: hsl(0, 100%, 40%);">-            or</span><br><span style="color: hsl(0, 100%, 40%);">-            (Shift_Left (Word8 (Raw_EDID (Upper_2)), Upper_Shift) and 16#30#);</span><br><span style="color: hsl(0, 100%, 40%);">-      end Read_6;</span><br><span style="color: hsl(120, 100%, 40%);">+         return Word8 is</span><br><span style="color: hsl(120, 100%, 40%);">+        ((Shift_Right (Word8 (Raw_EDID (Lower_4)), Lower_Shift) and 16#0f#) or</span><br><span style="color: hsl(120, 100%, 40%);">+         (Shift_Left  (Word8 (Raw_EDID (Upper_2)), Upper_Shift) and 16#30#));</span><br><span>    begin</span><br><span>       Mode := Mode_Type'</span><br><span>         (Dotclock             => Pos64 (Read_LE16 (Raw_EDID, Base)) * 10_000,</span><br><span>diff --git a/common/hw-gfx-edid.ads b/common/hw-gfx-edid.ads</span><br><span>index abbb2ee..0d73230 100644</span><br><span>--- a/common/hw-gfx-edid.ads</span><br><span>+++ b/common/hw-gfx-edid.ads</span><br><span>@@ -42,49 +42,28 @@</span><br><span>    with</span><br><span>       Pre => Valid (Raw_EDID);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   function Has_Preferred_Mode (Raw_EDID : Raw_EDID_Data) return Boolean</span><br><span style="color: hsl(120, 100%, 40%);">+   function Has_Preferred_Mode (Raw_EDID : Raw_EDID_Data) return Boolean is</span><br><span style="color: hsl(120, 100%, 40%);">+     (Int64 (Read_LE16 (Raw_EDID, DESCRIPTOR_1)) * 10_000 in Frequency_Type and</span><br><span style="color: hsl(120, 100%, 40%);">+      ( Raw_EDID (DESCRIPTOR_1 +  2) /= 0 or</span><br><span style="color: hsl(120, 100%, 40%);">+       (Raw_EDID (DESCRIPTOR_1 +  4) and 16#f0#) /= 0) and</span><br><span style="color: hsl(120, 100%, 40%);">+      ( Raw_EDID (DESCRIPTOR_1 +  8) /= 0 or</span><br><span style="color: hsl(120, 100%, 40%);">+       (Raw_EDID (DESCRIPTOR_1 + 11) and 16#c0#) /= 0) and</span><br><span style="color: hsl(120, 100%, 40%);">+      ( Raw_EDID (DESCRIPTOR_1 +  9) /= 0 or</span><br><span style="color: hsl(120, 100%, 40%);">+       (Raw_EDID (DESCRIPTOR_1 + 11) and 16#30#) /= 0) and</span><br><span style="color: hsl(120, 100%, 40%);">+      ( Raw_EDID (DESCRIPTOR_1 +  3) /= 0 or</span><br><span style="color: hsl(120, 100%, 40%);">+       (Raw_EDID (DESCRIPTOR_1 +  4) and 16#0f#) /= 0) and</span><br><span style="color: hsl(120, 100%, 40%);">+      ( Raw_EDID (DESCRIPTOR_1 +  5) /= 0 or</span><br><span style="color: hsl(120, 100%, 40%);">+       (Raw_EDID (DESCRIPTOR_1 +  7) and 16#f0#) /= 0) and</span><br><span style="color: hsl(120, 100%, 40%);">+      ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#f0#) /= 0 or</span><br><span style="color: hsl(120, 100%, 40%);">+       (Raw_EDID (DESCRIPTOR_1 + 11) and 16#0c#) /= 0) and</span><br><span style="color: hsl(120, 100%, 40%);">+      ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#0f#) /= 0 or</span><br><span style="color: hsl(120, 100%, 40%);">+       (Raw_EDID (DESCRIPTOR_1 + 11) and 16#03#) /= 0) and</span><br><span style="color: hsl(120, 100%, 40%);">+      ( Raw_EDID (DESCRIPTOR_1 +  6) /= 0 or</span><br><span style="color: hsl(120, 100%, 40%);">+       (Raw_EDID (DESCRIPTOR_1 +  7) and 16#0f#) /= 0))</span><br><span>    with</span><br><span style="color: hsl(0, 100%, 40%);">-      Pre => Valid (Raw_EDID),</span><br><span style="color: hsl(0, 100%, 40%);">-      Post =></span><br><span style="color: hsl(0, 100%, 40%);">-        (Has_Preferred_Mode'Result =</span><br><span style="color: hsl(0, 100%, 40%);">-           (Int64 (Read_LE16 (Raw_EDID, DESCRIPTOR_1)) * 10_000</span><br><span style="color: hsl(0, 100%, 40%);">-               in Frequency_Type and</span><br><span style="color: hsl(0, 100%, 40%);">-            ( Raw_EDID (DESCRIPTOR_1 +  2) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-             (Raw_EDID (DESCRIPTOR_1 +  4) and 16#f0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-            ( Raw_EDID (DESCRIPTOR_1 +  8) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-             (Raw_EDID (DESCRIPTOR_1 + 11) and 16#c0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-            ( Raw_EDID (DESCRIPTOR_1 +  9) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-             (Raw_EDID (DESCRIPTOR_1 + 11) and 16#30#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-            ( Raw_EDID (DESCRIPTOR_1 +  3) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-             (Raw_EDID (DESCRIPTOR_1 +  4) and 16#0f#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-            ( Raw_EDID (DESCRIPTOR_1 +  5) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-             (Raw_EDID (DESCRIPTOR_1 +  7) and 16#f0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-            ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#f0#) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-             (Raw_EDID (DESCRIPTOR_1 + 11) and 16#0c#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-            ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#0f#) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-             (Raw_EDID (DESCRIPTOR_1 + 11) and 16#03#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-            ( Raw_EDID (DESCRIPTOR_1 +  6) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-             (Raw_EDID (DESCRIPTOR_1 +  7) and 16#0f#) /= 0)));</span><br><span style="color: hsl(120, 100%, 40%);">+      Pre => Valid (Raw_EDID);</span><br><span>    function Preferred_Mode (Raw_EDID : Raw_EDID_Data) return Mode_Type</span><br><span>    with</span><br><span style="color: hsl(0, 100%, 40%);">-      Pre =></span><br><span style="color: hsl(0, 100%, 40%);">-         Int64 (Read_LE16 (Raw_EDID, DESCRIPTOR_1)) * 10_000</span><br><span style="color: hsl(0, 100%, 40%);">-            in Frequency_Type and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  2) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 +  4) and 16#f0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  8) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#c0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  9) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#30#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  3) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 +  4) and 16#0f#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  5) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 +  7) and 16#f0#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#f0#) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#0c#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ((Raw_EDID (DESCRIPTOR_1 + 10) and 16#0f#) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 + 11) and 16#03#) /= 0) and</span><br><span style="color: hsl(0, 100%, 40%);">-         ( Raw_EDID (DESCRIPTOR_1 +  6) /= 0 or</span><br><span style="color: hsl(0, 100%, 40%);">-          (Raw_EDID (DESCRIPTOR_1 +  7) and 16#0f#) /= 0);</span><br><span style="color: hsl(120, 100%, 40%);">+      Pre => Valid (Raw_EDID) and then Has_Preferred_Mode (Raw_EDID);</span><br><span> </span><br><span> end HW.GFX.EDID;</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26843">change 26843</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26843"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libgfxinit </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I7c116762c2b3fa366318b09e60d0e1945057eec6 </div>
<div style="display:none"> Gerrit-Change-Number: 26843 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Nico Huber <nico.h@gmx.de> </div>