summaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
authorSubrata Banik <subratabanik@google.com>2024-08-13 18:08:56 +0000
committerSubrata Banik <subratabanik@google.com>2024-08-15 06:28:33 +0000
commit0b2f9c9582af96fa3de82e2e7ab7c4f99119e1a4 (patch)
tree21bb250b01c1aa505ba04bc0bc74eeb55b1e0ed1 /src/soc
parent7de29115893c30832fb136de1d6b2b9d2dc4d968 (diff)
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=1. Able to dump the ISH version with UFS device: ``` tirwen-rev3 ~ # cbmem -c -1 | grep ISH [DEBUG] ISH version: 5.4.2.7780 ``` 2. 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> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83898 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Dinesh Gehlot <digehlot@google.com> Reviewed-by: Eric Lai <ericllai@google.com>
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/intel/alderlake/chip.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/soc/intel/alderlake/chip.c b/src/soc/intel/alderlake/chip.c
index 45fb39f931..8979ae0f65 100644
--- a/src/soc/intel/alderlake/chip.c
+++ b/src/soc/intel/alderlake/chip.c
@@ -167,16 +167,16 @@ const char *soc_acpi_name(const struct device *dev)
/*
* 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;