diff options
author | Patrick Rudolph <patrick.rudolph@9elements.com> | 2024-10-17 09:22:49 +0200 |
---|---|---|
committer | Lean Sheng Tan <sheng.tan@9elements.com> | 2024-10-28 22:05:54 +0000 |
commit | 4a652eb92685ce751673858348b59286c63885dd (patch) | |
tree | b144b3d83a102e5595b2a9bdd6d3ee6de480ee09 /src/device | |
parent | d5764b8a5ae54204355d11d557d127c41352ffa4 (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')
-rw-r--r-- | src/device/pci_device.c | 18 |
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 |