1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <libpayload.h>
6 #define PCIE_CFGNUM_REG 0x140
7 #define PCIE_CFG_DEVFN(devfn) ((devfn) & GENMASK(7, 0))
8 #define PCIE_CFG_BUS(bus) (((bus) << 8) & GENMASK(15, 8))
9 #define PCIE_CFG_OFFSET_ADDR 0x1000
10 #define PCIE_CFG_HEADER(bus, devfn) \
11 (PCIE_CFG_BUS(bus) | PCIE_CFG_DEVFN(devfn))
13 uintptr_t pci_map_bus(pcidev_t dev
)
15 u32 devfn
= (PCI_SLOT(dev
) << 3) | PCI_FUNC(dev
);
16 u32 val
= PCIE_CFG_HEADER(PCI_BUS(dev
), devfn
);
17 write32((void *)(lib_sysinfo
.pcie_ctrl_base
+ PCIE_CFGNUM_REG
), val
);
19 return lib_sysinfo
.pcie_ctrl_base
+ PCIE_CFG_OFFSET_ADDR
;