xref: /aosp_15_r20/external/coreboot/payloads/libpayload/drivers/pcie_mediatek.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <libpayload.h>
4 #include <pci.h>
5 
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))
12 
pci_map_bus(pcidev_t dev)13 uintptr_t pci_map_bus(pcidev_t dev)
14 {
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);
18 
19 	return lib_sysinfo.pcie_ctrl_base + PCIE_CFG_OFFSET_ADDR;
20 }
21