diff options
Diffstat (limited to 'src/soc/intel/common/block/pcie/pcie_helpers.c')
-rw-r--r-- | src/soc/intel/common/block/pcie/pcie_helpers.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/soc/intel/common/block/pcie/pcie_helpers.c b/src/soc/intel/common/block/pcie/pcie_helpers.c index 31451d07f6..e8ed3be56d 100644 --- a/src/soc/intel/common/block/pcie/pcie_helpers.c +++ b/src/soc/intel/common/block/pcie/pcie_helpers.c @@ -5,14 +5,15 @@ #include <intelblocks/pcie_rp.h> #include <stdint.h> -static uint32_t pcie_slot_enable_mask(unsigned int slot, unsigned int count) +static uint32_t pcie_slot_enable_mask(const struct pcie_rp_group *group) { uint32_t mask = 0; + unsigned int fn; unsigned int i; const struct device *dev; - for (i = 0; i < count; i++) { - dev = pcidev_on_root(slot, i); + for (i = 0, fn = rp_start_fn(group); i < group->count; i++, fn++) { + dev = pcidev_on_root(group->slot, fn); if (is_dev_enabled(dev)) mask |= BIT(i); } @@ -32,7 +33,7 @@ uint32_t pcie_rp_enable_mask(const struct pcie_rp_group *const groups) __func__); break; } - mask |= pcie_slot_enable_mask(group->slot, group->count) << offset; + mask |= pcie_slot_enable_mask(group) << offset; offset += group->count; } |