Tim Wawrzynczak has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/57145 )
Change subject: soc/intel/common/block: Add PAM locking function ......................................................................
soc/intel/common/block: Add PAM locking function
Some FSPs provide a UPD to allow the bootloader to set the PAM lock bit instead of the FSP, therefore add a function in the common code to do this. Source: ADL & TGL FSP integration guides
Signed-off-by: Tim Wawrzynczak twawrzynczak@chromium.org Change-Id: I1d6642b496617b6e8ccda8a0aa6bfd88ea9dc3ba --- M src/soc/intel/common/block/include/intelblocks/systemagent.h M src/soc/intel/common/block/systemagent/systemagent.c M src/soc/intel/common/block/systemagent/systemagent_def.h 3 files changed, 15 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/45/57145/1
diff --git a/src/soc/intel/common/block/include/intelblocks/systemagent.h b/src/soc/intel/common/block/include/intelblocks/systemagent.h index fe14c18..f708fae 100644 --- a/src/soc/intel/common/block/include/intelblocks/systemagent.h +++ b/src/soc/intel/common/block/include/intelblocks/systemagent.h @@ -79,6 +79,9 @@ size_t sa_get_tseg_size(void); /* Fill MMIO resource above 4GB into GNVS */ void sa_fill_gnvs(struct global_nvs *gnvs); +/* API to lock PAM registers */ +void sa_lock_pam(void); + /* * SoC overrides * diff --git a/src/soc/intel/common/block/systemagent/systemagent.c b/src/soc/intel/common/block/systemagent/systemagent.c index 6e02c81..45e1d42 100644 --- a/src/soc/intel/common/block/systemagent/systemagent.c +++ b/src/soc/intel/common/block/systemagent/systemagent.c @@ -306,6 +306,15 @@ MCHBAR8(MCH_PAIR) = pair; }
+void sa_lock_pam(void) +{ + const struct device *dev = pcidev_path_on_root(SA_DEVFN_ROOT); + if (!dev) + return; + + pci_or_config8(dev, PAM0, PAM_LOCK); +} + static struct device_operations systemagent_ops = { .read_resources = systemagent_read_resources, .set_resources = pci_dev_set_resources, diff --git a/src/soc/intel/common/block/systemagent/systemagent_def.h b/src/soc/intel/common/block/systemagent/systemagent_def.h index 7517b14..0add13e 100644 --- a/src/soc/intel/common/block/systemagent/systemagent_def.h +++ b/src/soc/intel/common/block/systemagent/systemagent_def.h @@ -35,6 +35,9 @@ #define PAM5 0x85 #define PAM6 0x86
+/* PAM0 contains the lock bit */ +#define PAM_LOCK (1 << 0) + /* Device 0:0.0 MMIO space */ #define MCH_PAIR 0x5418