linux/drivers/pci/controller
Srinath Mannam ea2df11f72 PCI: iproc: Allow outbound configuration for 32-bit I/O region
The IProc host controller has I/O memory windows allocated in
the AXI memory map that can be used to address PCI I/O memory
space.

Mapping from AXI memory windows to PCI outbound memory windows is
carried out in the host controller through OARR/OMAP registers pairs
that permit to define power of two region size AXI<->PCI mappings, the
smallest of which is 128MB.

Current code enables AXI memory window to PCI outbound memory window
mapping only for AXI windows matching one of the OARR/OMAP window sizes,
that are SoC dependent and the smallest of which is 128MB.

Some SoCs implementing the IProc host controller have a 32-bit AXI
memory window into PCI I/O memory space, eg:

    Base address | Size
-----------------------------
(1) 0x42000000   | 0x2000000
(2) 0x400000000  | 0x80000000

but its size (32MB - (1) above) is smaller than the smallest AXI<->PCI
region size provided by OARR (128MB), so the current driver rejects
mappings for the 32-bit region making the IProc host controller driver
unusable on 32-bit systems.

However, there is no reason why the 32-bit I/O memory window cannot be
enabled by mapping it through an OARR/OMAP region bigger in size (ie
32-bit AXI window size is 32MB but can be mapped using a 128MB OARR/OMAP
region).

Allow outbound window configuration of I/O memory windows that
are smaller in size than the host controller OARR/OMAP region, so
that the 32-bit AXI memory window can actually be enabled,
making the IProc host controller operational on 32-bit systems.

Link: https://lore.kernel.org/linux-pci/1551415936-30174-3-git-send-email-srinath.mannam@broadcom.com/
Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
Signed-off-by: Abhishek Shah <abhishek.shah@broadcom.com>
Signed-off-by: Ray Jui <ray.jui@broadcom.com>
[lorenzo.pieralisi@arm.com: rewrote the commit log]
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Scott Branden <scott.branden@broadcom.com>
2019-04-03 11:56:46 +01:00
..
dwc pci-v5.1-changes 2019-03-09 14:57:08 -08:00
Kconfig PCI: altera: Enable driver on ARM64 2019-03-04 12:22:19 +00:00
Makefile PCI: mobiveil: Add Kconfig/Makefile entries 2018-07-30 14:30:16 +01:00
pci-aardvark.c PCI: aardvark: Make symbol 'advk_pci_bridge_emul_ops' static 2019-03-01 15:23:06 +00:00
pci-ftpci100.c PCI: faraday: Fix I/O space page leak 2018-07-18 17:01:14 -05:00
pci-host-common.c PCI: Remove unnecessary check of device_type == pci 2018-09-25 09:40:03 +01:00
pci-host-generic.c
pci-hyperv.c PCI: hv: Refactor hv_irq_unmask() to use cpumask_to_vpset() 2019-03-01 11:45:46 +00:00
pci-mvebu.c PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags 2019-02-22 10:51:14 +00:00
pci-rcar-gen2.c
pci-tegra.c
pci-thunder-ecam.c
pci-thunder-pem.c
pci-v3-semi.c PCI: v3-semi: Fix I/O space page leak 2018-07-18 17:02:13 -05:00
pci-versatile.c PCI: versatile: Fix I/O space page leak 2018-07-18 17:00:11 -05:00
pci-xgene-msi.c
pci-xgene.c PCI: xgene: Fix I/O space page leak 2018-07-18 16:59:40 -05:00
pcie-altera-msi.c
pcie-altera.c PCI: altera: Add Stratix 10 PCIe support 2019-03-04 12:22:03 +00:00
pcie-cadence-ep.c PCI: cadence: Remove pci_epf_linkup() from Cadence EP driver 2019-02-15 10:02:38 +00:00
pcie-cadence-host.c PCI: Remove unnecessary check of device_type == pci 2018-09-25 09:40:03 +01:00
pcie-cadence.c pci-v4.20-changes 2018-10-25 06:50:48 -07:00
pcie-cadence.h PCI: cadence: Add Power Management ops for host and EP 2018-07-12 12:44:14 +01:00
pcie-iproc-bcma.c
pcie-iproc-msi.c cross-tree: phase out dma_zalloc_coherent() 2019-01-08 07:58:37 -05:00
pcie-iproc-platform.c
pcie-iproc.c PCI: iproc: Allow outbound configuration for 32-bit I/O region 2019-04-03 11:56:46 +01:00
pcie-iproc.h PCI: iproc: Reject unconfigured physical functions from PAXC 2018-07-13 11:56:55 +01:00
pcie-mediatek.c PCI: mediatek: Enlarge PCIe2AHB window size to support 4GB DRAM 2019-03-01 11:22:21 +00:00
pcie-mobiveil.c PCI: Remove unnecessary check of device_type == pci 2018-09-25 09:40:03 +01:00
pcie-rcar.c PCI: rcar: Clean up PHY init on failure 2018-06-29 13:48:54 -05:00
pcie-rockchip-ep.c PCI: rockchip: Remove pci_epf_linkup() from Rockchip EP driver 2019-02-15 10:02:50 +00:00
pcie-rockchip-host.c
pcie-rockchip.c
pcie-rockchip.h
pcie-tango.c
pcie-xilinx-nwl.c PCI: Remove unnecessary check of device_type == pci 2018-09-25 09:40:03 +01:00
pcie-xilinx.c PCI: Remove unnecessary check of device_type == pci 2018-09-25 09:40:03 +01:00
vmd.c PCI/VMD: Configure MPS settings before adding devices 2019-01-30 11:00:04 +00:00