CNS3xxx: Fix logical PCIe topology.
authorKrzysztof Hałasa <khalasa@piap.pl>
Tue, 16 Sep 2014 10:36:32 +0000 (12:36 +0200)
committerArnd Bergmann <arnd@arndb.de>
Thu, 25 Sep 2014 21:34:54 +0000 (23:34 +0200)
commitdefaa4d1dc97320ccc0ea83bc3851443b1c9083a
tree5287552f46160f10e45cedc700198a2899e656f0
parentb125170a39ea35fe5ef93c894940feb6cf08ebd3
CNS3xxx: Fix logical PCIe topology.

Without this patch, each root port and the device connected directly to it seem
to be located on a shared (virtual) bus #0. It creates problems with enabling
devices (the PCI code doesn't know that the root bridge must be enabled in order
to access other devices).
The PCIe topology shown by lspci doesn't reflect reality, e.g.:

0000:00:00.0 PCI bridge: Cavium Networks Device 3400
0000:00:01.0 PCI bridge: Texas Instruments XIO2001 PCI Express-to-PCI Bridge
0000:02:...
0001:00:00.0 PCI bridge: Cavium Networks Device 3400 (for the second lane/bus)

-+-[0001:00]---00.0-[01]--
 \-[0000:00]-+-00.0-[01]--
             | ^^^^ root bridge
             \-01.0-[02]----...
               ^^^^ first external device

With this patch, the first external PCIe device is connected to bus #1
(behind the root bridge).

-+-[0001:00]---00.0-[01]--
 \-[0000:00]---00.0-[01-02]----------00.0-[02]----...
               ^^^^ root bridge      ^^^^ first external device

Signed-off-by: Krzysztof Hałasa <khalasa@piap.pl>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/mach-cns3xxx/pcie.c