summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/tigerlake/chip.h2
-rw-r--r--src/soc/intel/tigerlake/fsp_params.c6
-rw-r--r--src/soc/intel/tigerlake/include/soc/usb.h15
3 files changed, 23 insertions, 0 deletions
diff --git a/src/soc/intel/tigerlake/chip.h b/src/soc/intel/tigerlake/chip.h
index c0110938713c..cc12da4a1aad 100644
--- a/src/soc/intel/tigerlake/chip.h
+++ b/src/soc/intel/tigerlake/chip.h
@@ -177,6 +177,8 @@ struct soc_intel_tigerlake_config {
uint16_t usb3_wake_enable_bitmap;
/* PCH USB2 PHY Power Gating disable */
uint8_t usb2_phy_sus_pg_disable;
+ /* Program OC pins for TCSS */
+ struct tcss_port_config tcss_ports[MAX_TYPE_C_PORTS];
/*
* Acoustic Noise Mitigation
diff --git a/src/soc/intel/tigerlake/fsp_params.c b/src/soc/intel/tigerlake/fsp_params.c
index 1f1f3652f067..7c9ab88ec285 100644
--- a/src/soc/intel/tigerlake/fsp_params.c
+++ b/src/soc/intel/tigerlake/fsp_params.c
@@ -269,6 +269,12 @@ void platform_fsp_silicon_init_params_cb(FSPS_UPD *supd)
memcpy(params->PcieRpClkReqDetect, config->PcieRpClkReqDetect,
sizeof(config->PcieRpClkReqDetect));
+ for (i = 0; i < ARRAY_SIZE(config->tcss_ports); i++) {
+ if (config->tcss_ports[i].enable)
+ params->CpuUsb3OverCurrentPin[i] =
+ config->tcss_ports[i].ocpin;
+ }
+
/* Enable xDCI controller if enabled in devicetree and allowed */
dev = pcidev_path_on_root(PCH_DEVFN_USBOTG);
if (dev) {
diff --git a/src/soc/intel/tigerlake/include/soc/usb.h b/src/soc/intel/tigerlake/include/soc/usb.h
index 5dea4bf52e0a..dc66556d063c 100644
--- a/src/soc/intel/tigerlake/include/soc/usb.h
+++ b/src/soc/intel/tigerlake/include/soc/usb.h
@@ -137,4 +137,19 @@ struct usb3_port_config {
.tx_downscale_amp = 0x00, \
}
+struct tcss_port_config {
+ uint8_t enable;
+ uint8_t ocpin;
+};
+
+#define TCSS_PORT_EMPTY { \
+ .enable = 0, \
+ .ocpin = OC_SKIP, \
+}
+
+#define TCSS_PORT_DEFAULT(pin) { \
+ .enable = 1, \
+ .ocpin = (pin), \
+}
+
#endif