soc/intel/adl: Update devicetree based on remapping for TBT PCIe

ADL has 4 TBT root ports which are PCIe compliant. TBT uses PCIe
coalescing logic where in case root port 0 is disabled, other enabled
root port is remapped to port 0.

coreboot handles this remapping scenarios for PCH and CPU PCIe root
ports and not for TBT root ports.

This patch uses the same function used for PCIe remapping to update
devicetree based on coalescing and SoC needs to pass correct function
number and number of slots.

BUG=b:210933428
BRANCH=None
TEST=Check if TBT remapping happens correctly and ACPI tables are
generated correctly.

Change-Id: Ied16191d6af41f8e2b31baee80cb475e7d557010
Signed-off-by: MAULIK V VAGHELA <maulik.v.vaghela@intel.com>
Signed-off-by: Meera Ravindranath <meera.ravindranath@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61295
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: EricR Lai <ericr_lai@compal.corp-partner.google.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
MAULIK V VAGHELA 2022-01-21 14:17:53 +05:30 committed by Felix Held
parent 948ed24ac5
commit 3e4f28f8c2
4 changed files with 20 additions and 0 deletions

View File

@ -207,6 +207,12 @@ config MAX_CPU_ROOT_PORTS
default 0 if SOC_INTEL_ALDERLAKE_PCH_N default 0 if SOC_INTEL_ALDERLAKE_PCH_N
default 3 if SOC_INTEL_ALDERLAKE_PCH_P default 3 if SOC_INTEL_ALDERLAKE_PCH_P
config MAX_TBT_ROOT_PORTS
int
default 0 if SOC_INTEL_ALDERLAKE_PCH_N
default 2 if SOC_INTEL_ALDERLAKE_PCH_M
default 4 if SOC_INTEL_ALDERLAKE_PCH_P
config MAX_ROOT_PORTS config MAX_ROOT_PORTS
int int
default MAX_PCH_ROOT_PORTS default MAX_PCH_ROOT_PORTS

View File

@ -142,6 +142,9 @@ void soc_init_pre_device(void *chip_info)
/* Swap enabled PCI ports in device tree if needed. */ /* Swap enabled PCI ports in device tree if needed. */
pcie_rp_update_devicetree(get_pch_pcie_rp_table()); pcie_rp_update_devicetree(get_pch_pcie_rp_table());
/* Swap enabled TBT root ports in device tree if needed. */
pcie_rp_update_devicetree(get_tbt_pcie_rp_table());
} }
static void cpu_fill_ssdt(const struct device *dev) static void cpu_fill_ssdt(const struct device *dev)

View File

@ -7,5 +7,6 @@
const struct pcie_rp_group *get_pch_pcie_rp_table(void); const struct pcie_rp_group *get_pch_pcie_rp_table(void);
const struct pcie_rp_group *get_cpu_pcie_rp_table(void); const struct pcie_rp_group *get_cpu_pcie_rp_table(void);
const struct pcie_rp_group *get_tbt_pcie_rp_table(void);
#endif /* __SOC_ALDERLAKE_PCIE_H__ */ #endif /* __SOC_ALDERLAKE_PCIE_H__ */

View File

@ -61,6 +61,16 @@ const struct pcie_rp_group *get_cpu_pcie_rp_table(void)
return cpu_rp_groups; return cpu_rp_groups;
} }
static const struct pcie_rp_group tbt_rp_groups[] = {
{ .slot = SA_DEV_SLOT_TBT, .count = CONFIG_MAX_TBT_ROOT_PORTS},
{ 0 }
};
const struct pcie_rp_group *get_tbt_pcie_rp_table(void)
{
return tbt_rp_groups;
}
static bool is_part_of_group(const struct device *dev, static bool is_part_of_group(const struct device *dev,
const struct pcie_rp_group *groups) const struct pcie_rp_group *groups)
{ {