]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
pci: mvebu: allow the enumeration of devices beyond physical bridges
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thu, 23 May 2013 14:32:52 +0000 (16:32 +0200)
committerJason Cooper <jason@lakedaemon.net>
Mon, 27 May 2013 16:01:15 +0000 (16:01 +0000)
commit197fc226d96623bf25237c480d46e9954b28a75e
treeeb55e6753e006ca0b5927f3dd366a509408b347c
parentf4ac99011e542d06ea2bda10063502583c6d7991
pci: mvebu: allow the enumeration of devices beyond physical bridges

Until now, the Marvell PCIe driver was only allowing the enumeration
of the devices in the secondary bus of the emulated PCI-to-PCI
bridge. This works fine when a PCIe device is directly connected into
a PCIe slot of the Marvell board.

However, when the device connected in the PCIe slot is a physical PCIe
bridge, beyond which a real PCIe device is connected, it no longer
worked, as the driver was preventing the Linux PCI core from seeing
such devices.

This commit fixes that by ensuring that configuration transactions on
subordinate busses are properly forwarded on the right PCIe interface.

Thanks to this patch, a PCIe card beyond a PCIe bridge, itself beyond
the emulated PCI-to-PCI bridge is properly detected, with the
following layout:

-[0000:00]-+-01.0-[01]----00.0
           +-09.0-[02-07]----00.0-[03-07]--+-01.0-[04]--
           |                               +-05.0-[05]--
           |                               +-07.0-[06]--
           |                               \-09.0-[07]----00.0
           \-0a.0-[08]----00.0

Where the PCIe interface that sits beyond the emulated PCI-to-PCI
bridge at 09.0 allows to access the secondary bus 02, on which there
is a PCIe bridge that allows to access the 3 to 7 busses, that are
subordinates to this bridge. And on one of this bus (bus 7), there is
one real PCIe device connected.

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