<p>Nico Huber has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27057">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gma registers: Add Read_GTT() procedure<br><br>Change-Id: I0f8091b8958d0c228430fad4b8343fc362a2dbb7<br>Signed-off-by: Nico Huber <nico.h@gmx.de><br>---<br>M common/hw-gfx-gma-registers.adb<br>M common/hw-gfx-gma-registers.ads<br>M common/hw-gfx-gma.adb<br>M common/hw-gfx-gma.ads<br>4 files changed, 54 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/libgfxinit refs/changes/57/27057/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/common/hw-gfx-gma-registers.adb b/common/hw-gfx-gma-registers.adb</span><br><span>index 368b259..c0187f6 100644</span><br><span>--- a/common/hw-gfx-gma-registers.adb</span><br><span>+++ b/common/hw-gfx-gma-registers.adb</span><br><span>@@ -69,7 +69,7 @@</span><br><span>       Index_T     => GTT_Range,</span><br><span>       Array_T     => GTT_Registers_64);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   GTT_PTE_Valid : constant Word32 := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+   GTT_PTE_Valid : constant := 1;</span><br><span> </span><br><span>    ----------------------------------------------------------------------------</span><br><span> </span><br><span>@@ -177,6 +177,33 @@</span><br><span>       end if;</span><br><span>    end Write_GTT;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   procedure Read_GTT</span><br><span style="color: hsl(120, 100%, 40%);">+     (Device_Address :    out GTT_Address_Type;</span><br><span style="color: hsl(120, 100%, 40%);">+      Valid          :    out Boolean;</span><br><span style="color: hsl(120, 100%, 40%);">+      GTT_Page       : in     GTT_Range)</span><br><span style="color: hsl(120, 100%, 40%);">+   is</span><br><span style="color: hsl(120, 100%, 40%);">+   begin</span><br><span style="color: hsl(120, 100%, 40%);">+      if Config.Has_64bit_GTT then</span><br><span style="color: hsl(120, 100%, 40%);">+         declare</span><br><span style="color: hsl(120, 100%, 40%);">+            PTE : GTT_PTE_32;</span><br><span style="color: hsl(120, 100%, 40%);">+         begin</span><br><span style="color: hsl(120, 100%, 40%);">+            GTT_32.Read (PTE, GTT_Page);</span><br><span style="color: hsl(120, 100%, 40%);">+            Valid := (PTE and GTT_PTE_Valid) /= 0;</span><br><span style="color: hsl(120, 100%, 40%);">+            Device_Address := GTT_Address_Type</span><br><span style="color: hsl(120, 100%, 40%);">+              (Shift_Left (Word64 (PTE and 16#07f0#), 32 - 4) or</span><br><span style="color: hsl(120, 100%, 40%);">+               Word64 (PTE and 16#ffff_f000#));</span><br><span style="color: hsl(120, 100%, 40%);">+         end;</span><br><span style="color: hsl(120, 100%, 40%);">+      else</span><br><span style="color: hsl(120, 100%, 40%);">+         declare</span><br><span style="color: hsl(120, 100%, 40%);">+            PTE : GTT_PTE_64;</span><br><span style="color: hsl(120, 100%, 40%);">+         begin</span><br><span style="color: hsl(120, 100%, 40%);">+            GTT_64.Read (PTE, GTT_Page);</span><br><span style="color: hsl(120, 100%, 40%);">+            Valid := (PTE and GTT_PTE_Valid) /= 0;</span><br><span style="color: hsl(120, 100%, 40%);">+            Device_Address := GTT_Address_Type (PTE and 16#7f_ffff_f000#);</span><br><span style="color: hsl(120, 100%, 40%);">+         end;</span><br><span style="color: hsl(120, 100%, 40%);">+      end if;</span><br><span style="color: hsl(120, 100%, 40%);">+   end Read_GTT;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    ----------------------------------------------------------------------------</span><br><span> </span><br><span>    package Rep is</span><br><span>diff --git a/common/hw-gfx-gma-registers.ads b/common/hw-gfx-gma-registers.ads</span><br><span>index 99efba9..3be2ec7 100644</span><br><span>--- a/common/hw-gfx-gma-registers.ads</span><br><span>+++ b/common/hw-gfx-gma-registers.ads</span><br><span>@@ -1720,17 +1720,21 @@</span><br><span> </span><br><span>    procedure Remove_Fence (First_Page, Last_Page : GTT_Range);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   pragma Warnings (Off, "declaration of ""Write_GTT"" hides one at *");</span><br><span>    procedure Write_GTT</span><br><span>      (GTT_Page       : GTT_Range;</span><br><span>       Device_Address : GTT_Address_Type;</span><br><span>       Valid          : Boolean)</span><br><span>    with</span><br><span>       Global  => (In_Out => GTT_State),</span><br><span style="color: hsl(0, 100%, 40%);">-      Depends => (GTT_State =>+ (GTT_Page, Device_Address, Valid)),</span><br><span style="color: hsl(0, 100%, 40%);">-      Pre     => True,</span><br><span style="color: hsl(0, 100%, 40%);">-      Post    => True;</span><br><span style="color: hsl(0, 100%, 40%);">-   pragma Warnings (On, "declaration of ""Write_GTT"" hides one at *");</span><br><span style="color: hsl(120, 100%, 40%);">+      Depends => (GTT_State =>+ (GTT_Page, Device_Address, Valid));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   procedure Read_GTT</span><br><span style="color: hsl(120, 100%, 40%);">+     (Device_Address :    out GTT_Address_Type;</span><br><span style="color: hsl(120, 100%, 40%);">+      Valid          :    out Boolean;</span><br><span style="color: hsl(120, 100%, 40%);">+      GTT_Page       : in     GTT_Range)</span><br><span style="color: hsl(120, 100%, 40%);">+   with</span><br><span style="color: hsl(120, 100%, 40%);">+      Global  => (In_Out => GTT_State),</span><br><span style="color: hsl(120, 100%, 40%);">+      Depends => ((Device_Address, Valid, GTT_State) => (GTT_State, GTT_Page));</span><br><span> </span><br><span>    procedure Set_Register_Base (Base : Word64; GTT_Base : Word64 := 0)</span><br><span>    with</span><br><span>diff --git a/common/hw-gfx-gma.adb b/common/hw-gfx-gma.adb</span><br><span>index ad686c3..48b211e 100644</span><br><span>--- a/common/hw-gfx-gma.adb</span><br><span>+++ b/common/hw-gfx-gma.adb</span><br><span>@@ -585,6 +585,15 @@</span><br><span>       Registers.Write_GTT (GTT_Page, Device_Address, Valid);</span><br><span>    end Write_GTT;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   procedure Read_GTT</span><br><span style="color: hsl(120, 100%, 40%);">+     (Device_Address :    out GTT_Address_Type;</span><br><span style="color: hsl(120, 100%, 40%);">+      Valid          :    out Boolean;</span><br><span style="color: hsl(120, 100%, 40%);">+      GTT_Page       : in     GTT_Range)</span><br><span style="color: hsl(120, 100%, 40%);">+   is</span><br><span style="color: hsl(120, 100%, 40%);">+   begin</span><br><span style="color: hsl(120, 100%, 40%);">+      Registers.Read_GTT (Device_Address, Valid, GTT_Page);</span><br><span style="color: hsl(120, 100%, 40%);">+   end Read_GTT;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    procedure Setup_Default_GTT (FB : Framebuffer_Type; Phys_Base : Word32)</span><br><span>    with</span><br><span>       Pre => Is_Initialized and Valid_Phys_FB (FB, Phys_Base)</span><br><span>diff --git a/common/hw-gfx-gma.ads b/common/hw-gfx-gma.ads</span><br><span>index 7f44a0f..dcb3975 100644</span><br><span>--- a/common/hw-gfx-gma.ads</span><br><span>+++ b/common/hw-gfx-gma.ads</span><br><span>@@ -163,6 +163,14 @@</span><br><span>       Global => (In_Out => Device_State, Proof_In => Init_State),</span><br><span>       Pre => Is_Initialized;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   procedure Read_GTT</span><br><span style="color: hsl(120, 100%, 40%);">+     (Device_Address :    out GTT_Address_Type;</span><br><span style="color: hsl(120, 100%, 40%);">+      Valid          :    out Boolean;</span><br><span style="color: hsl(120, 100%, 40%);">+      GTT_Page       : in     GTT_Range)</span><br><span style="color: hsl(120, 100%, 40%);">+   with</span><br><span style="color: hsl(120, 100%, 40%);">+      Global => (In_Out => Device_State, Proof_In => Init_State),</span><br><span style="color: hsl(120, 100%, 40%);">+      Pre => Is_Initialized;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    procedure Setup_Default_FB</span><br><span>      (FB       : in     Framebuffer_Type;</span><br><span>       Clear    : in     Boolean := True;</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27057">change 27057</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/27057"/><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: I0f8091b8958d0c228430fad4b8343fc362a2dbb7 </div>
<div style="display:none"> Gerrit-Change-Number: 27057 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Nico Huber <nico.h@gmx.de> </div>