gma: Turn constants depending on Config.CPU* into functions
To reduce elaboration time dependencies, turn constants at package
level into functions. This will allow us to use the same code for
configurations with constant and non-constant `GMA.Config.CPU*`.
Change-Id: I0522f5c63c63080bf9633f3d1b6019f35e52d226
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/libgfxinit/+/27062
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
diff --git a/common/hw-gfx-gma-pch.ads b/common/hw-gfx-gma-pch.ads
index 0acc852..6979b1f 100644
--- a/common/hw-gfx-gma-pch.ads
+++ b/common/hw-gfx-gma-pch.ads
@@ -22,16 +22,16 @@
-- common to all PCH outputs
- PCH_TRANSCODER_SELECT_SHIFT : constant :=
+ function PCH_TRANSCODER_SELECT_SHIFT return Natural is
(if Config.Has_New_FDI_Sink then 29 else 30);
- PCH_TRANSCODER_SELECT_MASK : constant :=
+ function PCH_TRANSCODER_SELECT_MASK return Word32 is
(if Config.Has_New_FDI_Sink then 3 * 2 ** 29 else 1 * 2 ** 30);
- type PCH_TRANSCODER_SELECT_Array is array (FDI_Port_Type) of Word32;
- PCH_TRANSCODER_SELECT : constant PCH_TRANSCODER_SELECT_Array :=
- (FDI_A => 0 * 2 ** PCH_TRANSCODER_SELECT_SHIFT,
- FDI_B => 1 * 2 ** PCH_TRANSCODER_SELECT_SHIFT,
- FDI_C => 2 * 2 ** PCH_TRANSCODER_SELECT_SHIFT);
+ function PCH_TRANSCODER_SELECT (Port : FDI_Port_Type) return Word32 is
+ (case Port is
+ when FDI_A => Shift_Left (0, PCH_TRANSCODER_SELECT_SHIFT),
+ when FDI_B => Shift_Left (1, PCH_TRANSCODER_SELECT_SHIFT),
+ when FDI_C => Shift_Left (2, PCH_TRANSCODER_SELECT_SHIFT));
end HW.GFX.GMA.PCH;