pci: tegra: Use PCI_CONF1_EXT_ADDRESS() macro
authorPali Rohár <pali@kernel.org>
Fri, 26 Nov 2021 10:42:46 +0000 (11:42 +0100)
committerTom Rini <trini@konsulko.com>
Wed, 12 Jan 2022 19:21:24 +0000 (14:21 -0500)
PCI tegra driver uses extended format of Config Address for PCI
Configuration Mechanism #1 but with cleared Enable bit.

So use new U-Boot macro PCI_CONF1_EXT_ADDRESS() with clearing
PCI_CONF1_ENABLE bit and remove old custom driver address function.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/pci/pci_tegra.c

index 9cb4414..fc05ee0 100644 (file)
@@ -275,13 +275,6 @@ static void rp_writel(struct tegra_pcie_port *port, unsigned long value,
        writel(value, port->regs.start + offset);
 }
 
-static unsigned long tegra_pcie_conf_offset(pci_dev_t bdf, int where)
-{
-       return ((where & 0xf00) << 16) | (PCI_BUS(bdf) << 16) |
-              (PCI_DEV(bdf) << 11) | (PCI_FUNC(bdf) << 8) |
-              (where & 0xfc);
-}
-
 static int tegra_pcie_conf_address(struct tegra_pcie *pcie, pci_dev_t bdf,
                                   int where, unsigned long *address)
 {
@@ -305,7 +298,9 @@ static int tegra_pcie_conf_address(struct tegra_pcie *pcie, pci_dev_t bdf,
                        return -EFAULT;
 #endif
 
-               *address = pcie->cs.start + tegra_pcie_conf_offset(bdf, where);
+               *address = pcie->cs.start +
+                          (PCI_CONF1_EXT_ADDRESS(PCI_BUS(bdf), PCI_DEV(bdf),
+                           PCI_FUNC(bdf), where) & ~PCI_CONF1_ENABLE);
                return 0;
        }
 }