# 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 - Jon Hunter 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>; }; };