summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Rhodes <sean@starlabs.systems>2022-05-21 10:39:27 +0100
committerMartin L Roth <gaumless@gmail.com>2023-01-08 01:26:25 +0000
commit060df17f1d17a78221b4498a354ee068de9d388c (patch)
treef4397bc75c2e485d7bb5200fda110a41f7403f3d
parentae5bc43d3b2df7854de70756e54138c542b8a52e (diff)
soc/intel/alderlake/acpi: Add Kconfig options for SCM and FCM
Software Connection Manager doesn't work with Linux 5.13 or later, resulting in TBT ports timing out. Not advertising this results in Firmware Connection Manager being used and TBT works correctly. Add Kconfig options to chose between SCM (Software Connection Manager) and FCM (Firmware Connection Manager). FCM is primary, as it's more compatible save for ChromeOS devices as ChromeOS uses SCM. Linux patch: torvalds/linux@c6da62a c6da62a219d028de10f2e22e93a34c7ee2b88d03 Tested with StarBook Mk VI (i7-1260P). Signed-off-by: Sean Rhodes <sean@starlabs.systems> Change-Id: Iac31d37c0873f41f7b14e1051fe214466d1ebdd8 Reviewed-on: https://review.coreboot.org/c/coreboot/+/64561 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kapil Porwal <kapilporwal@google.com> Reviewed-by: Subrata Banik <subratabanik@google.com> Reviewed-by: Martin L Roth <gaumless@gmail.com>
-rw-r--r--src/device/Kconfig24
-rw-r--r--src/soc/intel/alderlake/Kconfig3
-rw-r--r--src/soc/intel/alderlake/acpi/tcss.asl7
-rw-r--r--src/soc/intel/meteorlake/Kconfig3
-rw-r--r--src/soc/intel/meteorlake/acpi/tcss.asl7
-rw-r--r--src/soc/intel/tigerlake/Kconfig3
-rw-r--r--src/soc/intel/tigerlake/acpi/tcss.asl2
7 files changed, 48 insertions, 1 deletions
diff --git a/src/device/Kconfig b/src/device/Kconfig
index d0cce77731..1ff14a6571 100644
--- a/src/device/Kconfig
+++ b/src/device/Kconfig
@@ -726,6 +726,30 @@ endif # PCIEXP_HOTPLUG
endif # PCIEXP_PLUGIN_SUPPORT
+choice
+ prompt "Connection Manager"
+ default FIRMWARE_CONNECTION_MANAGER
+ help
+ Software Connection Manager doesn't work with Linux 5.13 or later,
+ resulting in TBT ports timing out. Firmware Connection Manager works
+ correctly.
+
+ Linux patch:
+ torvalds/linux@c6da62a
+ c6da62a219d028de10f2e22e93a34c7ee2b88d03
+
+config FIRMWARE_CONNECTION_MANAGER
+ bool "Firmware Connection Manager"
+ help
+ Disable SCM so that FCM can be used
+
+config SOFTWARE_CONNECTION_MANAGER
+ bool "Software Connection Manager"
+ help
+ Enable SCM so it's used instead of FCM.
+
+endchoice
+
config EARLY_PCI_BRIDGE
bool "Early PCI bridge"
depends on PCI
diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig
index 9d950a71b6..1b2f6953ef 100644
--- a/src/soc/intel/alderlake/Kconfig
+++ b/src/soc/intel/alderlake/Kconfig
@@ -426,6 +426,9 @@ config ACPI_ADL_IPU_ES_SUPPORT
help
Enables ACPI entry to provide silicon type information to IPU kernel driver.
+config SOFTWARE_CONNECTION_MANAGER
+ default y if CHROMEOS
+
config ALDERLAKE_ENABLE_SOC_WORKAROUND
bool
default y
diff --git a/src/soc/intel/alderlake/acpi/tcss.asl b/src/soc/intel/alderlake/acpi/tcss.asl
index 826c60740a..9edaf77110 100644
--- a/src/soc/intel/alderlake/acpi/tcss.asl
+++ b/src/soc/intel/alderlake/acpi/tcss.asl
@@ -161,6 +161,12 @@ Scope (\_SB)
CDW1 |= UNRECOGNIZED_REVISION
}
Return (Arg3)
+#if CONFIG(SOFTWARE_CONNECTION_MANAGER)
+ /*
+ * Software Connection Manager doesn't work with Linux 5.13 or later and
+ * results in TBT ports timing out. Not advertising this results in
+ * Firmware Connection Manager being used and TBT works correctly.
+ */
} ElseIf (Arg0 == ToUUID("23A0D13A-26AB-486C-9C5F-0FFA525A575A")) {
/*
* Operating System Capabilities for USB4
@@ -192,6 +198,7 @@ Scope (\_SB)
INTER_DOMAIN_USB4_INTERNET_PROTOCOL
CDW3 = Local0
Return (Arg3)
+#endif
} Else {
CDW1 |= UNRECOGNIZED_UUID
Return (Arg3)
diff --git a/src/soc/intel/meteorlake/Kconfig b/src/soc/intel/meteorlake/Kconfig
index a612846ff0..7f9b9419a9 100644
--- a/src/soc/intel/meteorlake/Kconfig
+++ b/src/soc/intel/meteorlake/Kconfig
@@ -325,6 +325,9 @@ config MRC_CHANNEL_WIDTH
int
default 16
+config SOFTWARE_CONNECTION_MANAGER
+ default y if CHROMEOS
+
config SOC_INTEL_GFX_FRAMEBUFFER_OFFSET
hex
default 0x800000
diff --git a/src/soc/intel/meteorlake/acpi/tcss.asl b/src/soc/intel/meteorlake/acpi/tcss.asl
index 6635d085b4..c1360489ea 100644
--- a/src/soc/intel/meteorlake/acpi/tcss.asl
+++ b/src/soc/intel/meteorlake/acpi/tcss.asl
@@ -155,6 +155,12 @@ Scope (\_SB)
CDW1 |= UNRECOGNIZED_REVISION
}
Return (Arg3)
+#if CONFIG(SOFTWARE_CONNECTION_MANAGER)
+ /*
+ * Software Connection Manager doesn't work with Linux 5.13 or later and
+ * results in TBT ports timing out. Not advertising this results in
+ * Firmware Connection Manager being used and TBT works correctly.
+ */
} ElseIf (Arg0 == ToUUID("23A0D13A-26AB-486C-9C5F-0FFA525A575A")) {
/*
* Operating System Capabilities for USB4
@@ -186,6 +192,7 @@ Scope (\_SB)
INTER_DOMAIN_USB4_INTERNET_PROTOCOL
CDW3 = Local0
Return (Arg3)
+#endif
} Else {
CDW1 |= UNRECOGNIZED_UUID
Return (Arg3)
diff --git a/src/soc/intel/tigerlake/Kconfig b/src/soc/intel/tigerlake/Kconfig
index bcf4a82655..288bb39462 100644
--- a/src/soc/intel/tigerlake/Kconfig
+++ b/src/soc/intel/tigerlake/Kconfig
@@ -295,6 +295,9 @@ config MRC_CHANNEL_WIDTH
int
default 16
+config SOFTWARE_CONNECTION_MANAGER
+ default y if CHROMEOS
+
# Intel recommends reserving the following resources per USB4 root port,
# from TGL BIOS Spec (doc #611569) Revision 0.7.6 Section 7.2.5.1.5
# - 42 buses
diff --git a/src/soc/intel/tigerlake/acpi/tcss.asl b/src/soc/intel/tigerlake/acpi/tcss.asl
index b24a9e6464..08b348062f 100644
--- a/src/soc/intel/tigerlake/acpi/tcss.asl
+++ b/src/soc/intel/tigerlake/acpi/tcss.asl
@@ -161,7 +161,7 @@ Scope (\_SB)
CDW1 |= UNRECOGNIZED_REVISION
}
Return (Arg3)
-#if CONFIG(CHROMEOS)
+#if CONFIG(SOFTWARE_CONNECTION_MANAGER)
/*
* Software Connection Manager doesn't work with Linux 5.13 or later and
* results in TBT ports timing out. Not advertising this results in