summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2019-01-13 22:17:07 -0800
committerSascha Hauer <s.hauer@pengutronix.de>2019-01-16 08:36:18 +0100
commit05509cd36275c3bedb2218130e24f8ccf5d0cf7c (patch)
tree7e4365e52f0921a85c574ca350a7c4e08d2d57a4
parent1b8b46b1762c5217025f6da489f6d77d79bd3995 (diff)
downloadbarebox-05509cd36275c3bedb2218130e24f8ccf5d0cf7c.tar.gz
barebox-05509cd36275c3bedb2218130e24f8ccf5d0cf7c.tar.xz
PCI: Assume 1:1 mapping if .res_start callback is NULL
Save a bit of no-op boilerplate by converting pci_iomap() to treat absense of .res_start callback as an indicator that 1:1 mapping is being used. Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/pci/pci-tegra.c6
-rw-r--r--drivers/pci/pci_iomap.c6
-rw-r--r--drivers/pci/pcie-designware-host.c6
3 files changed, 5 insertions, 13 deletions
diff --git a/drivers/pci/pci-tegra.c b/drivers/pci/pci-tegra.c
index b6ccf8e5b5..7c9dd80c00 100644
--- a/drivers/pci/pci-tegra.c
+++ b/drivers/pci/pci-tegra.c
@@ -366,15 +366,9 @@ static int tegra_pcie_write_conf(struct pci_bus *bus, unsigned int devfn,
return PCIBIOS_SUCCESSFUL;
}
-static int tegra_pcie_res_start(struct pci_bus *bus, resource_size_t res_addr)
-{
- return res_addr;
-}
-
static struct pci_ops tegra_pcie_ops = {
.read = tegra_pcie_read_conf,
.write = tegra_pcie_write_conf,
- .res_start = tegra_pcie_res_start,
};
static unsigned long tegra_pcie_port_get_pex_ctrl(struct tegra_pcie_port *port)
diff --git a/drivers/pci/pci_iomap.c b/drivers/pci/pci_iomap.c
index 2c58c0c0f9..2f06e60e38 100644
--- a/drivers/pci/pci_iomap.c
+++ b/drivers/pci/pci_iomap.c
@@ -3,6 +3,7 @@
*
* (C) Copyright 2004 Linus Torvalds
*/
+#include <common.h>
#include <linux/pci.h>
#include <io.h>
@@ -24,6 +25,9 @@ void __iomem *pci_iomap(struct pci_dev *dev, int bar)
struct pci_bus *bus = dev->bus;
resource_size_t start = pci_resource_start(dev, bar);
- return (void *)bus->host->pci_ops->res_start(bus, start);
+ if (bus->host->pci_ops->res_start)
+ start = bus->host->pci_ops->res_start(bus, start);
+
+ return IOMEM(start);
}
EXPORT_SYMBOL(pci_iomap);
diff --git a/drivers/pci/pcie-designware-host.c b/drivers/pci/pcie-designware-host.c
index 6cc4b93a31..af37a502d8 100644
--- a/drivers/pci/pcie-designware-host.c
+++ b/drivers/pci/pcie-designware-host.c
@@ -335,15 +335,9 @@ static int dw_pcie_wr_conf(struct pci_bus *bus, u32 devfn,
return ret;
}
-static int dw_pcie_res_start(struct pci_bus *bus, resource_size_t res_addr)
-{
- return res_addr;
-}
-
static struct pci_ops dw_pcie_ops = {
.read = dw_pcie_rd_conf,
.write = dw_pcie_wr_conf,
- .res_start = dw_pcie_res_start,
};
static u8 dw_pcie_iatu_unroll_enabled(struct dw_pcie *pci)