public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Thierry Reding <treding@nvidia.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] pci: tegra: Fix port information parsing
Date: Wed, 21 Jan 2015 09:24:48 +0100	[thread overview]
Message-ID: <20150121082447.GC26240@ulmo.nvidia.com> (raw)
In-Reply-To: <CAEUhbmUshVMQn1ohKGD1WnN3fonGUUsopAHaCHqwcu0sQy9bgA@mail.gmail.com>

On Wed, Jan 21, 2015 at 10:37:07AM +0800, Bin Meng wrote:
> Hi,
> 
> On Wed, Jan 21, 2015 at 3:05 AM, Simon Glass <sjg@chromium.org> wrote:
> > Hi Sjoerd,
> >
> > On 20 January 2015 at 10:06, Sjoerd Simons
> > <sjoerd.simons@collabora.co.uk> wrote:
> >> commit a62e84d7b1824a202dd incorrectly changed the tegra pci code to the
> >> new fdtdec pci helpers. To get the device index of the root port, the
> >> "reg" property should be parsed from the dtb (as was previously the
> >> case).
> >>
> >> With this patch i can successfully network boot my jetson tk1
> >>
> >> Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> >> ---
> >>  drivers/pci/pci_tegra.c | 5 ++---
> >>  1 file changed, 2 insertions(+), 3 deletions(-)
> >
> > Can you also please take a look at this patch?
> >
> > http://patchwork.ozlabs.org/patch/430815/
> >
> > It tries to support both options.
> 
> Although I still don't see how the Tegra's dts is written, I feel this
> patch is doing correctly.

It's in the U-Boot tree, look at arch/arm/dts/tegra124.dtsi for an
example.

> >> diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c
> >> index f9e05ad..67b5fdf 100644
> >> --- a/drivers/pci/pci_tegra.c
> >> +++ b/drivers/pci/pci_tegra.c
> >> @@ -459,7 +459,6 @@ static int tegra_pcie_parse_port_info(const void *fdt, int node,
> >>                                       unsigned int *lanes)
> >>  {
> >>         struct fdt_pci_addr addr;
> >> -       pci_dev_t bdf;
> >>         int err;
> >>
> >>         err = fdtdec_get_int(fdt, node, "nvidia,num-lanes", 0);
> >> @@ -470,13 +469,13 @@ static int tegra_pcie_parse_port_info(const void *fdt, int node,
> >>
> >>         *lanes = err;
> >>
> >> -       err = fdtdec_get_pci_bdf(fdt, node, &addr, &bdf);
> >> +       err = fdtdec_get_pci_addr(fdt, node, 0, "reg", &addr);
> 
> I suggest replace 0 to FDT_PCI_SPACE_CONFIG.

I do like how 0 actually transports the meaning of "don't care" here.
The reg property encodes only the BDF, whereas the configuration space
region for the root ports is encoded in the assigned-addresses property.

Looking at the fdtdec_get_pci_addr() implementation I notice that it
uses the type parameter to match on the type of region. Devices can have
more than one region of the same type. How is that supposed to work with
this function. Perhaps it's nothing we care about for the fdtdec API
since we don't access those regions anyway from FDT code?

> >>         if (err < 0) {
> >>                 error("failed to parse \"reg\" property");
> >>                 return err;
> >>         }
> >>
> >> -       *index = PCI_DEV(bdf) - 1;
> >> +       *index = PCI_DEV(addr.phys_hi) - 1;
> >>
> >>         return 0;
> >>  }
> 
> Based on this patch, I think Tegra's dts just uses "reg" to encode the
> device number into fdt_pci_addr.phys_hi. The bus number and function
> number are not there.

Both the bus and function numbers are 0. These reg properties describe
the root ports, which are single-function devices and always on bus 0 by
definition.

Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150121/77240639/attachment.pgp>

  reply	other threads:[~2015-01-21  8:24 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-20 17:06 [U-Boot] [PATCH] pci: tegra: Fix port information parsing Sjoerd Simons
2015-01-20 19:05 ` Simon Glass
2015-01-21  2:37   ` Bin Meng
2015-01-21  8:24     ` Thierry Reding [this message]
2015-01-21  9:15       ` Bin Meng
2015-01-21  9:40         ` Thierry Reding
2015-01-21 16:04           ` Bin Meng
2015-01-23 10:19             ` Thierry Reding
2015-01-23 16:49               ` Stephen Warren
2015-01-24  4:37                 ` Bin Meng
2015-01-24  6:35                   ` Stephen Warren
2015-01-24 13:24                     ` Simon Glass
2015-01-26 17:44                       ` Stephen Warren
2015-01-26 18:18                         ` Simon Glass
2015-01-24  4:19               ` Bin Meng
2015-01-30 12:24                 ` Thierry Reding
2015-01-30 16:29                   ` Simon Glass
2015-01-31 14:41                   ` Bin Meng
2015-01-21  9:19       ` Sjoerd Simons
2015-01-21  8:59   ` Thierry Reding
2015-01-21  9:50 ` Thierry Reding
2015-01-21 16:07   ` Bin Meng
2015-01-22 16:37     ` Simon Glass
2015-01-24  3:33       ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150121082447.GC26240@ulmo.nvidia.com \
    --to=treding@nvidia.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox