diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/soc/intel/tigerlake/early_tcss.c | 19 | ||||
-rw-r--r-- | src/soc/intel/tigerlake/fsp_params.c | 5 | ||||
-rw-r--r-- | src/soc/intel/tigerlake/include/soc/early_tcss.h | 16 |
3 files changed, 26 insertions, 14 deletions
diff --git a/src/soc/intel/tigerlake/early_tcss.c b/src/soc/intel/tigerlake/early_tcss.c index a2810b5e57..cdc90ad813 100644 --- a/src/soc/intel/tigerlake/early_tcss.c +++ b/src/soc/intel/tigerlake/early_tcss.c @@ -1,8 +1,10 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ +#include <bootmode.h> #include <console/console.h> #include <device/pci.h> #include <intelblocks/pmc_ipc.h> +#include <security/vboot/vboot_common.h> #include <soc/early_tcss.h> #include <soc/pci_devs.h> #include <stdlib.h> @@ -237,7 +239,7 @@ static int send_pmc_dp_mode_request(int port, struct tcss_mux mux_data) return 0; } -void update_tcss_mux(int port, struct tcss_mux mux_data) +static void update_tcss_mux(int port, struct tcss_mux mux_data) { int ret = 0; @@ -261,7 +263,18 @@ void update_tcss_mux(int port, struct tcss_mux mux_data) printk(BIOS_ERR, "Port C%d mux set failed with error %d\n", port, ret); } -__weak void mainboard_early_tcss_enable(void) +void tcss_early_configure(void) { - /* to be overwritten by each mainboard that needs early tcss */ + const struct tcss_mux *mux_info; + size_t num_ports; + int i; + + if (!display_init_required()) + return; + + mux_info = mainboard_tcss_fill_mux_info(&num_ports); + + for (i = 0; i < num_ports; i++) + update_tcss_mux(i, mux_info[i]); + } diff --git a/src/soc/intel/tigerlake/fsp_params.c b/src/soc/intel/tigerlake/fsp_params.c index 3e440aa9d6..c5501b7dc3 100644 --- a/src/soc/intel/tigerlake/fsp_params.c +++ b/src/soc/intel/tigerlake/fsp_params.c @@ -462,9 +462,8 @@ void platform_fsp_multi_phase_init_cb(uint32_t phase_index) /* TCSS specific initialization here */ printk(BIOS_DEBUG, "FSP MultiPhaseSiInit %s/%s called\n", __FILE__, __func__); - if (CONFIG(EARLY_TCSS_DISPLAY) && (vboot_recovery_mode_enabled() || - vboot_developer_mode_enabled())) - mainboard_early_tcss_enable(); + if (CONFIG(EARLY_TCSS_DISPLAY)) + tcss_early_configure(); break; default: break; diff --git a/src/soc/intel/tigerlake/include/soc/early_tcss.h b/src/soc/intel/tigerlake/include/soc/early_tcss.h index c009e8432c..8b5d8028a6 100644 --- a/src/soc/intel/tigerlake/include/soc/early_tcss.h +++ b/src/soc/intel/tigerlake/include/soc/early_tcss.h @@ -126,14 +126,14 @@ struct tcss_mux { uint8_t usb2_port; /* USB3 Port Number */ }; -void update_tcss_mux(int port, struct tcss_mux mux_data); +void tcss_early_configure(void); /* - * Weak mainboard method to setup any mux configuration needed for early TCSS operations. - * This function will need to obtain any mux data needed to forward to IOM/PMC and call - * the update_tcss_mux method which will call any PMC commands needed to connect the - * ports. Since the mux data may be stored differently by different mainboards this - * must be overridden by the mainboard with its specific mux data stored in a struct tcss_mux - * struct as defined above. + * Mainboard method to setup any mux configuration needed for early TCSS operations. + * This function will need to obtain any mux data needed to forward to IOM/PMC. + * Since the mux data may be stored differently by different mainboards this + * must be defined by the mainboard with its specific mux data stored in a struct tcss_mux + * as defined above. + * Returns completed tcss_mux structure */ -void mainboard_early_tcss_enable(void); +const struct tcss_mux *mainboard_tcss_fill_mux_info(size_t *num_ports); |