1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pci/brcm,stb-pcie.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Brcmstb PCIe Host Controller Device Tree Bindings
8
9maintainers:
10  - Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
11
12properties:
13  compatible:
14    items:
15      - enum:
16          - brcm,bcm2711-pcie # The Raspberry Pi 4
17          - brcm,bcm7211-pcie # Broadcom STB version of RPi4
18          - brcm,bcm7278-pcie # Broadcom 7278 Arm
19          - brcm,bcm7216-pcie # Broadcom 7216 Arm
20          - brcm,bcm7445-pcie # Broadcom 7445 Arm
21
22  reg:
23    maxItems: 1
24
25  interrupts:
26    minItems: 1
27    maxItems: 2
28    items:
29      - description: PCIe host controller
30      - description: builtin MSI controller
31
32  interrupt-names:
33    minItems: 1
34    maxItems: 2
35    items:
36      - const: pcie
37      - const: msi
38
39  ranges:
40    minItems: 1
41    maxItems: 4
42
43  dma-ranges:
44    minItems: 1
45    maxItems: 6
46
47  clocks:
48    maxItems: 1
49
50  clock-names:
51    items:
52      - const: sw_pcie
53
54  msi-controller:
55    description: Identifies the node as an MSI controller.
56
57  msi-parent:
58    description: MSI controller the device is capable of using.
59
60  brcm,enable-ssc:
61    description: Indicates usage of spread-spectrum clocking.
62    type: boolean
63
64  aspm-no-l0s: true
65
66  resets:
67    description: for "brcm,bcm7216-pcie", must be a valid reset
68      phandle pointing to the RESCAL reset controller provider node.
69    $ref: "/schemas/types.yaml#/definitions/phandle"
70
71  reset-names:
72    items:
73      - const: rescal
74
75  brcm,scb-sizes:
76    description: u64 giving the 64bit PCIe memory
77      viewport size of a memory controller.  There may be up to
78      three controllers, and each size must be a power of two
79      with a size greater or equal to the amount of memory the
80      controller supports.  Note that each memory controller
81      may have two component regions -- base and extended -- so
82      this information cannot be deduced from the dma-ranges.
83    $ref: /schemas/types.yaml#/definitions/uint64-array
84    items:
85      minItems: 1
86      maxItems: 3
87
88required:
89  - reg
90  - ranges
91  - dma-ranges
92  - "#interrupt-cells"
93  - interrupts
94  - interrupt-names
95  - interrupt-map-mask
96  - interrupt-map
97  - msi-controller
98
99allOf:
100  - $ref: /schemas/pci/pci-bus.yaml#
101  - if:
102      properties:
103        compatible:
104          contains:
105            const: brcm,bcm7216-pcie
106    then:
107      required:
108        - resets
109        - reset-names
110
111unevaluatedProperties: false
112
113examples:
114  - |
115    #include <dt-bindings/interrupt-controller/irq.h>
116    #include <dt-bindings/interrupt-controller/arm-gic.h>
117
118    scb {
119            #address-cells = <2>;
120            #size-cells = <1>;
121            pcie0: pcie@7d500000 {
122                    compatible = "brcm,bcm2711-pcie";
123                    reg = <0x0 0x7d500000 0x9310>;
124                    device_type = "pci";
125                    #address-cells = <3>;
126                    #size-cells = <2>;
127                    #interrupt-cells = <1>;
128                    interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
129                                 <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
130                    interrupt-names = "pcie", "msi";
131                    interrupt-map-mask = <0x0 0x0 0x0 0x7>;
132                    interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
133                    msi-parent = <&pcie0>;
134                    msi-controller;
135                    ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000 0x0 0x04000000>;
136                    dma-ranges = <0x42000000 0x1 0x00000000 0x0 0x40000000 0x0 0x80000000>,
137                                 <0x42000000 0x1 0x80000000 0x3 0x00000000 0x0 0x80000000>;
138                    brcm,enable-ssc;
139                    brcm,scb-sizes =  <0x0000000080000000 0x0000000080000000>;
140            };
141    };
142