gma registers: Separate 32- and 64-bit GTT access
With Broadwell the GTT layout changed significantly. Before, we had a
2MiB GTT with 32-bit entries. Now, it's a 8MiB GTT with 64-bit entries.
We used to abstract over that with configuration constants but that's
infeasible if we want to support Haswell and Broadwell with a single
binary (boards that support both processors exist).
Therefore, declare both GTT variants and decide based on the CPU which
one to use.
Change-Id: Ib6f21b71c434a9cbdd5cdfa3697da2b2e86750f4
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/libgfxinit/+/27056
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
diff --git a/common/hw-gfx-gma-registers.ads b/common/hw-gfx-gma-registers.ads
index 1220d1a..99efba9 100644
--- a/common/hw-gfx-gma-registers.ads
+++ b/common/hw-gfx-gma-registers.ads
@@ -23,6 +23,15 @@
(GTT_State with External, Part_Of => GMA.Device_State)),
Initializes => Address_State
is
+
+ MMIO_GTT_32_Size : constant := 16#20_0000#;
+ MMIO_GTT_32_Offset : constant := 16#20_0000#;
+
+ -- Limit Broadwell+ to 4MiB to have a stable
+ -- interface (i.e. same number of entries):
+ MMIO_GTT_64_Size : constant := 16#40_0000#;
+ MMIO_GTT_64_Offset : constant := 16#80_0000#;
+
type Registers_Invalid_Index is
(Invalid_Register, -- Allow a placeholder when access is not acceptable