Re: [PATCH 1/2] dt-bindings: pci: tegra: Update for per-lane PHYs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Thu, Apr 14, 2016 at 05:29:05PM +0200, Thierry Reding wrote:
> On Wed, Apr 13, 2016 at 11:04:56AM -0600, Stephen Warren wrote:
> > On 04/13/2016 10:22 AM, Thierry Reding wrote:
> > > On Wed, Mar 16, 2016 at 10:51:58AM -0600, Stephen Warren wrote:
> > > > On 03/08/2016 08:48 AM, Thierry Reding wrote:
> > > > > From: Thierry Reding <treding@xxxxxxxxxx>
> > > > > 
> > > > > Changes to the pad controller device tree binding have required that
> > > > > each lane be associated with a separate PHY.
> > > > 
> > > > I still don't think this has anything to do with DT bindings. Rather, the
> > > > definition of a PHY (in HW and the Linux PHY subsystem) is a single lane.
> > > > That fact then requires drivers to support a PHY per lane rather than a
> > > > single multi-lane PHY, and equally means the DT bindings must be written
> > > > according to the correct definition of a PHY.
> > > > 
> > > > Still, I suppose the commit description is fine as is.
> > > 
> > > I've reworded the commit message to give a more accurate rationale for
> > > the change. I'll be posting a v5 soon.
> > > 
> > > > > Update the PCI host bridge
> > > > > device tree binding to allow each root port to define the list of PHYs
> > > > > required to drive the lanes associated with it.
> > > > 
> > > > > diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
> > > > 
> > > > > +Required properties for Tegra124 and later:
> > > > > +- phys: Must contain an phandle to a PHY for each entry in phy-names.
> > > > > +- phy-names: Must include an entry for each active lane. Note that the number
> > > > > +  of entries does not have to (though usually will) be equal to the specified
> > > > > +  number of lanes in the nvidia,num-lanes property. Entries are of the form
> > > > > +  "pcie-N": where N ranges from 0 to the value specified in nvidia,num-lanes.
> > > > 
> > > > When would the number of PHYs not equal the number of lanes? I thought the
> > > > whole point of this patch was to switch to per-lane PHYs? Perhaps I'm just
> > > > misremembering some exception, so there may be no need to change this.
> > > 
> > > This is useful to support the case where we want to connect a x1 or x2
> > > device to a root port that is configured to drive more lanes. It's a
> > > rather unusual configuration, but it would be possible for example to
> > > have an onboard x1 ethernet card, but the board layout is such that it
> > > runs in x1/x2 mode, with the ethernet card connected to the x2 port.
> > 
> > Does the controller HW actually work correctly in such a mode?
> 
> I think it does, and up until a few minutes ago I was even sure that I
> had tested it once. But looking at the various boards that I have I
> don't think I actually have test equipment that's wired the proper way
> to test this.
> 
> > Obviously a fully initialized x4 controller has to correctly handle being
> > attached solely to a x1 device. However, that's a different case to simply
> > not initializing 3 of the 4 PHYs. It's plausible the controller handles this
> > just fine, or that it hangs up or otherwise misbehaves if some of the PHYs
> > aren't enabled and hence it can't even detect whether something is attached
> > to them or not. Either way, adding your explanation into the binding would
> > be useful to highlight the reason for the special case.
> 
> Perhaps for now it would be better to make the binding stricter. The
> wording could be relaxed if we ever determine that it still works
> correctly with a number of PHYs smaller than the number of lanes.

Going over the patches again I realized that Jetson TK1 is actually one
such case. The PCI host bridge controller is configured to run root port
0 using two lanes, and root port 1 using one lane. However, only one
lane is connected to each port. Root port 0 goes to the miniPCIe slot,
which takes a single lane (PEX4), while root port 1 goes to the onboard
NIC, which takes a single lane (PEX2) as well. x1 + x1 is an unsupported
configuration for the root complex, though, hence why it is configured
to be x2 + x1.

I've tested that both the onboard NIC as well as a miniPCIe card work
correctly with the setup.

So I think the wording in the binding, as well as the example, are
correct. So I left the original wording in place, but instead added a
couple more examples so that we have one per SoC generation, which will
hopefully clarify what properties should and shouldn't be used.

Thierry

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux