fix: mvebu: pcie_dw: Allow probing empty PCIe slots
authorKonstantin Porotchkin <kostap@marvell.com>
Tue, 28 Mar 2017 15:36:34 +0000 (18:36 +0300)
committerStefan Roese <sr@denx.de>
Tue, 9 May 2017 11:38:17 +0000 (13:38 +0200)
This patch allows probing all PCIe nodes defined in DTS
even if there no device connected to such node (no link).
Without this fix the driver returns -ENODEV when the PCIe
link is down. As result the pci_init function stops
scanning bus on first empty PCIe slot and all devices
located in higher numbered buses are not discovered.

Signed-off-by: Konstantin Porotchkin <kostap@marvell.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Igal Liberman <igall@marvell.com>
Cc: Nadav Haklai <nadavh@marvell.com>
Reviewed-by: Stefan Roese <sr@denx.de>
drivers/pci/pcie_dw_mvebu.c

index d4776a9c81e693a9eafbdef045e7ddc8aa669a5e..05a06604e68e63a0932118291d97086c886d7c66 100644 (file)
@@ -487,13 +487,13 @@ static int pcie_dw_mvebu_probe(struct udevice *dev)
        /* Don't register host if link is down */
        if (!pcie_dw_mvebu_pcie_link_up(pcie->ctrl_base, LINK_SPEED_GEN_3)) {
                printf("PCIE-%d: Link down\n", dev->seq);
-               return -ENODEV;
+       } else {
+               printf("PCIE-%d: Link up (Gen%d-x%d, Bus%d)\n", dev->seq,
+                      pcie_dw_get_link_speed(pcie->ctrl_base),
+                      pcie_dw_get_link_width(pcie->ctrl_base),
+                      hose->first_busno);
        }
 
-       printf("PCIE-%d: Link up (Gen%d-x%d, Bus%d)\n", dev->seq,
-              pcie_dw_get_link_speed(pcie->ctrl_base),
-              pcie_dw_get_link_width(pcie->ctrl_base), hose->first_busno);
-
        pcie_dw_regions_setup(pcie);
 
        /* Set the CLASS_REV of RC CFG header to PCI_CLASS_BRIDGE_PCI */