diff mbox series

[v2,3/3] PCI: iproc: Display PCIe Link information

Message ID 20200915134541.14711-4-srinath.mannam@broadcom.com (mailing list archive)
State Superseded, archived
Headers show
Series PCI: iproc: Add fixes to pcie iproc | expand

Commit Message

Srinath Mannam Sept. 15, 2020, 1:45 p.m. UTC
After successful linkup more comprehensive information about PCIe link
speed and link width will be displayed to the console.

Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
---
 drivers/pci/controller/pcie-iproc.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Rob Herring (Arm) Sept. 17, 2020, 1:52 a.m. UTC | #1
On Tue, Sep 15, 2020 at 07:15:41PM +0530, Srinath Mannam wrote:
> After successful linkup more comprehensive information about PCIe link
> speed and link width will be displayed to the console.
> 
> Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
> ---
>  drivers/pci/controller/pcie-iproc.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
> index cc5b7823edeb..8ef2d1fe392c 100644
> --- a/drivers/pci/controller/pcie-iproc.c
> +++ b/drivers/pci/controller/pcie-iproc.c
> @@ -1479,6 +1479,7 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
>  {
>  	struct device *dev;
>  	int ret;
> +	struct pci_dev *pdev;
>  	struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
>  
>  	dev = pcie->dev;
> @@ -1542,6 +1543,11 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
>  		goto err_power_off_phy;
>  	}
>  
> +	for_each_pci_bridge(pdev, host->bus) {
> +		if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT)
> +			pcie_print_link_status(pdev);
> +	}

If this information is useful for 1 host implementation, why not all of 
them and put this in a common spot.

Rob
Srinath Mannam Sept. 17, 2020, 3:12 a.m. UTC | #2
On Thu, Sep 17, 2020 at 7:22 AM Rob Herring <robh@kernel.org> wrote:
>
Hi Rob,
Thanks for review.
> On Tue, Sep 15, 2020 at 07:15:41PM +0530, Srinath Mannam wrote:
> > After successful linkup more comprehensive information about PCIe link
> > speed and link width will be displayed to the console.
> >
> > Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
> > ---
> >  drivers/pci/controller/pcie-iproc.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
> > index cc5b7823edeb..8ef2d1fe392c 100644
> > --- a/drivers/pci/controller/pcie-iproc.c
> > +++ b/drivers/pci/controller/pcie-iproc.c
> > @@ -1479,6 +1479,7 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
> >  {
> >       struct device *dev;
> >       int ret;
> > +     struct pci_dev *pdev;
> >       struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
> >
> >       dev = pcie->dev;
> > @@ -1542,6 +1543,11 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
> >               goto err_power_off_phy;
> >       }
> >
> > +     for_each_pci_bridge(pdev, host->bus) {
> > +             if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT)
> > +                     pcie_print_link_status(pdev);
> > +     }
>
> If this information is useful for 1 host implementation, why not all of
> them and put this in a common spot.
In common, pcie_print_link_status() is called during pci device caps
initialization, if the available link bandwidth is less than capabilities
of devices. Few EP drivers also used this function to print link
bandwidth info. This host can be configured for different link
speeds and link widths on different platforms so we thought
displaying link bandwidth after successful linkup is helpful to
know link details.

Thanks & Regards,
Srinath.
>
> Rob
diff mbox series

Patch

diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
index cc5b7823edeb..8ef2d1fe392c 100644
--- a/drivers/pci/controller/pcie-iproc.c
+++ b/drivers/pci/controller/pcie-iproc.c
@@ -1479,6 +1479,7 @@  int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
 {
 	struct device *dev;
 	int ret;
+	struct pci_dev *pdev;
 	struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
 
 	dev = pcie->dev;
@@ -1542,6 +1543,11 @@  int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
 		goto err_power_off_phy;
 	}
 
+	for_each_pci_bridge(pdev, host->bus) {
+		if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT)
+			pcie_print_link_status(pdev);
+	}
+
 	return 0;
 
 err_power_off_phy: