From: Chao-ying Fu <c...@mips.com> Avoid writing to PCI_MEMORY_BASE and PCI_MEMORY_LIMIT registers for bus 0, device 0 (the root bridge) in the Xilinx PCIe driver.
On platforms such as the MIPS Boston board, writing to these fields results in incorrect values (e.g. base = 0x0, limit = 0x1600), which causes Linux to fail PCIe memory space assignment. As a result, Linux can boot successfully and probe the PCIe bus and all connected devices on platforms like the MIPS Boston board. Signed-off-by: Chao-ying Fu <c...@mips.com> Signed-off-by: Uros Stajic <uros.sta...@htecgroup.com> --- drivers/pci/pcie_xilinx.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/pci/pcie_xilinx.c b/drivers/pci/pcie_xilinx.c index 63058e8e7c5..4ef20474a0b 100644 --- a/drivers/pci/pcie_xilinx.c +++ b/drivers/pci/pcie_xilinx.c @@ -132,6 +132,15 @@ static int pcie_xilinx_write_config(struct udevice *bus, pci_dev_t bdf, uint offset, ulong value, enum pci_size_t size) { + if (bdf == PCI_BDF(bus->seq_, 0, 0)) { + switch (offset) { + case PCI_MEMORY_BASE: + case PCI_MEMORY_LIMIT: + /* Writing the memory base or limit causes problems */ + return 0; + } + } + return pci_generic_mmap_write_config(bus, pcie_xilinx_config_address, bdf, offset, value, size); } -- 2.34.1