]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
arm: a37xx: pci: Do not allow setting bars on PCI Bridge
authorPali Rohár <pali@kernel.org>
Tue, 12 Oct 2021 11:19:19 +0000 (13:19 +0200)
committerStefan Roese <sr@denx.de>
Thu, 21 Oct 2021 05:39:05 +0000 (07:39 +0200)
PCI Bridge which represents Aardvark PCIe Root Port does not have
configurable bars.

So ensure that write operation to bars registers on PCI Bridge is noop and
bars registers always contain zero address which indicates that bars are
unsupported.

After this change U-Boot 'pci bar 0.0.0' command does not show any
allocated bars for PCI Bridge device.

Signed-off-by: Pali Rohár <pali@kernel.org>
Fixes: cb056005dc67 ("arm: a37xx: pci: Add support for accessing PCI Bridge on root bus")
Reviewed-by: Stefan Roese <sr@denx.de>
drivers/pci/pci-aardvark.c

index 38eff495ab1cf00881130dc2b02f8d6707eeaa67..ade5ab056f84d983bee63ef71fab9d5ed90401cd 100644 (file)
@@ -581,6 +581,10 @@ static int pcie_advk_write_config(struct udevice *bus, pci_dev_t bdf,
                if (offset >= 0x10 && offset < 0x34) {
                        data = pcie->cfgcache[(offset - 0x10) / 4];
                        data = pci_conv_size_to_32(data, value, offset, size);
+                       /* This PCI bridge does not have configurable bars */
+                       if ((offset & ~3) == PCI_BASE_ADDRESS_0 ||
+                           (offset & ~3) == PCI_BASE_ADDRESS_1)
+                               data = 0x0;
                        pcie->cfgcache[(offset - 0x10) / 4] = data;
                } else if ((offset & ~3) == PCI_ROM_ADDRESS1) {
                        data = advk_readl(pcie, PCIE_CORE_EXP_ROM_BAR_REG);