dp aux: Add support for TGL

Just new registers for new ports.

Change-Id: I32ea8d31d70574dbe6bb835eb755087a2cae0b1b
Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Reviewed-on: https://review.coreboot.org/c/libgfxinit/+/70891
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Sean Rhodes <sean@starlabs.systems>
Tested-by: Nico Huber <nico.h@gmx.de>
diff --git a/common/hw-gfx-gma-connector_info.adb b/common/hw-gfx-gma-connector_info.adb
index d611309..79c42a0 100644
--- a/common/hw-gfx-gma-connector_info.adb
+++ b/common/hw-gfx-gma-connector_info.adb
@@ -27,14 +27,28 @@
       Success     :    out Boolean)
    is
       DP_Port : constant GMA.DP_Port :=
-        (if Port_Cfg.Port = DIGI_A then
-            DP_A
+        (if Config.Has_Type_C_Ports
+         then
+           (case Port_Cfg.Port is
+              when DIGI_A => DP_A,
+              when DIGI_B => DP_B,
+              when DIGI_C => DP_C,
+              when DDI_TC1 => DP_D,
+              when DDI_TC2 => DP_E,
+              when DDI_TC3 => DP_F,
+              when DDI_TC4 => DP_G,
+              when DDI_TC5 => DP_H,
+              when DDI_TC6 => DP_I,
+              when others => GMA.DP_Port'First)
          else
-           (case Port_Cfg.PCH_Port is
-               when PCH_DP_B  => DP_B,
-               when PCH_DP_C  => DP_C,
-               when PCH_DP_D  => DP_D,
-               when others    => GMA.DP_Port'First));
+           (if Port_Cfg.Port = DIGI_A then
+               DP_A
+            else
+              (case Port_Cfg.PCH_Port is
+                  when PCH_DP_B  => DP_B,
+                  when PCH_DP_C  => DP_C,
+                  when PCH_DP_D  => DP_D,
+                  when others    => GMA.DP_Port'First)));
    begin
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
 
diff --git a/common/hw-gfx-gma-dp_aux_request.adb b/common/hw-gfx-gma-dp_aux_request.adb
index 54500e2..27c8d8a 100644
--- a/common/hw-gfx-gma-dp_aux_request.adb
+++ b/common/hw-gfx-gma-dp_aux_request.adb
@@ -54,10 +54,10 @@
    type AUX_CH_Data_Regs is new Positive range 1 .. 5;
 
    type AUX_CH_Data_Regs_Array is
-      array (AUX_CH_Data_Regs) of Registers.Registers_Index;
+      array (AUX_CH_Data_Regs) of Registers.Registers_Invalid_Index;
 
    type AUX_CH_Registers is record
-      CTL   : Registers.Registers_Index;
+      CTL   : Registers.Registers_Invalid_Index;
       DATA  : AUX_CH_Data_Regs_Array;
       MUTEX : Registers.Registers_Invalid_Index;
    end record;
@@ -65,7 +65,90 @@
    type AUX_CH_Registers_Array is array (DP_Port) of AUX_CH_Registers;
 
    AUX_CH : constant AUX_CH_Registers_Array :=
-     (if Config.Has_PCH_Aux_Channels then
+     (if Config.Has_Type_C_Ports then
+         AUX_CH_Registers_Array'
+        (DP_A => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_A,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_A_1,
+               2  => Registers.DDI_AUX_DATA_A_2,
+               3  => Registers.DDI_AUX_DATA_A_3,
+               4  => Registers.DDI_AUX_DATA_A_4,
+               5  => Registers.DDI_AUX_DATA_A_5),
+            MUTEX => Registers.Invalid_Register),
+         DP_B => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_B,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_B_1,
+               2  => Registers.DDI_AUX_DATA_B_2,
+               3  => Registers.DDI_AUX_DATA_B_3,
+               4  => Registers.DDI_AUX_DATA_B_4,
+               5  => Registers.DDI_AUX_DATA_B_5),
+            MUTEX => Registers.Invalid_Register),
+         DP_C => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_C,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_C_1,
+               2  => Registers.DDI_AUX_DATA_C_2,
+               3  => Registers.DDI_AUX_DATA_C_3,
+               4  => Registers.DDI_AUX_DATA_C_4,
+               5  => Registers.DDI_AUX_DATA_C_5),
+            MUTEX => Registers.Invalid_Register),
+         DP_D => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_USBC1,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_USBC1_1,
+               2  => Registers.DDI_AUX_DATA_USBC1_2,
+               3  => Registers.DDI_AUX_DATA_USBC1_3,
+               4  => Registers.DDI_AUX_DATA_USBC1_4,
+               5  => Registers.DDI_AUX_DATA_USBC1_5),
+            MUTEX => Registers.Invalid_Register),
+         DP_E => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_USBC2,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_USBC2_1,
+               2  => Registers.DDI_AUX_DATA_USBC2_2,
+               3  => Registers.DDI_AUX_DATA_USBC2_3,
+               4  => Registers.DDI_AUX_DATA_USBC2_4,
+               5  => Registers.DDI_AUX_DATA_USBC2_5),
+            MUTEX => Registers.Invalid_Register),
+         DP_F => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_USBC3,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_USBC3_1,
+               2  => Registers.DDI_AUX_DATA_USBC3_2,
+               3  => Registers.DDI_AUX_DATA_USBC3_3,
+               4  => Registers.DDI_AUX_DATA_USBC3_4,
+               5  => Registers.DDI_AUX_DATA_USBC3_5),
+            MUTEX => Registers.Invalid_Register),
+         DP_G => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_USBC4,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_USBC4_1,
+               2  => Registers.DDI_AUX_DATA_USBC4_2,
+               3  => Registers.DDI_AUX_DATA_USBC4_3,
+               4  => Registers.DDI_AUX_DATA_USBC4_4,
+               5  => Registers.DDI_AUX_DATA_USBC5_5),
+            MUTEX => Registers.Invalid_Register),
+         DP_H => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_USBC5,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_USBC5_1,
+               2  => Registers.DDI_AUX_DATA_USBC5_2,
+               3  => Registers.DDI_AUX_DATA_USBC5_3,
+               4  => Registers.DDI_AUX_DATA_USBC5_4,
+               5  => Registers.DDI_AUX_DATA_USBC5_5),
+            MUTEX => Registers.Invalid_Register),
+         DP_I => AUX_CH_Registers'
+           (CTL   => Registers.DDI_AUX_CTL_USBC6,
+            DATA  => AUX_CH_Data_Regs_Array'
+              (1  => Registers.DDI_AUX_DATA_USBC6_1,
+               2  => Registers.DDI_AUX_DATA_USBC6_2,
+               3  => Registers.DDI_AUX_DATA_USBC6_3,
+               4  => Registers.DDI_AUX_DATA_USBC6_4,
+               5  => Registers.DDI_AUX_DATA_USBC6_5),
+            MUTEX => Registers.Invalid_Register))
+      elsif Config.Has_PCH_Aux_Channels then
          AUX_CH_Registers_Array'
         (DP_A => AUX_CH_Registers'
            (CTL   => Registers.DP_AUX_CTL_A,
@@ -102,7 +185,11 @@
                3  => Registers.PCH_DP_AUX_DATA_D_3,
                4  => Registers.PCH_DP_AUX_DATA_D_4,
                5  => Registers.PCH_DP_AUX_DATA_D_5),
-            MUTEX => Registers.Invalid_Register))
+            MUTEX => Registers.Invalid_Register),
+         others => AUX_CH_Registers'
+           (DATA => AUX_CH_Data_Regs_Array'
+             (others => Registers.Invalid_Register),
+            others => Registers.Invalid_Register))
       else
          AUX_CH_Registers_Array'
         (DP_A => AUX_CH_Registers'
@@ -140,7 +227,11 @@
                3  => Registers.DDI_AUX_DATA_D_3,
                4  => Registers.DDI_AUX_DATA_D_4,
                5  => Registers.DDI_AUX_DATA_D_5),
-            MUTEX => Registers.DDI_AUX_MUTEX_D)));
+            MUTEX => Registers.DDI_AUX_MUTEX_D),
+         others => AUX_CH_Registers'
+           (DATA => AUX_CH_Data_Regs_Array'
+             (others => Registers.Invalid_Register),
+            others => Registers.Invalid_Register)));
 
    ----------------------------------------------------------------------------
 
@@ -245,6 +336,11 @@
       Response := (others => 0); -- Don't care
       Response_Length := DP_Defs.Aux_Response_Length'First;
 
+      if not Config.Has_Type_C_Ports and Port > DP_D then
+         Success := False;
+         return;
+      end if;
+
       if Config.Need_DP_Aux_Mutex then
          Registers.Set_Mask
            (Register => AUX_CH (Port).MUTEX,
diff --git a/common/hw-gfx-gma.ads b/common/hw-gfx-gma.ads
index 0454c0a..43e88e1 100644
--- a/common/hw-gfx-gma.ads
+++ b/common/hw-gfx-gma.ads
@@ -329,7 +329,7 @@
 
    ----------------------------------------------------------------------------
 
-   type DP_Port is (DP_A, DP_B, DP_C, DP_D);
+   type DP_Port is (DP_A, DP_B, DP_C, DP_D, DP_E, DP_F, DP_G, DP_H, DP_I);
 
    ----------------------------------------------------------------------------