10956dcb8SJim Quinlan# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
20956dcb8SJim Quinlan%YAML 1.2
30956dcb8SJim Quinlan---
40956dcb8SJim Quinlan$id: http://devicetree.org/schemas/pci/brcm,stb-pcie.yaml#
50956dcb8SJim Quinlan$schema: http://devicetree.org/meta-schemas/core.yaml#
60956dcb8SJim Quinlan
70956dcb8SJim Quinlantitle: Brcmstb PCIe Host Controller Device Tree Bindings
80956dcb8SJim Quinlan
90956dcb8SJim Quinlanmaintainers:
100956dcb8SJim Quinlan  - Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
110956dcb8SJim Quinlan
120956dcb8SJim Quinlanproperties:
130956dcb8SJim Quinlan  compatible:
14e6f98b29SJim Quinlan    items:
15e6f98b29SJim Quinlan      - enum:
16e6f98b29SJim Quinlan          - brcm,bcm2711-pcie # The Raspberry Pi 4
17e6f98b29SJim Quinlan          - brcm,bcm7211-pcie # Broadcom STB version of RPi4
18e6f98b29SJim Quinlan          - brcm,bcm7278-pcie # Broadcom 7278 Arm
19e6f98b29SJim Quinlan          - brcm,bcm7216-pcie # Broadcom 7216 Arm
20e6f98b29SJim Quinlan          - brcm,bcm7445-pcie # Broadcom 7445 Arm
210956dcb8SJim Quinlan
220956dcb8SJim Quinlan  reg:
230956dcb8SJim Quinlan    maxItems: 1
240956dcb8SJim Quinlan
250956dcb8SJim Quinlan  interrupts:
260956dcb8SJim Quinlan    minItems: 1
270956dcb8SJim Quinlan    maxItems: 2
280956dcb8SJim Quinlan    items:
290956dcb8SJim Quinlan      - description: PCIe host controller
300956dcb8SJim Quinlan      - description: builtin MSI controller
310956dcb8SJim Quinlan
320956dcb8SJim Quinlan  interrupt-names:
330956dcb8SJim Quinlan    minItems: 1
340956dcb8SJim Quinlan    maxItems: 2
350956dcb8SJim Quinlan    items:
360956dcb8SJim Quinlan      - const: pcie
370956dcb8SJim Quinlan      - const: msi
380956dcb8SJim Quinlan
390956dcb8SJim Quinlan  ranges:
40e6f98b29SJim Quinlan    minItems: 1
41e6f98b29SJim Quinlan    maxItems: 4
420956dcb8SJim Quinlan
430956dcb8SJim Quinlan  dma-ranges:
44e6f98b29SJim Quinlan    minItems: 1
45e6f98b29SJim Quinlan    maxItems: 6
460956dcb8SJim Quinlan
470956dcb8SJim Quinlan  clocks:
480956dcb8SJim Quinlan    maxItems: 1
490956dcb8SJim Quinlan
500956dcb8SJim Quinlan  clock-names:
510956dcb8SJim Quinlan    items:
520956dcb8SJim Quinlan      - const: sw_pcie
530956dcb8SJim Quinlan
540956dcb8SJim Quinlan  msi-controller:
550956dcb8SJim Quinlan    description: Identifies the node as an MSI controller.
560956dcb8SJim Quinlan
570956dcb8SJim Quinlan  msi-parent:
580956dcb8SJim Quinlan    description: MSI controller the device is capable of using.
590956dcb8SJim Quinlan
600956dcb8SJim Quinlan  brcm,enable-ssc:
610956dcb8SJim Quinlan    description: Indicates usage of spread-spectrum clocking.
620956dcb8SJim Quinlan    type: boolean
630956dcb8SJim Quinlan
64420c517bSJim Quinlan  aspm-no-l0s: true
65420c517bSJim Quinlan
66e6f98b29SJim Quinlan  resets:
67e6f98b29SJim Quinlan    description: for "brcm,bcm7216-pcie", must be a valid reset
68e6f98b29SJim Quinlan      phandle pointing to the RESCAL reset controller provider node.
69e6f98b29SJim Quinlan    $ref: "/schemas/types.yaml#/definitions/phandle"
70e6f98b29SJim Quinlan
71e6f98b29SJim Quinlan  reset-names:
72e6f98b29SJim Quinlan    items:
73e6f98b29SJim Quinlan      - const: rescal
74e6f98b29SJim Quinlan
75e6f98b29SJim Quinlan  brcm,scb-sizes:
76e6f98b29SJim Quinlan    description: u64 giving the 64bit PCIe memory
77e6f98b29SJim Quinlan      viewport size of a memory controller.  There may be up to
78e6f98b29SJim Quinlan      three controllers, and each size must be a power of two
79e6f98b29SJim Quinlan      with a size greater or equal to the amount of memory the
80e6f98b29SJim Quinlan      controller supports.  Note that each memory controller
81e6f98b29SJim Quinlan      may have two component regions -- base and extended -- so
82e6f98b29SJim Quinlan      this information cannot be deduced from the dma-ranges.
83e6f98b29SJim Quinlan    $ref: /schemas/types.yaml#/definitions/uint64-array
84e6f98b29SJim Quinlan    items:
85e6f98b29SJim Quinlan      minItems: 1
86e6f98b29SJim Quinlan      maxItems: 3
87e6f98b29SJim Quinlan
880956dcb8SJim Quinlanrequired:
890956dcb8SJim Quinlan  - reg
90e6f98b29SJim Quinlan  - ranges
910956dcb8SJim Quinlan  - dma-ranges
920956dcb8SJim Quinlan  - "#interrupt-cells"
930956dcb8SJim Quinlan  - interrupts
940956dcb8SJim Quinlan  - interrupt-names
950956dcb8SJim Quinlan  - interrupt-map-mask
960956dcb8SJim Quinlan  - interrupt-map
970956dcb8SJim Quinlan  - msi-controller
980956dcb8SJim Quinlan
99e6f98b29SJim QuinlanallOf:
100e6f98b29SJim Quinlan  - $ref: /schemas/pci/pci-bus.yaml#
101e6f98b29SJim Quinlan  - if:
102e6f98b29SJim Quinlan      properties:
103e6f98b29SJim Quinlan        compatible:
104e6f98b29SJim Quinlan          contains:
105e6f98b29SJim Quinlan            const: brcm,bcm7216-pcie
106e6f98b29SJim Quinlan    then:
107e6f98b29SJim Quinlan      required:
108e6f98b29SJim Quinlan        - resets
109e6f98b29SJim Quinlan        - reset-names
110e6f98b29SJim Quinlan
1110956dcb8SJim QuinlanunevaluatedProperties: false
1120956dcb8SJim Quinlan
1130956dcb8SJim Quinlanexamples:
1140956dcb8SJim Quinlan  - |
1150956dcb8SJim Quinlan    #include <dt-bindings/interrupt-controller/irq.h>
1160956dcb8SJim Quinlan    #include <dt-bindings/interrupt-controller/arm-gic.h>
1170956dcb8SJim Quinlan
1180956dcb8SJim Quinlan    scb {
1190956dcb8SJim Quinlan            #address-cells = <2>;
1200956dcb8SJim Quinlan            #size-cells = <1>;
1210956dcb8SJim Quinlan            pcie0: pcie@7d500000 {
1220956dcb8SJim Quinlan                    compatible = "brcm,bcm2711-pcie";
1230956dcb8SJim Quinlan                    reg = <0x0 0x7d500000 0x9310>;
1240956dcb8SJim Quinlan                    device_type = "pci";
1250956dcb8SJim Quinlan                    #address-cells = <3>;
1260956dcb8SJim Quinlan                    #size-cells = <2>;
1270956dcb8SJim Quinlan                    #interrupt-cells = <1>;
1280956dcb8SJim Quinlan                    interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
1290956dcb8SJim Quinlan                                 <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
1300956dcb8SJim Quinlan                    interrupt-names = "pcie", "msi";
1310956dcb8SJim Quinlan                    interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1320956dcb8SJim Quinlan                    interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
1330956dcb8SJim Quinlan                    msi-parent = <&pcie0>;
1340956dcb8SJim Quinlan                    msi-controller;
1350956dcb8SJim Quinlan                    ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000 0x0 0x04000000>;
136e6f98b29SJim Quinlan                    dma-ranges = <0x42000000 0x1 0x00000000 0x0 0x40000000 0x0 0x80000000>,
137e6f98b29SJim Quinlan                                 <0x42000000 0x1 0x80000000 0x3 0x00000000 0x0 0x80000000>;
1380956dcb8SJim Quinlan                    brcm,enable-ssc;
139e6f98b29SJim Quinlan                    brcm,scb-sizes =  <0x0000000080000000 0x0000000080000000>;
1400956dcb8SJim Quinlan            };
1410956dcb8SJim Quinlan    };
142