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);
 
    ----------------------------------------------------------------------------
 
