summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/soc/intel/tigerlake/early_tcss.c19
-rw-r--r--src/soc/intel/tigerlake/fsp_params.c5
-rw-r--r--src/soc/intel/tigerlake/include/soc/early_tcss.h16
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);