Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/79882?usp=email )
Change subject: soc/intel/common/tcss: Guard disabling MUX with TCSS_HAS_USBC_OPS ......................................................................
soc/intel/common/tcss: Guard disabling MUX with TCSS_HAS_USBC_OPS
Currently, SOC_INTEL_COMMON_BLOCK_TCSS will set MUX to disabled. The two related options to re-configure it for either USB devices or displays, are currently only supported by the ChromeEC. As such, any device without the ChromeEC will boot with attached USB-C devices in a non-functional state.
Add TCSS_HAS_USBC_OPS to make this feature configurable, and set the default to enabled if the board features the ChromeEC.
Signed-off-by: Sean Rhodes sean@starlabs.systems Change-Id: Ia848668ae9af4637fc7cffec9eb694f29d7deba9 Reviewed-on: https://review.coreboot.org/c/coreboot/+/79882 Reviewed-by: Kapil Porwal kapilporwal@google.com Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Matt DeVillier matt.devillier@gmail.com --- M src/soc/intel/common/block/tcss/Kconfig M src/soc/intel/common/block/tcss/tcss.c 2 files changed, 23 insertions(+), 13 deletions(-)
Approvals: Kapil Porwal: Looks good to me, approved Matt DeVillier: Looks good to me, approved build bot (Jenkins): Verified
diff --git a/src/soc/intel/common/block/tcss/Kconfig b/src/soc/intel/common/block/tcss/Kconfig index 4af75fc..7a8f52c 100644 --- a/src/soc/intel/common/block/tcss/Kconfig +++ b/src/soc/intel/common/block/tcss/Kconfig @@ -2,17 +2,28 @@ def_bool n select FSPS_USE_MULTI_PHASE_INIT help - Sets up USB2/3 port mapping in TCSS MUX and sets MUX to disconnect state + Sets up USB2/3 port mapping in TCSS MUX + +config TCSS_HAS_USBC_OPS + bool "Enable USB-C MUX operations via the EC" + default y if EC_GOOGLE_CHROMEEC + depends on SOC_INTEL_COMMON_BLOCK_TCSS + help + Enable USB-C operations via the EC. Requires `usbc_get_ops` to control features + such as HPD and DP Mode entry. Currently, only the ChromeEC implements this, see + (ec/google/chromeec/usbc_mux.c). + + This results in the MUX being set to a disabled state.
config ENABLE_TCSS_DISPLAY_DETECTION bool "Enable detection of displays over USB Type-C ports with TCSS" - depends on SOC_INTEL_COMMON_BLOCK_TCSS && RUN_FSP_GOP + depends on TCSS_HAS_USBC_OPS && RUN_FSP_GOP help Enable displays to be detected over Type-C ports during boot.
config ENABLE_TCSS_USB_DETECTION bool "Enable detection of USB boot devices attached to USB Type-C ports with TCSS" - depends on SOC_INTEL_COMMON_BLOCK_TCSS + depends on TCSS_HAS_USBC_OPS help Enable USB-C attached storage devices to be detected at boot. This option is required for some payloads (eg, edk2), without which devices attached diff --git a/src/soc/intel/common/block/tcss/tcss.c b/src/soc/intel/common/block/tcss/tcss.c index 7c58e3a..974aeb6 100644 --- a/src/soc/intel/common/block/tcss/tcss.c +++ b/src/soc/intel/common/block/tcss/tcss.c @@ -442,23 +442,22 @@ size_t i;
port_map = tcss_get_port_info(&num_ports); - if (port_map == NULL) + if ((port_map == NULL) || platform_is_resuming()) return;
- if (!platform_is_resuming()) { + if (CONFIG(TCSS_HAS_USBC_OPS)) for (i = 0; i < num_ports; i++) tcss_init_mux(i, &port_map[i]);
- /* This should be performed before alternate modes are entered */ - if (tcss_ops.configure_aux_bias_pads) - tcss_ops.configure_aux_bias_pads(aux_bias_pads); + /* This should be performed before alternate modes are entered */ + if (tcss_ops.configure_aux_bias_pads) + tcss_ops.configure_aux_bias_pads(aux_bias_pads);
- if (CONFIG(ENABLE_TCSS_DISPLAY_DETECTION)) - tcss_configure_dp_mode(port_map, num_ports); + if (CONFIG(ENABLE_TCSS_DISPLAY_DETECTION)) + tcss_configure_dp_mode(port_map, num_ports);
- if (CONFIG(ENABLE_TCSS_USB_DETECTION)) - tcss_configure_usb_mode(port_map, num_ports); - } + if (CONFIG(ENABLE_TCSS_USB_DETECTION)) + tcss_configure_usb_mode(port_map, num_ports); }
bool tcss_valid_tbt_auth(void)