From 3dd72a36e89df730abccb6a2ee9d53eddc34c1ce Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Sat, 8 Mar 2025 09:24:26 -0600 Subject: [PATCH] soc/intel/{adl,mtl,ptl,tgl}: Make IOM ACPI device visibility configurable Coolstar's Windows drivers require the IOM device to be visible to the OS, so add a Kconfig to control this, which mainboards will select in subsequent patches. TEST=build/boot Win11 on rex/screebo, verify USB4 drivers functional. Change-Id: I00ef9703179d87b7b476ef18d8d02fcafa9e14ab Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/86792 Reviewed-by: Sean Rhodes Tested-by: build bot (Jenkins) Reviewed-by: Subrata Banik --- src/soc/intel/alderlake/acpi/tcss.asl | 5 +++++ src/soc/intel/common/block/usb4/Kconfig | 10 ++++++++++ src/soc/intel/meteorlake/acpi/tcss.asl | 7 ++++++- src/soc/intel/pantherlake/acpi/tcss.asl | 7 ++++++- src/soc/intel/tigerlake/acpi/tcss.asl | 5 +++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/soc/intel/alderlake/acpi/tcss.asl b/src/soc/intel/alderlake/acpi/tcss.asl index 8dfa8750c0..b8b9fa4175 100644 --- a/src/soc/intel/alderlake/acpi/tcss.asl +++ b/src/soc/intel/alderlake/acpi/tcss.asl @@ -331,8 +331,13 @@ Scope (\_SB) Name (_CRS, ResourceTemplate () { Memory32Fixed (ReadWrite, IOM_BASE_ADDRESS, IOM_BASE_SIZE) }) +#if CONFIG(IOM_ACPI_DEVICE_VISIBLE) + /* ACPI_STATUS_DEVICE_ALL_ON */ + Name (_STA, 0xF) +#else /* ACPI_STATUS_DEVICE_HIDDEN_ON */ Name (_STA, 0xB) +#endif } } diff --git a/src/soc/intel/common/block/usb4/Kconfig b/src/soc/intel/common/block/usb4/Kconfig index 1ae570c2bf..557f199cc1 100644 --- a/src/soc/intel/common/block/usb4/Kconfig +++ b/src/soc/intel/common/block/usb4/Kconfig @@ -58,3 +58,13 @@ config SOFTWARE_CONNECTION_MANAGER help Enable SCM so it's used instead of FCM. endchoice + +config IOM_ACPI_DEVICE_VISIBLE + bool + depends on SOC_INTEL_COMMON_BLOCK_USB4 + default n + help + Select this config if the mainboard needs the IOM ACPI device + visible to the OS. This is needed for ChromeOS devices for + which ChromeEC acts as the TCPC, otherwise should be left + unselected. diff --git a/src/soc/intel/meteorlake/acpi/tcss.asl b/src/soc/intel/meteorlake/acpi/tcss.asl index 24d28f3b63..b765f0c738 100644 --- a/src/soc/intel/meteorlake/acpi/tcss.asl +++ b/src/soc/intel/meteorlake/acpi/tcss.asl @@ -334,8 +334,13 @@ Scope (\_SB.PCI0) IOM_BASE_ADDR, IOM_BASE_ADDR_MAX, 0x0, IOM_BASE_SIZE,,,) }) - /* Hide the device so that Windows does not complain on missing driver */ +#if CONFIG(IOM_ACPI_DEVICE_VISIBLE) + /* ACPI_STATUS_DEVICE_ALL_ON */ + Name (_STA, 0xF) +#else + /* ACPI_STATUS_DEVICE_HIDDEN_ON */ Name (_STA, 0xB) +#endif } /* diff --git a/src/soc/intel/pantherlake/acpi/tcss.asl b/src/soc/intel/pantherlake/acpi/tcss.asl index 1743b1e454..a89d26fb25 100644 --- a/src/soc/intel/pantherlake/acpi/tcss.asl +++ b/src/soc/intel/pantherlake/acpi/tcss.asl @@ -334,8 +334,13 @@ Scope (\_SB.PCI0) IOM_BASE_ADDR, IOM_BASE_ADDR_MAX, 0x0, IOM_BASE_SIZE,,,) }) - /* Hide the device so that Windows does not complain on missing driver */ +#if CONFIG(IOM_ACPI_DEVICE_VISIBLE) + /* ACPI_STATUS_DEVICE_ALL_ON */ + Name (_STA, 0xF) +#else + /* ACPI_STATUS_DEVICE_HIDDEN_ON */ Name (_STA, 0xB) +#endif } /* diff --git a/src/soc/intel/tigerlake/acpi/tcss.asl b/src/soc/intel/tigerlake/acpi/tcss.asl index 2a7e674973..d01cf250aa 100644 --- a/src/soc/intel/tigerlake/acpi/tcss.asl +++ b/src/soc/intel/tigerlake/acpi/tcss.asl @@ -331,8 +331,13 @@ Scope (\_SB) Name (_CRS, ResourceTemplate () { Memory32Fixed (ReadWrite, IOM_BASE_ADDRESS, IOM_BASE_SIZE) }) +#if CONFIG(IOM_ACPI_DEVICE_VISIBLE) + /* ACPI_STATUS_DEVICE_ALL_ON */ + Name (_STA, 0xF) +#else /* ACPI_STATUS_DEVICE_HIDDEN_ON */ Name (_STA, 0xB) +#endif } }