summaryrefslogtreecommitdiff
path: root/src/soc/intel
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel')
-rw-r--r--src/soc/intel/common/block/usb4/usb4.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/usb4/usb4.c b/src/soc/intel/common/block/usb4/usb4.c
index f3c81dc523..923ec5588e 100644
--- a/src/soc/intel/common/block/usb4/usb4.c
+++ b/src/soc/intel/common/block/usb4/usb4.c
@@ -6,7 +6,10 @@
#include <device/pci.h>
#include <device/pci_def.h>
#include <device/pci_ids.h>
+#include <intelblocks/systemagent.h>
#include <soc/pci_devs.h>
+#include <soc/pcr_ids.h>
+#include <soc/tcss.h>
#define INTEL_TBT_IMR_VALID_UUID "C44D002F-69F9-4E7D-A904-A7BAABDF43F7"
#define INTEL_TBT_WAKE_SUPPORTED_UUID "6C501103-C189-4296-BA72-9BF5A26EBE5D"
@@ -24,10 +27,18 @@ static const char *tbt_dma_acpi_name(const struct device *dev)
}
}
+static int valid_tbt_auth(void)
+{
+ return REGBAR32(PID_IOM, IOM_CSME_IMR_TBT_STATUS) & TBT_VALID_AUTHENTICATION;
+}
+
static void tbt_dma_fill_ssdt(const struct device *dev)
{
struct acpi_dp *dsd, *pkg;
+ if (!valid_tbt_auth())
+ return;
+
acpigen_write_scope(acpi_device_path(dev));
dsd = acpi_dp_new_table("_DSD");