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>
This commit is contained in:
Sean Rhodes 2022-05-21 10:39:27 +01:00 committed by Martin L Roth
parent ae5bc43d3b
commit 060df17f1d
7 changed files with 48 additions and 1 deletions

View File

@ -726,6 +726,30 @@ endif # PCIEXP_HOTPLUG
endif # PCIEXP_PLUGIN_SUPPORT 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 config EARLY_PCI_BRIDGE
bool "Early PCI bridge" bool "Early PCI bridge"
depends on PCI depends on PCI

View File

@ -426,6 +426,9 @@ config ACPI_ADL_IPU_ES_SUPPORT
help help
Enables ACPI entry to provide silicon type information to IPU kernel driver. 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 config ALDERLAKE_ENABLE_SOC_WORKAROUND
bool bool
default y default y

View File

@ -161,6 +161,12 @@ Scope (\_SB)
CDW1 |= UNRECOGNIZED_REVISION CDW1 |= UNRECOGNIZED_REVISION
} }
Return (Arg3) 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")) { } ElseIf (Arg0 == ToUUID("23A0D13A-26AB-486C-9C5F-0FFA525A575A")) {
/* /*
* Operating System Capabilities for USB4 * Operating System Capabilities for USB4
@ -192,6 +198,7 @@ Scope (\_SB)
INTER_DOMAIN_USB4_INTERNET_PROTOCOL INTER_DOMAIN_USB4_INTERNET_PROTOCOL
CDW3 = Local0 CDW3 = Local0
Return (Arg3) Return (Arg3)
#endif
} Else { } Else {
CDW1 |= UNRECOGNIZED_UUID CDW1 |= UNRECOGNIZED_UUID
Return (Arg3) Return (Arg3)

View File

@ -325,6 +325,9 @@ config MRC_CHANNEL_WIDTH
int int
default 16 default 16
config SOFTWARE_CONNECTION_MANAGER
default y if CHROMEOS
config SOC_INTEL_GFX_FRAMEBUFFER_OFFSET config SOC_INTEL_GFX_FRAMEBUFFER_OFFSET
hex hex
default 0x800000 default 0x800000

View File

@ -155,6 +155,12 @@ Scope (\_SB)
CDW1 |= UNRECOGNIZED_REVISION CDW1 |= UNRECOGNIZED_REVISION
} }
Return (Arg3) 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")) { } ElseIf (Arg0 == ToUUID("23A0D13A-26AB-486C-9C5F-0FFA525A575A")) {
/* /*
* Operating System Capabilities for USB4 * Operating System Capabilities for USB4
@ -186,6 +192,7 @@ Scope (\_SB)
INTER_DOMAIN_USB4_INTERNET_PROTOCOL INTER_DOMAIN_USB4_INTERNET_PROTOCOL
CDW3 = Local0 CDW3 = Local0
Return (Arg3) Return (Arg3)
#endif
} Else { } Else {
CDW1 |= UNRECOGNIZED_UUID CDW1 |= UNRECOGNIZED_UUID
Return (Arg3) Return (Arg3)

View File

@ -295,6 +295,9 @@ config MRC_CHANNEL_WIDTH
int int
default 16 default 16
config SOFTWARE_CONNECTION_MANAGER
default y if CHROMEOS
# Intel recommends reserving the following resources per USB4 root port, # 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 # from TGL BIOS Spec (doc #611569) Revision 0.7.6 Section 7.2.5.1.5
# - 42 buses # - 42 buses

View File

@ -161,7 +161,7 @@ Scope (\_SB)
CDW1 |= UNRECOGNIZED_REVISION CDW1 |= UNRECOGNIZED_REVISION
} }
Return (Arg3) Return (Arg3)
#if CONFIG(CHROMEOS) #if CONFIG(SOFTWARE_CONNECTION_MANAGER)
/* /*
* Software Connection Manager doesn't work with Linux 5.13 or later and * Software Connection Manager doesn't work with Linux 5.13 or later and
* results in TBT ports timing out. Not advertising this results in * results in TBT ports timing out. Not advertising this results in