gma: Update PCH Rawclk programming for TGL
Tigerlake onwards needs the Rawclk numerator programmed into the
RAWCLK register in addition the fields from to prior generations.
Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Change-Id: Iad36221a44db4128332392bd6610132ea08c0e35
Reviewed-on: https://review.coreboot.org/c/libgfxinit/+/67491
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: Nico Huber <nico.h@gmx.de>
diff --git a/common/hw-gfx-gma.adb b/common/hw-gfx-gma.adb
index 83ded92..cacafd3 100644
--- a/common/hw-gfx-gma.adb
+++ b/common/hw-gfx-gma.adb
@@ -97,8 +97,20 @@
----------------------------------------------------------------------------
- PCH_RAWCLK_FREQ_MASK : constant :=
- (if Config.Has_Fractional_RawClk then 16#3fff# * 2 ** 16 else 16#3ff# * 2 ** 0);
+ ICP_RAWCLK_NUM : constant := 1 * 2 ** 11;
+
+ function PCH_RAWCLK_FREQ_MASK return Word32 is
+ Mask : Word32;
+ begin
+ if Config.Need_Rawclk_Numerator then
+ Mask := 16#ffff_ffff#;
+ elsif Config.Has_Fractional_RawClk then
+ Mask := 16#3fff# * 2 ** 16;
+ else
+ Mask := 16#3ff# * 2 ** 0;
+ end if;
+ return Mask;
+ end PCH_RAWCLK_FREQ_MASK;
function PCH_RAWCLK_FREQ (Freq : Frequency_Type) return Word32
is
@@ -112,6 +124,10 @@
Freq32 := Freq32 or Shift_Left
(Word32 (Div_Round_Closest (1_000, Fraction_K) - 1), 26);
end if;
+
+ if Config.Need_Rawclk_Numerator then
+ Freq32 := Freq32 or ICP_RAWCLK_NUM;
+ end if;
return Freq32;
end;
else