soc/intel/common: Implement TBT firmware authentication validity check
After Thunderbolt firmware is downloaded to IMR, its authentication validity needs to be checked. This change implements the valid_tbt_auth function. Thunderbolt DSD and its corresponding IMR_VAID will be present to kernel only if its authentication is successful. BUG=b:188695995 TEST=Validated TGL TBT firmware authentication and its IMR_VALID into SSDT which is properly present to kernel. Signed-off-by: John Zhao <john.zhao@intel.com> Change-Id: I3c9dda341ae6f19a2a8c85f92edda3dfa08c917a Reviewed-on: https://review.coreboot.org/c/coreboot/+/54693 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
parent
81547a7d05
commit
3748170476
|
@ -6,7 +6,10 @@
|
||||||
#include <device/pci.h>
|
#include <device/pci.h>
|
||||||
#include <device/pci_def.h>
|
#include <device/pci_def.h>
|
||||||
#include <device/pci_ids.h>
|
#include <device/pci_ids.h>
|
||||||
|
#include <intelblocks/systemagent.h>
|
||||||
#include <soc/pci_devs.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_IMR_VALID_UUID "C44D002F-69F9-4E7D-A904-A7BAABDF43F7"
|
||||||
#define INTEL_TBT_WAKE_SUPPORTED_UUID "6C501103-C189-4296-BA72-9BF5A26EBE5D"
|
#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)
|
static void tbt_dma_fill_ssdt(const struct device *dev)
|
||||||
{
|
{
|
||||||
struct acpi_dp *dsd, *pkg;
|
struct acpi_dp *dsd, *pkg;
|
||||||
|
|
||||||
|
if (!valid_tbt_auth())
|
||||||
|
return;
|
||||||
|
|
||||||
acpigen_write_scope(acpi_device_path(dev));
|
acpigen_write_scope(acpi_device_path(dev));
|
||||||
|
|
||||||
dsd = acpi_dp_new_table("_DSD");
|
dsd = acpi_dp_new_table("_DSD");
|
||||||
|
|
Loading…
Reference in New Issue