Attention is currently required from: Tim Wawrzynczak.
Hello Tim Wawrzynczak,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/libgfxinit/+/70891
to review the following change.
Change subject: common/dp_aux_request: Add support for TGL ......................................................................
common/dp_aux_request: 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 --- M common/hw-gfx-gma-connector_info.adb M common/hw-gfx-gma-dp_aux_request.adb M common/hw-gfx-gma.ads 3 files changed, 136 insertions(+), 13 deletions(-)
git pull ssh://review.coreboot.org:29418/libgfxinit refs/changes/91/70891/1
diff --git a/common/hw-gfx-gma-connector_info.adb b/common/hw-gfx-gma-connector_info.adb index d611309..9d56750 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);
----------------------------------------------------------------------------