Documentation / devicetree / bindings / pci / nvidia,tegra264-pcie.yaml


Based on kernel version 7.2. Page generated on 2026-08-20 08:41 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
# 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:
    description: |
      Of the six PCIe controllers found on Tegra264, one (C0) is used for the
      internal GPU and the other five (C1-C5) are routed to connectors such as
      PCI or M.2 slots. Therefore the UPHY registers (XPL) exist only for C1
      through C5, but not for C0.
    minItems: 4
    items:
      - description: ECAM-compatible configuration space
      - description: application layer registers
      - description: transaction layer registers
      - description: privileged transaction layer registers
      - description: data link/physical layer registers (not available on C0)

  reg-names:
    minItems: 4
    items:
      - const: ecam
      - const: xal
      - const: xtl
      - const: xtl-pri
      - const: xpl

  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

required:
  - interrupt-map
  - interrupt-map-mask
  - iommu-map
  - msi-map
  - nvidia,bpmp

allOf:
  - $ref: /schemas/pci/pci-host-bridge.yaml#

unevaluatedProperties: false

examples:
  - |
    bus {
      #address-cells = <2>;
      #size-cells = <2>;
 
      pci@c000000 {
        compatible = "nvidia,tegra264-pcie";
        reg = <0xd0 0xb0000000 0x0 0x10000000>,
              <0x00 0x0c000000 0x0 0x00004000>,
              <0x00 0x0c004000 0x0 0x00001000>,
              <0x00 0x0c005000 0x0 0x00001000>;
        reg-names = "ecam", "xal", "xtl", "xtl-pri";
        #address-cells = <3>;
        #size-cells = <2>;
        device_type = "pci";
        linux,pci-domain = <0x00>;
        #interrupt-cells = <0x1>;
 
        interrupt-map-mask = <0x0 0x0 0x0 0x7>;
        interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0x0 0x0 155 4>,
                        <0x0 0x0 0x0 0x2 &gic 0x0 0x0 0x0 156 4>,
                        <0x0 0x0 0x0 0x3 &gic 0x0 0x0 0x0 157 4>,
                        <0x0 0x0 0x0 0x4 &gic 0x0 0x0 0x0 158 4>;
 
        iommu-map = <0x0 &smmu2 0x10000 0x10000>;
        msi-map = <0x0 &its 0x210000 0x10000>;
        dma-coherent;
 
        ranges = <0x81000000 0x00 0x84000000 0xd0 0x84000000 0x00 0x00200000>,
                 <0x82000000 0x00 0x20000000 0x00 0x20000000 0x00 0x08000000>,
                 <0xc3000000 0xd0 0xc0000000 0xd0 0xc0000000 0x07 0xc0000000>;
        bus-range = <0x0 0xff>;
 
        nvidia,bpmp = <&bpmp 0>;
      };
    };

  - |
    bus {
      #address-cells = <2>;
      #size-cells = <2>;
 
      pci@8400000 {
        compatible = "nvidia,tegra264-pcie";
        reg = <0xa8 0xb0000000 0x0 0x10000000>,
              <0x00 0x08400000 0x0 0x00004000>,
              <0x00 0x08404000 0x0 0x00001000>,
              <0x00 0x08405000 0x0 0x00001000>,
              <0x00 0x08410000 0x0 0x00010000>;
        reg-names = "ecam", "xal", "xtl", "xtl-pri", "xpl";
        #address-cells = <3>;
        #size-cells = <2>;
        device_type = "pci";
        linux,pci-domain = <0x01>;
        #interrupt-cells = <1>;
        interrupt-map-mask = <0x0 0x0 0x0 0x7>;
        interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0x0 0x0 908 4>,
                        <0x0 0x0 0x0 0x2 &gic 0x0 0x0 0x0 909 4>,
                        <0x0 0x0 0x0 0x3 &gic 0x0 0x0 0x0 910 4>,
                        <0x0 0x0 0x0 0x4 &gic 0x0 0x0 0x0 911 4>;
 
        iommu-map = <0x0 &smmu1 0x10000 0x10000>;
        msi-map = <0x0 &its 0x110000 0x10000>;
        dma-coherent;
 
        ranges = <0x81000000 0x00 0x84000000 0xa8 0x84000000 0x00 0x00200000>,
                 <0x82000000 0x00 0x28000000 0x00 0x28000000 0x00 0x08000000>,
                 <0xc3000000 0xa8 0xc0000000 0xa8 0xc0000000 0x07 0xc0000000>;
        bus-range = <0x00 0xff>;
 
        nvidia,bpmp = <&bpmp 1>;
      };
    };