device/pciexp: Add hot-plug capable helper function

Add and use a new helper function to determine if a device is
1) a PCIe device
2) it's mark hot-plug capable

Change-Id: I61cc013844024b43808cd2f054310cb6676ba69e
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84792
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Shuo Liu <shuo.liu@intel.com>
This commit is contained in:
Patrick Rudolph 2024-10-16 12:14:06 +02:00 committed by Lean Sheng Tan
commit 5d6355efcf
4 changed files with 27 additions and 17 deletions

View file

@ -144,6 +144,26 @@ struct device *pcie_find_dsn(const uint64_t serial, const uint16_t vid,
return from;
}
/**
* Returns true if the device is a hot-plug capable PCIe device.
*
* @param dev Pointer to the device structure.
*
* @return True when marked hot-plug capable.
*/
bool pciexp_dev_is_slot_hot_plug_cap(struct device *dev)
{
u16 sltcap;
unsigned int pcie_cap = pci_find_capability(dev, PCI_CAP_ID_PCIE);
if (!pcie_cap)
return 0;
sltcap = pci_read_config16(dev, pcie_cap + PCI_EXP_SLTCAP);
sltcap &= PCI_EXP_SLTCAP_HPC;
return !!sltcap;
}
static bool pcie_is_root_port(struct device *dev)
{
unsigned int pcie_pos, pcie_type;