From: Thierry Reding <thierry.reding@kernel.org>
To: Rob Herring <robh@kernel.org>
Cc: "Bjorn Helgaas" <bhelgaas@google.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Jon Hunter" <jonathanh@nvidia.com>,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-tegra@vger.kernel.org
Subject: Re: [PATCH 3/5] dt-bindings: pci: Document the NVIDIA Tegra264 PCIe controller
Date: Fri, 20 Mar 2026 14:48:34 +0100 [thread overview]
Message-ID: <ab1Ik3HbOQsDsG-K@orome> (raw)
In-Reply-To: <CAL_JsqJuoOiBGKW=H=u9AQ=XgY+-iXS+UP7iEw5z6p57Yk_AVw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 6001 bytes --]
On Fri, Mar 20, 2026 at 08:06:26AM -0500, Rob Herring wrote:
> On Fri, Mar 20, 2026 at 4:39 AM Thierry Reding
> <thierry.reding@kernel.org> wrote:
> >
> > On Thu, Mar 19, 2026 at 04:26:31PM -0500, Rob Herring wrote:
> > > On Thu, Mar 19, 2026 at 11:01 AM Thierry Reding
> > > <thierry.reding@kernel.org> wrote:
> > > >
> > > > From: Thierry Reding <treding@nvidia.com>
> > > >
> > > > The six PCIe controllers found on Tegra264 are of two types: one is used
> > > > for the internal GPU and therefore is not connected to a UPHY and the
> > > > remaining five controllers are typically routed to a PCI slot and have
> > > > additional controls for the physical link.
> > > >
> > > > While these controllers can be switched into endpoint mode, this binding
> > > > describes the root complex mode only.
> > > >
> > > > Signed-off-by: Thierry Reding <treding@nvidia.com>
> > > > ---
> > > > .../bindings/pci/nvidia,tegra264-pcie.yaml | 92 +++++++++++++++++++
> > > > 1 file changed, 92 insertions(+)
> > > > create mode 100644 Documentation/devicetree/bindings/pci/nvidia,tegra264-pcie.yaml
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra264-pcie.yaml b/Documentation/devicetree/bindings/pci/nvidia,tegra264-pcie.yaml
> > > > new file mode 100644
> > > > index 000000000000..56d69de2788b
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/pci/nvidia,tegra264-pcie.yaml
> > > > @@ -0,0 +1,92 @@
> > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > +%YAML 1.2
> > > > +---
> > > > +$id: http://devicetree.org/schemas/pci/nvidia,tegra264-pcie.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > +
> > > > +title: NVIDIA Tegra264 PCIe controller
> > > > +
> > > > +maintainers:
> > > > + - Thierry Reding <thierry.reding@gmail.com>
> > > > + - Jon Hunter <jonathanh@nvidia.com>
> > > > +
> > > > +properties:
> > > > + compatible:
> > > > + const: nvidia,tegra264-pcie
> > > > +
> > > > + reg:
> > > > + minItems: 4
> > > > + maxItems: 5
> > > > +
> > > > + reg-names:
> > > > + minItems: 4
> > > > + maxItems: 5
> > > > +
> > > > + interrupts:
> > > > + minItems: 1
> > > > + maxItems: 4
> > > > +
> > > > + dma-coherent: true
> > > > +
> > > > + nvidia,bpmp:
> > > > + $ref: /schemas/types.yaml#/definitions/phandle-array
> > > > + description: |
> > > > + Must contain a pair of phandle (to the BPMP controller node) and
> > > > + controller ID. The following are the controller IDs for each controller:
> > > > +
> > > > + 0: C0
> > > > + 1: C1
> > > > + 2: C2
> > > > + 3: C3
> > > > + 4: C4
> > > > + 5: C5
> > > > + items:
> > > > + - items:
> > > > + - description: phandle to the BPMP controller node
> > > > + - description: PCIe controller ID
> > > > + maximum: 5
> > > > +
> > > > +unevaluatedProperties: false
> > > > +
> > > > +required:
> > > > + - interrupt-map
> > > > + - interrupt-map-mask
> > > > + - iommu-map
> > > > + - msi-map
> > > > + - nvidia,bpmp
> > > > +
> > > > +allOf:
> > > > + - $ref: /schemas/pci/pci-host-bridge.yaml#
> > > > + - oneOf:
> > > > + - description: C0 controller (no UPHY)
> > > > + properties:
> > > > + reg:
> > > > + items:
> > > > + - description: application layer registers
> > > > + - description: transaction layer registers
> > > > + - description: privileged transaction layer registers
> > > > + - description: ECAM-compatible configuration space
> > > > +
> > > > + reg-names:
> > > > + items:
> > > > + - const: xal
> > > > + - const: xtl
> > > > + - const: xtl-pri
> > > > + - const: ecam
> > > > +
> > > > + - description: C1-C5 controllers (with UPHY)
> > > > + properties:
> > > > + reg:
> > > > + items:
> > > > + - description: application layer registers
> > > > + - description: transaction layer registers
> > > > + - description: privileged transaction layer registers
> > > > + - description: data link/physical layer registers
> > > > + - description: ECAM-compatible configuration space
> > > > +
> > > > + items:
> > > > + - const: xal
> > > > + - const: xtl
> > > > + - const: xtl-pri
> > > > + - const: xpl
> > >
> > > Put this entry last since it is the optional one. Then you can move
> > > all of this to the top-level and get rid of the duplication.
> >
> > I understand this concern and was actually on the fence about this
> > myself. The reason why I ultimately went with this variant is for two
> > reasons:
> >
> > 1. XPL does not exist for controller 0, the variant above makes that
> > very explicit. It explicitly documents that controller 0 is used
> > for internal purposes and cannot be connected to an external port
> > like the other five controllers.
>
> That doesn't really matter to the schema because it can never check
> that unless you have 2 different compatibles (and you shouldn't).
I know that, the documentation would be more for developers/users rather
than the validation tools.
> > 2. The ECAM region is part of a memory region specifically reserved
> > for configuration space, whereas all of the other regions are
> > from the controller's MMIO region. I find the DT hard to read if
> > the two are interleaved.
>
> I was also going to suggest putting ECAM first just to align with the
> generic host binding. That would make it slightly easier to rewrite
> the node if you decided to make it a firmware initialized controller.
Huh... I hadn't considered that. I think that would be a compromise that
I can very well live with.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2026-03-20 13:48 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-19 16:01 [PATCH 0/5] PCI: tegra: Add Tegra264 support Thierry Reding
2026-03-19 16:01 ` [PATCH 1/5] soc/tegra: Update BPMP ABI header Thierry Reding
2026-03-19 16:15 ` Krzysztof Kozlowski
2026-03-20 9:34 ` Thierry Reding
2026-03-20 9:44 ` Krzysztof Kozlowski
2026-03-20 9:49 ` Krzysztof Kozlowski
2026-03-20 10:52 ` Thierry Reding
2026-03-20 12:46 ` Krzysztof Kozlowski
2026-03-19 16:01 ` [PATCH 2/5] firmware: tegra: bpmp: Add tegra_bpmp_get_with_id() function Thierry Reding
2026-03-19 16:01 ` [PATCH 3/5] dt-bindings: pci: Document the NVIDIA Tegra264 PCIe controller Thierry Reding
2026-03-19 16:11 ` Krzysztof Kozlowski
2026-03-20 10:56 ` Thierry Reding
2026-03-19 17:53 ` Rob Herring (Arm)
2026-03-19 21:26 ` Rob Herring
2026-03-20 9:39 ` Thierry Reding
2026-03-20 13:06 ` Rob Herring
2026-03-20 13:48 ` Thierry Reding [this message]
2026-03-20 15:58 ` Rob Herring
2026-03-19 16:01 ` [PATCH 4/5] PCI: tegra: Add Tegra264 support Thierry Reding
2026-03-19 16:14 ` Krzysztof Kozlowski
2026-03-20 10:39 ` Thierry Reding
2026-03-19 17:46 ` Bjorn Helgaas
2026-03-20 10:34 ` Thierry Reding
2026-03-20 14:27 ` Bjorn Helgaas
2026-03-19 16:01 ` [PATCH 5/5] arm64: tegra: Add PCI controllers on Tegra264 Thierry Reding
-- strict thread matches above, loose matches on Subject: below --
2026-03-20 6:14 [PATCH 3/5] dt-bindings: pci: Document the NVIDIA Tegra264 PCIe controller kernel test robot
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=ab1Ik3HbOQsDsG-K@orome \
--to=thierry.reding@kernel.org \
--cc=bhelgaas@google.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jonathanh@nvidia.com \
--cc=krzk+dt@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=robh@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.