diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2019-01-13 22:17:07 -0800 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-01-16 08:36:18 +0100 |
commit | 05509cd36275c3bedb2218130e24f8ccf5d0cf7c (patch) | |
tree | 7e4365e52f0921a85c574ca350a7c4e08d2d57a4 | |
parent | 1b8b46b1762c5217025f6da489f6d77d79bd3995 (diff) | |
download | barebox-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.c | 6 | ||||
-rw-r--r-- | drivers/pci/pci_iomap.c | 6 | ||||
-rw-r--r-- | drivers/pci/pcie-designware-host.c | 6 |
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) |