summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--baseboard/intelrvp/adlrvp.c25
-rw-r--r--baseboard/intelrvp/adlrvp.h6
2 files changed, 30 insertions, 1 deletions
diff --git a/baseboard/intelrvp/adlrvp.c b/baseboard/intelrvp/adlrvp.c
index a9aac4eb0a..8ded342f09 100644
--- a/baseboard/intelrvp/adlrvp.c
+++ b/baseboard/intelrvp/adlrvp.c
@@ -107,7 +107,7 @@ struct usb_mux usbc3_tcss_usb_mux = {
#endif
/* USB muxes Configuration */
-const struct usb_mux usb_muxes[] = {
+struct usb_mux usb_muxes[] = {
[TYPE_C_PORT_0] = {
.usb_port = TYPE_C_PORT_0,
.next_mux = &usbc0_tcss_usb_mux,
@@ -258,10 +258,33 @@ static void enable_h1_irq(void)
}
DECLARE_HOOK(HOOK_INIT, enable_h1_irq, HOOK_PRIO_LAST);
+static void configure_retimer_usbmux(void)
+{
+ switch (board_get_version() & 0x3F) {
+ case ADLP_LP5_T4_RVP_SKU_BOARD_ID:
+ /* No retimer on Port-2 */
+#if defined(HAS_TASK_PD_C2)
+ usb_muxes[TYPE_C_PORT_2].driver = NULL;
+#endif
+ break;
+
+ /* Add additional board SKUs */
+
+ default:
+ break;
+ }
+}
+
static void tcpc_aic_init(void)
{
int i;
+ /*
+ * Change the default retimer usb mux config at runtime based on the
+ * board SKU.
+ */
+ configure_retimer_usbmux();
+
/* Initialize the IOEXPANDER on TCPC-AIC */
for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++)
pca9675_init(i);
diff --git a/baseboard/intelrvp/adlrvp.h b/baseboard/intelrvp/adlrvp.h
index f87a235a4b..b973b69a43 100644
--- a/baseboard/intelrvp/adlrvp.h
+++ b/baseboard/intelrvp/adlrvp.h
@@ -13,6 +13,9 @@
#include "baseboard.h"
+/* RVP Board ids */
+#define ADLP_LP5_T4_RVP_SKU_BOARD_ID 0x13
+
/* MECC config */
#define CONFIG_INTEL_RVP_MECC_VERSION_1_0
@@ -64,6 +67,9 @@
#define I2C_PORT3_BB_RETIMER_ADDR 0x59
#endif
+/* Configure mux at runtime */
+#define CONFIG_USB_MUX_RUNTIME_CONFIG
+
/* Enable VCONN */
#define CONFIG_USBC_VCONN
#define CONFIG_USBC_VCONN_SWAP