blob: 7e15aae7d69e9780dc2fc7adfa28b0ebec0acaaa [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# 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
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,bcm4908-pcie
18 - brcm,bcm7211-pcie # Broadcom STB version of RPi4
19 - brcm,bcm7278-pcie # Broadcom 7278 Arm
20 - brcm,bcm7216-pcie # Broadcom 7216 Arm
21 - brcm,bcm7445-pcie # Broadcom 7445 Arm
22 - brcm,bcm7425-pcie # Broadcom 7425 MIPs
23 - brcm,bcm7435-pcie # Broadcom 7435 MIPs
24
25 reg:
26 maxItems: 1
27
28 interrupts:
29 minItems: 1
30 items:
31 - description: PCIe host controller
32 - description: builtin MSI controller
33
34 interrupt-names:
35 minItems: 1
36 items:
37 - const: pcie
38 - const: msi
39
40 ranges:
41 minItems: 1
42 maxItems: 4
43
44 dma-ranges:
45 minItems: 1
46 maxItems: 6
47
48 clocks:
49 maxItems: 1
50
51 clock-names:
52 items:
53 - const: sw_pcie
54
55 msi-controller:
56 description: Identifies the node as an MSI controller.
57
58 msi-parent:
59 description: MSI controller the device is capable of using.
60
61 brcm,enable-ssc:
62 description: Indicates usage of spread-spectrum clocking.
63 type: boolean
64
65 aspm-no-l0s: true
66
67 brcm,scb-sizes:
68 description: u64 giving the 64bit PCIe memory
69 viewport size of a memory controller. There may be up to
70 three controllers, and each size must be a power of two
71 with a size greater or equal to the amount of memory the
72 controller supports. Note that each memory controller
73 may have two component regions -- base and extended -- so
74 this information cannot be deduced from the dma-ranges.
75 $ref: /schemas/types.yaml#/definitions/uint64-array
76 items:
77 minItems: 1
78 maxItems: 3
79
80required:
81 - compatible
82 - reg
83 - ranges
84 - dma-ranges
85 - "#interrupt-cells"
86 - interrupts
87 - interrupt-names
88 - interrupt-map-mask
89 - interrupt-map
90 - msi-controller
91
92allOf:
93 - $ref: /schemas/pci/pci-bus.yaml#
94 - $ref: /schemas/interrupt-controller/msi-controller.yaml#
95 - if:
96 properties:
97 compatible:
98 contains:
99 const: brcm,bcm4908-pcie
100 then:
101 properties:
102 resets:
103 items:
104 - description: reset controller handling the PERST# signal
105
106 reset-names:
107 items:
108 - const: perst
109
110 required:
111 - resets
112 - reset-names
113 - if:
114 properties:
115 compatible:
116 contains:
117 const: brcm,bcm7216-pcie
118 then:
119 properties:
120 resets:
121 items:
122 - description: phandle pointing to the RESCAL reset controller
123
124 reset-names:
125 items:
126 - const: rescal
127
128 required:
129 - resets
130 - reset-names
131
132unevaluatedProperties: false
133
134examples:
135 - |
136 #include <dt-bindings/interrupt-controller/irq.h>
137 #include <dt-bindings/interrupt-controller/arm-gic.h>
138
139 scb {
140 #address-cells = <2>;
141 #size-cells = <1>;
142 pcie0: pcie@7d500000 {
143 compatible = "brcm,bcm2711-pcie";
144 reg = <0x0 0x7d500000 0x9310>;
145 device_type = "pci";
146 #address-cells = <3>;
147 #size-cells = <2>;
148 #interrupt-cells = <1>;
149 interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
150 <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
151 interrupt-names = "pcie", "msi";
152 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
153 interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH
154 0 0 0 2 &gicv2 GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH
155 0 0 0 3 &gicv2 GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH
156 0 0 0 4 &gicv2 GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
157
158 msi-parent = <&pcie0>;
159 msi-controller;
160 ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000 0x0 0x04000000>;
161 dma-ranges = <0x42000000 0x1 0x00000000 0x0 0x40000000 0x0 0x80000000>,
162 <0x42000000 0x1 0x80000000 0x3 0x00000000 0x0 0x80000000>;
163 brcm,enable-ssc;
164 brcm,scb-sizes = <0x0000000080000000 0x0000000080000000>;
165
166 /* PCIe bridge, Root Port */
167 pci@0,0 {
168 #address-cells = <3>;
169 #size-cells = <2>;
170 reg = <0x0 0x0 0x0 0x0 0x0>;
171 compatible = "pciclass,0604";
172 device_type = "pci";
173 vpcie3v3-supply = <&vreg7>;
174 ranges;
175
176 /* PCIe endpoint */
177 pci-ep@0,0 {
178 assigned-addresses =
179 <0x82010000 0x0 0xf8000000 0x6 0x00000000 0x0 0x2000>;
180 reg = <0x0 0x0 0x0 0x0 0x0>;
181 compatible = "pci14e4,1688";
182 };
183 };
184 };
185 };