diff options
author | Dejin Zheng <zhengdejin5@gmail.com> | 2021-03-28 22:41:18 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-05-14 09:49:57 +0200 |
commit | cc178b77f8a3ba11ea19f600c65aeff1d1b16ab2 (patch) | |
tree | 0052115ef6abdcdafe561fa0ed74609b2da42a63 /drivers/pci | |
parent | 451a3e7570fc404a8a17b3dc9615ad6c79f3ebfc (diff) | |
download | kernel_replicant_linux-cc178b77f8a3ba11ea19f600c65aeff1d1b16ab2.tar.gz kernel_replicant_linux-cc178b77f8a3ba11ea19f600c65aeff1d1b16ab2.tar.bz2 kernel_replicant_linux-cc178b77f8a3ba11ea19f600c65aeff1d1b16ab2.zip |
PCI: xgene: Fix cfg resource mapping
commit d4707d79fae08c8996a1ba45965a491045a22dda upstream.
In commit e2dcd20b1645 a change was made to use
devm_platform_ioremap_resource_byname() to simplify code and remove
the res variable; this was wrong since the res variable is still needed
and as an outcome the port->cfg_addr gets an erroneous address.
Revert the change going back to original behaviour.
Link: https://lore.kernel.org/r/20210328144118.305074-1-zhengdejin5@gmail.com
Fixes: e2dcd20b1645a ("PCI: controller: Convert to devm_platform_ioremap_resource_byname()")
Reported-by: dann.frazier@canonical.com
Tested-by: dann frazier <dann.frazier@canonical.com>
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: stable@vger.kernel.org # v5.9+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/controller/pci-xgene.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/pci/controller/pci-xgene.c b/drivers/pci/controller/pci-xgene.c index 8e0db84f089d..c33b385ac918 100644 --- a/drivers/pci/controller/pci-xgene.c +++ b/drivers/pci/controller/pci-xgene.c @@ -355,7 +355,8 @@ static int xgene_pcie_map_reg(struct xgene_pcie_port *port, if (IS_ERR(port->csr_base)) return PTR_ERR(port->csr_base); - port->cfg_base = devm_platform_ioremap_resource_byname(pdev, "cfg"); + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cfg"); + port->cfg_base = devm_ioremap_resource(dev, res); if (IS_ERR(port->cfg_base)) return PTR_ERR(port->cfg_base); port->cfg_addr = res->start; |