diff options
author | Pali Rohár <pali@kernel.org> | 2021-11-26 11:42:46 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-01-12 14:21:24 -0500 |
commit | 86be29e9d985b57e03e2eede6394e0c1edc6660a (patch) | |
tree | 29460a4f642e849852a22260f9f14236ae15b8db /drivers/pci | |
parent | d0dd49f92937f7aa76231908aafbf21f55dc5376 (diff) | |
download | u-boot-86be29e9d985b57e03e2eede6394e0c1edc6660a.tar.gz u-boot-86be29e9d985b57e03e2eede6394e0c1edc6660a.tar.bz2 u-boot-86be29e9d985b57e03e2eede6394e0c1edc6660a.zip |
pci: tegra: Use PCI_CONF1_EXT_ADDRESS() macro
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>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/pci_tegra.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c index 9cb4414836..fc05ee00f1 100644 --- a/drivers/pci/pci_tegra.c +++ b/drivers/pci/pci_tegra.c @@ -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; } } |