diff mbox

[U-Boot,2/3] fix: mvebu: pcie_dw: Allow probing empty PCIe slots

Message ID 1490715395-24751-3-git-send-email-kostap@marvell.com
State Accepted
Commit 3f75e0ce7badc7db03885f8b925a5f47cad29cac
Delegated to: Stefan Roese
Headers show

Commit Message

Kostya Porotchkin March 28, 2017, 3:36 p.m. UTC
From: Konstantin Porotchkin <kostap@marvell.com>

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>
---
 drivers/pci/pcie_dw_mvebu.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Stefan Roese March 30, 2017, 1:39 p.m. UTC | #1
On 28.03.2017 17:36, kostap@marvell.com wrote:
> From: Konstantin Porotchkin <kostap@marvell.com>
>
> 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>
> ---
>  drivers/pci/pcie_dw_mvebu.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/pci/pcie_dw_mvebu.c b/drivers/pci/pcie_dw_mvebu.c
> index d4776a9..05a0660 100644
> --- a/drivers/pci/pcie_dw_mvebu.c
> +++ b/drivers/pci/pcie_dw_mvebu.c
> @@ -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 */
>

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan
Stefan Roese May 9, 2017, 2:42 p.m. UTC | #2
On 28.03.2017 17:36, kostap@marvell.com wrote:
> From: Konstantin Porotchkin <kostap@marvell.com>
>
> 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>

Applied to u-boot-marvell/master.

Thanks,
Stefan
diff mbox

Patch

diff --git a/drivers/pci/pcie_dw_mvebu.c b/drivers/pci/pcie_dw_mvebu.c
index d4776a9..05a0660 100644
--- a/drivers/pci/pcie_dw_mvebu.c
+++ b/drivers/pci/pcie_dw_mvebu.c
@@ -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 */