]> Pileus Git - ~andy/linux/commit
pci: mvebu: no longer fake the slot location of downstream devices
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thu, 23 May 2013 14:32:51 +0000 (16:32 +0200)
committerJason Cooper <jason@lakedaemon.net>
Mon, 27 May 2013 16:01:15 +0000 (16:01 +0000)
commitf4ac99011e542d06ea2bda10063502583c6d7991
treeb7e12a67f535d708bcf0ca56a07d7c017689e79c
parent3d9939c92efdd4ced672b94994959ca71b141cb8
pci: mvebu: no longer fake the slot location of downstream devices

By default, the Marvell hardware, for each PCIe interface, exhibits
the following devices:

 * On slot 0, a "Marvell Memory controller", identical on all PCIe
   interfaces, and which isn't useful when the Marvell SoC is the PCIe
   root complex (i.e, the normal case when we run Linux on the Marvell
   SoC).

 * On slot 1, the real PCIe card connected into the PCIe slot of the
   board.

So, what the Marvell PCIe driver was doing in its PCI-to-PCI bridge
emulation is that when the Linux PCI core was trying to access the
device in slot 0, we were in fact forwarding the configuration
transaction to the device in slot 1. For all other slots, we were
telling the Linux PCI core that there was no device connected.

However, new versions of bootloaders from Marvell change the default
PCIe configuration, and make the real device appear in slot 0, and the
"Marvell Memory controller" in slot 1.

Therefore, this commit modifies the Marvell PCIe driver to adjust the
PCIe hardware configuration to make sure that this behavior (real
device in slot 0, "Marvell Memory controller" in slot 1) is the one
we'll see regardless of what the bootloader has done. It allows to
remove the little hack that was forwarding configuration transactions
on slot 0 to slot 1, which is nice.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
drivers/pci/host/pci-mvebu.c