summaryrefslogtreecommitdiff
path: root/src/device/pci_device.c
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2024-10-17 09:22:49 +0200
committerLean Sheng Tan <sheng.tan@9elements.com>2024-10-28 22:05:54 +0000
commit4a652eb92685ce751673858348b59286c63885dd (patch)
treeb144b3d83a102e5595b2a9bdd6d3ee6de480ee09 /src/device/pci_device.c
parentd5764b8a5ae54204355d11d557d127c41352ffa4 (diff)
pci: Add method to read PME capability
Add a helper method to read the PME capability. Will be used in the following commit. Change-Id: Id1fdc98c9ce86d3ddf8056bb609afc58008cf2e9 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/84793 Reviewed-by: Shuo Liu <shuo.liu@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Subrata Banik <subratabanik@google.com>
Diffstat (limited to 'src/device/pci_device.c')
-rw-r--r--src/device/pci_device.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index a2ad2b3db9..d03d88df39 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -1346,6 +1346,24 @@ uint16_t pci_find_cap_recursive(const struct device *dev, uint16_t cap)
}
/**
+ * Returns if the device support PMEs.
+ *
+ * @param dev Pointer to the device structure.
+ * @return Returns true when the device support PMEs. The PME generation can be
+ * disabled though.
+ */
+bool pci_has_pme_pin(const struct device *dev)
+{
+ const uint16_t cap = pci_find_capability(dev, PCI_CAP_ID_PM);
+ if (!cap)
+ return false;
+
+ const uint16_t pmecap = pci_read_config16(dev, cap + PCI_PM_PMC);
+
+ return !!(pmecap & PCI_PM_CAP_PME);
+}
+
+/**
* PCI devices that are marked as "hidden" do not get probed. However, the same
* initialization logic is still performed as if it were. This is useful when
* devices would like to be described in the devicetree.cb file, and/or present