gma: Add a flag to use GMCH transcoder registers

Change-Id: Ic9bff918bdcab3c5c55316cb6de1a8a8bf1c6430
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/25406
Reviewed-by: Nico Huber <nico.h@gmx.de>
diff --git a/common/hw-gfx-gma-transcoder.ads b/common/hw-gfx-gma-transcoder.ads
index aa67eb4..79be8f7 100644
--- a/common/hw-gfx-gma-transcoder.ads
+++ b/common/hw-gfx-gma-transcoder.ads
@@ -13,6 +13,7 @@
 --
 
 with HW.GFX.GMA.Registers;
+with HW.GFX.GMA.Config;
 
 private package HW.GFX.GMA.Transcoder
 is
@@ -49,6 +50,35 @@
 
    type Transcoder_Array is array (Transcoder_Index) of Transcoder_Regs;
 
+   PIPE_DATA_M1 : constant array (0 .. 1) of Registers.Registers_Index :=
+     (if Config.Has_GMCH_DP_Transcoder then
+        (0 => Registers.PIPEA_GMCH_DATA_M,
+         1 => Registers.PIPEB_GMCH_DATA_M)
+      else
+        (0 => Registers.PIPEA_DATA_M1,
+         1 => Registers.PIPEB_DATA_M1));
+   PIPE_DATA_N1 : constant array (0 .. 1) of Registers.Registers_Index :=
+     (if Config.Has_GMCH_DP_Transcoder then
+        (0 => Registers.PIPEA_GMCH_DATA_N,
+         1 => Registers.PIPEB_GMCH_DATA_N)
+      else
+        (0 => Registers.PIPEA_DATA_N1,
+         1 => Registers.PIPEB_DATA_N1));
+   PIPE_LINK_M1 : constant array (0 .. 1) of Registers.Registers_Index :=
+     (if Config.Has_GMCH_DP_Transcoder then
+        (0 => Registers.PIPEA_GMCH_LINK_M,
+         1 => Registers.PIPEB_GMCH_LINK_M)
+      else
+        (0 => Registers.PIPEA_LINK_M1,
+         1 => Registers.PIPEB_LINK_M1));
+   PIPE_LINK_N1 : constant array (0 .. 1) of Registers.Registers_Index :=
+     (if Config.Has_GMCH_DP_Transcoder then
+        (0 => Registers.PIPEA_GMCH_LINK_N,
+         1 => Registers.PIPEB_GMCH_LINK_N)
+      else
+        (0 => Registers.PIPEA_LINK_N1,
+         1 => Registers.PIPEB_LINK_N1));
+
    Transcoders : constant Transcoder_Array :=
      (Trans_EDP =>
         (HTOTAL         => Registers.HTOTAL_EDP,
@@ -73,10 +103,10 @@
          VBLANK         => Registers.VBLANK_A,
          VSYNC          => Registers.VSYNC_A,
          CONF           => Registers.PIPEACONF,
-         DATA_M1        => Registers.PIPEA_DATA_M1,
-         DATA_N1        => Registers.PIPEA_DATA_N1,
-         LINK_M1        => Registers.PIPEA_LINK_M1,
-         LINK_N1        => Registers.PIPEA_LINK_N1,
+         DATA_M1        => PIPE_DATA_M1 (0),
+         DATA_N1        => PIPE_DATA_N1 (0),
+         LINK_M1        => PIPE_LINK_M1 (0),
+         LINK_N1        => PIPE_LINK_N1 (0),
          DDI_FUNC_CTL   => Registers.PIPEA_DDI_FUNC_CTL,
          MSA_MISC       => Registers.PIPEA_MSA_MISC,
          CLK_SEL        => Registers.TRANSA_CLK_SEL),
@@ -88,10 +118,10 @@
          VBLANK         => Registers.VBLANK_B,
          VSYNC          => Registers.VSYNC_B,
          CONF           => Registers.PIPEBCONF,
-         DATA_M1        => Registers.PIPEB_DATA_M1,
-         DATA_N1        => Registers.PIPEB_DATA_N1,
-         LINK_M1        => Registers.PIPEB_LINK_M1,
-         LINK_N1        => Registers.PIPEB_LINK_N1,
+         DATA_M1        => PIPE_DATA_M1 (1),
+         DATA_N1        => PIPE_DATA_N1 (1),
+         LINK_M1        => PIPE_LINK_M1 (1),
+         LINK_N1        => PIPE_LINK_N1 (1),
          DDI_FUNC_CTL   => Registers.PIPEB_DDI_FUNC_CTL,
          MSA_MISC       => Registers.PIPEB_MSA_MISC,
          CLK_SEL        => Registers.TRANSB_CLK_SEL),