linux/drivers/pci/host
Thomas Petazzoni e1373f319a PCI: mvebu: split PCIe BARs into multiple MBus windows when needed
commit 398f5d5e10 upstream.

MBus windows are used on Marvell platforms to map certain peripherals
in the physical address space. In the PCIe context, MBus windows are
needed to map PCIe I/O and memory regions in the physical address.

However, those MBus windows can only have power of two sizes, while
PCIe BAR do not necessarily guarantee this. For this reason, the
current pci-mvebu breaks on platforms where PCIe devices have BARs
that don't sum up to a power of two size at the emulated bridge level.

This commit fixes this by allowing the pci-mvebu driver to create
multiple contiguous MBus windows (each having a power of two size) to
cover a given PCIe BAR.

To achieve this, two functions are added: mvebu_pcie_add_windows() and
mvebu_pcie_del_windows() to respectively add and remove all the MBus
windows that are needed to map the provided PCIe region base and
size. The emulated PCI bridge code now calls those functions, instead
of directly calling the mvebu-mbus driver functions.

Fixes: 45361a4fe4 ('pci: PCIe driver for Marvell Armada 370/XP systems')
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Link: https://lkml.kernel.org/r/1397823593-1932-8-git-send-email-thomas.petazzoni@free-electrons.com
Tested-by: Neil Greatorex <neil@fatboyfat.co.uk>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2014-06-07 10:28:22 -07:00
..
Kconfig PCI changes for the v3.13 merge window: 2013-11-14 14:02:00 +09:00
Makefile Merge branch 'pci/host-rcar' into next 2013-10-31 13:58:49 -06:00
pci-exynos.c PCI: designware: Add dw_pcie prefix before cfg_read/write 2013-12-20 09:18:31 -07:00
pci-imx6.c PCI: imx6: Wait for retraining 2014-05-06 07:59:27 -07:00
pci-mvebu.c PCI: mvebu: split PCIe BARs into multiple MBus windows when needed 2014-06-07 10:28:22 -07:00
pci-rcar-gen2.c PCI: rcar: Add runtime PM support 2013-12-09 16:24:37 -07:00
pci-tegra.c ARM: SoC cleanups for 3.14 2014-01-23 18:36:55 -08:00
pcie-designware.c PCI: designware: Fix iATU programming for cfg1, io and mem viewport 2014-04-26 17:19:03 -07:00
pcie-designware.h PCI: designware: Add dw_pcie prefix before cfg_read/write 2013-12-20 09:18:31 -07:00