Subrata Banik has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/83898?usp=email )
Change subject: soc/intel/alderlake: Correct ISH partition availability check ......................................................................
soc/intel/alderlake: Correct ISH partition availability check
The previous implementation incorrectly assumed that the presence of a UFS device implied the availability of the ISH partition. This is not always true, especially on Alder Lake platforms where ISH may be enabled by default even without UFS.
This patch fixes the issue by directly checking for the presence of the ISH device to determine if the ISH partition is available.
BUG=b:359440547 TEST=Able to dump the ISH version with UFS device
tirwen-rev3 ~ # cbmem -c -1 | grep ISH [DEBUG] ISH version: 5.4.2.7780
Able to dump the ISH version with eMMC device
trulo-rev1 ~ # cbmem -c | grep ISH [DEBUG] ISH version: 5.4.2.7780
Change-Id: I411e36606c0697f91050af40e0636f7c64810e95 Signed-off-by: Subrata Banik subratabanik@google.com --- M src/soc/intel/alderlake/chip.c 1 file changed, 6 insertions(+), 6 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/98/83898/1
diff --git a/src/soc/intel/alderlake/chip.c b/src/soc/intel/alderlake/chip.c index 45fb39f..8979ae0f6 100644 --- a/src/soc/intel/alderlake/chip.c +++ b/src/soc/intel/alderlake/chip.c @@ -167,16 +167,16 @@ /* * SoC override API to identify if ISH Firmware existed inside CSE FPT. * - * SoC with UFS enabled would like to keep ISH enabled as well, hence - * identifying the UFS enabled device is enough to conclude that the ISH - * partition also is available. + * Identifying the ISH enabled device is required to conclude that the ISH + * partition also is available (because ISH may be default enabled for non-UFS + * platforms as well starting with Alder Lake). */ bool soc_is_ish_partition_enabled(void) { - struct device *ufs = pcidev_path_on_root(PCH_DEVFN_UFS); - uint16_t ufs_pci_id = ufs ? pci_read_config16(ufs, PCI_DEVICE_ID) : 0xFFFF; + struct device *ish = pcidev_path_on_root(PCH_DEVFN_ISH); + uint16_t ish_pci_id = ish ? pci_read_config16(ish, PCI_DEVICE_ID) : 0xFFFF;
- if (ufs_pci_id == 0xFFFF) + if (ish_pci_id == 0xFFFF) return false;
return true;