linux/drivers/pci/dwc
Niklas Cassel b6900aeb19 PCI: dwc: Make cpu_addr_fixup take struct dw_pcie as argument
The current cpu addr fixup mask for ARTPEC-6, GENMASK(27, 0), is wrong.
The correct cpu addr fixup mask for ARTPEC-6 is GENMASK(28, 0).

However, having a hardcoded cpu addr fixup mask in each driver is
arguably wrong.
A device tree property called something like "cpu-addr-fixup-mask"
would have been a better solution.
Introducing such a property is not needed though, since we already have
pp->cfg0_base and ep->phys_base, which is derived from already existing
device tree properties.

It is also worth noting that for ARTPEC-7, hardcoding the cpu addr fixup
mask is not possible, since it uses a High Address Bits Look Up Table,
which means that it can, at runtime, map the PCIe window to an arbitrary
address in the 32-bit address space.

By using pp->cfg0_base and ep->phys_base, we avoid hardcoding a mask
in each driver. This should work for ARTPEC-6, DRA7xx, and ARTPEC-7.
I have not changed the code in DRA7xx though, since their existing
code works, but if they want, they could use the same logic as
artpec6_pcie_cpu_addr_fixup, and thus remove their hardcoded mask.

The reason why the fixup mask is needed is explained in commit f4c55c5a3f
("PCI: designware: Program ATU with untranslated address").

Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
2017-12-21 11:10:34 +00:00
..
Kconfig PCI: dwc: artpec6: Add support for endpoint mode 2017-12-21 11:10:33 +00:00
Makefile PCI: dwc: dra7xx: Refactor Kconfig and Makefile handling for host/ep mode 2017-12-21 11:10:18 +00:00
pci-dra7xx.c PCI: dwc: Make cpu_addr_fixup take struct dw_pcie as argument 2017-12-21 11:10:34 +00:00
pci-exynos.c Merge branch 'pci/host-exynos' into next 2017-09-07 13:23:56 -05:00
pci-imx6.c Merge branch 'pci/host-imx6' into next 2017-09-07 13:23:59 -05:00
pci-keystone-dw.c Merge branch 'pci/trivial' into next 2017-09-07 13:24:20 -05:00
pci-keystone.c Merge branch 'pci/host-keystone' into next 2017-09-07 13:24:01 -05:00
pci-keystone.h PCI: keystone: Use PCI_NUM_INTX 2017-08-16 13:39:31 -05:00
pci-layerscape.c PCI: layerscape: Change default error response behavior 2017-10-20 13:26:27 -05:00
pcie-armada8k.c Merge branch 'pci/host-designware' into next 2017-09-07 13:23:55 -05:00
pcie-artpec6.c PCI: dwc: Make cpu_addr_fixup take struct dw_pcie as argument 2017-12-21 11:10:34 +00:00
pcie-designware-ep.c PCI: designware-ep: Add generic function for raising MSI irq 2017-12-21 11:10:00 +00:00
pcie-designware-host.c PCI: dwc: Use the DMA-API to get the MSI address 2017-12-21 11:09:10 +00:00
pcie-designware-plat.c PCI: dwc: designware: Handle ->host_init() failures 2017-08-03 16:14:32 -05:00
pcie-designware.c PCI: dwc: Make cpu_addr_fixup take struct dw_pcie as argument 2017-12-21 11:10:34 +00:00
pcie-designware.h PCI: dwc: Make cpu_addr_fixup take struct dw_pcie as argument 2017-12-21 11:10:34 +00:00
pcie-hisi.c PCI: hisi: Constify dw_pcie_host_ops structure 2017-08-19 16:21:32 -05:00
pcie-histb.c PCI: hisi: Add HiSilicon STB SoC PCIe controller driver 2017-10-24 14:48:20 -05:00
pcie-kirin.c Merge branch 'pci/host-kirin' into next 2017-09-07 13:24:01 -05:00
pcie-qcom.c PCI: qcom: Add support for IPQ8074 PCIe controller 2017-08-24 11:11:23 -05:00
pcie-spear13xx.c Merge branch 'pci/host-spear13xx' into next 2017-09-07 13:24:07 -05:00