xref: /linux/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml (revision 1260ed77798502de9c98020040d2995008de10cc)
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
7dd3cb467SAndrew Lunntitle: Brcmstb PCIe Host Controller
80956dcb8SJim Quinlan
90956dcb8SJim Quinlanmaintainers:
108a4db021SJim Quinlan  - Jim Quinlan <james.quinlan@broadcom.com>
110956dcb8SJim Quinlan
120956dcb8SJim Quinlanproperties:
130956dcb8SJim Quinlan  compatible:
14e6f98b29SJim Quinlan    items:
15e6f98b29SJim Quinlan      - enum:
16e6f98b29SJim Quinlan          - brcm,bcm2711-pcie # The Raspberry Pi 4
17*4215fd05SStanimir Varbanov          - brcm,bcm2712-pcie # Raspberry Pi 5
18f435ce7eSRafał Miłecki          - brcm,bcm4908-pcie
19e6f98b29SJim Quinlan          - brcm,bcm7211-pcie # Broadcom STB version of RPi4
20e6f98b29SJim Quinlan          - brcm,bcm7216-pcie # Broadcom 7216 Arm
218a4db021SJim Quinlan          - brcm,bcm7278-pcie # Broadcom 7278 Arm
22145790e5SJim Quinlan          - brcm,bcm7425-pcie # Broadcom 7425 MIPs
23145790e5SJim Quinlan          - brcm,bcm7435-pcie # Broadcom 7435 MIPs
248a4db021SJim Quinlan          - brcm,bcm7445-pcie # Broadcom 7445 Arm
2556d02029SJim Quinlan          - brcm,bcm7712-pcie # Broadcom STB sibling of Rpi 5
260956dcb8SJim Quinlan
270956dcb8SJim Quinlan  reg:
280956dcb8SJim Quinlan    maxItems: 1
290956dcb8SJim Quinlan
300956dcb8SJim Quinlan  interrupts:
310956dcb8SJim Quinlan    minItems: 1
320956dcb8SJim Quinlan    items:
330956dcb8SJim Quinlan      - description: PCIe host controller
340956dcb8SJim Quinlan      - description: builtin MSI controller
350956dcb8SJim Quinlan
360956dcb8SJim Quinlan  interrupt-names:
370956dcb8SJim Quinlan    minItems: 1
380956dcb8SJim Quinlan    items:
390956dcb8SJim Quinlan      - const: pcie
400956dcb8SJim Quinlan      - const: msi
410956dcb8SJim Quinlan
420956dcb8SJim Quinlan  ranges:
43e6f98b29SJim Quinlan    minItems: 1
44e6f98b29SJim Quinlan    maxItems: 4
450956dcb8SJim Quinlan
460956dcb8SJim Quinlan  dma-ranges:
47e6f98b29SJim Quinlan    minItems: 1
48e6f98b29SJim Quinlan    maxItems: 6
490956dcb8SJim Quinlan
500956dcb8SJim Quinlan  clocks:
510956dcb8SJim Quinlan    maxItems: 1
520956dcb8SJim Quinlan
530956dcb8SJim Quinlan  clock-names:
540956dcb8SJim Quinlan    items:
550956dcb8SJim Quinlan      - const: sw_pcie
560956dcb8SJim Quinlan
570956dcb8SJim Quinlan  msi-controller:
580956dcb8SJim Quinlan    description: Identifies the node as an MSI controller.
590956dcb8SJim Quinlan
600956dcb8SJim Quinlan  msi-parent:
610956dcb8SJim Quinlan    description: MSI controller the device is capable of using.
620956dcb8SJim Quinlan
630956dcb8SJim Quinlan  brcm,enable-ssc:
640956dcb8SJim Quinlan    description: Indicates usage of spread-spectrum clocking.
650956dcb8SJim Quinlan    type: boolean
660956dcb8SJim Quinlan
67420c517bSJim Quinlan  aspm-no-l0s: true
68420c517bSJim Quinlan
6914b15aebSJim Quinlan  brcm,clkreq-mode:
7014b15aebSJim Quinlan    description: A string that determines the operating
7114b15aebSJim Quinlan      clkreq mode of the PCIe RC HW with respect to controlling the refclk
7214b15aebSJim Quinlan      signal.  There are three different modes -- "safe", which drives the
7314b15aebSJim Quinlan      refclk signal unconditionally and will work for all devices but does
7414b15aebSJim Quinlan      not provide any power savings; "no-l1ss" -- which provides Clock
7514b15aebSJim Quinlan      Power Management, L0s, and L1, but cannot provide L1 substate (L1SS)
7614b15aebSJim Quinlan      power savings. If the downstream device connected to the RC is L1SS
7714b15aebSJim Quinlan      capable AND the OS enables L1SS, all PCIe traffic may abruptly halt,
7814b15aebSJim Quinlan      potentially hanging the system; "default" -- which provides L0s, L1,
7914b15aebSJim Quinlan      and L1SS, but not compliant to provide Clock Power Management;
8014b15aebSJim Quinlan      specifically, may not be able to meet the T_CLRon max timing of 400ns
8114b15aebSJim Quinlan      as specified in "Dynamic Clock Control", section 3.2.5.2.2 PCI
8214b15aebSJim Quinlan      Express Mini CEM 2.1 specification.  This situation is atypical and
8314b15aebSJim Quinlan      should happen only with older devices.
8414b15aebSJim Quinlan    $ref: /schemas/types.yaml#/definitions/string
8514b15aebSJim Quinlan    enum: [ safe, no-l1ss, default ]
8614b15aebSJim Quinlan
87e6f98b29SJim Quinlan  brcm,scb-sizes:
88e6f98b29SJim Quinlan    description: u64 giving the 64bit PCIe memory
89e6f98b29SJim Quinlan      viewport size of a memory controller.  There may be up to
90e6f98b29SJim Quinlan      three controllers, and each size must be a power of two
91e6f98b29SJim Quinlan      with a size greater or equal to the amount of memory the
92e6f98b29SJim Quinlan      controller supports.  Note that each memory controller
93e6f98b29SJim Quinlan      may have two component regions -- base and extended -- so
94e6f98b29SJim Quinlan      this information cannot be deduced from the dma-ranges.
95e6f98b29SJim Quinlan    $ref: /schemas/types.yaml#/definitions/uint64-array
96e6f98b29SJim Quinlan    minItems: 1
97e6f98b29SJim Quinlan    maxItems: 3
98e6f98b29SJim Quinlan
99c64e40caSJim Quinlan  resets:
10056d02029SJim Quinlan    minItems: 1
10156d02029SJim Quinlan    maxItems: 3
102c64e40caSJim Quinlan
103c64e40caSJim Quinlan  reset-names:
10456d02029SJim Quinlan    minItems: 1
105*4215fd05SStanimir Varbanov    items:
106*4215fd05SStanimir Varbanov      - enum: [perst, rescal]
107*4215fd05SStanimir Varbanov      - const: bridge
108*4215fd05SStanimir Varbanov      - const: swinit
109c64e40caSJim Quinlan
1100956dcb8SJim Quinlanrequired:
1115e8a7d26SFlorian Fainelli  - compatible
1120956dcb8SJim Quinlan  - reg
113e6f98b29SJim Quinlan  - ranges
1140956dcb8SJim Quinlan  - dma-ranges
1150956dcb8SJim Quinlan  - "#interrupt-cells"
1160956dcb8SJim Quinlan  - interrupts
1170956dcb8SJim Quinlan  - interrupt-names
1180956dcb8SJim Quinlan  - interrupt-map-mask
1190956dcb8SJim Quinlan  - interrupt-map
1200956dcb8SJim Quinlan  - msi-controller
1210956dcb8SJim Quinlan
122e6f98b29SJim QuinlanallOf:
1235db62b7dSKrzysztof Kozlowski  - $ref: /schemas/pci/pci-host-bridge.yaml#
1242e8b4b6eSMark Kettenis  - $ref: /schemas/interrupt-controller/msi-controller.yaml#
125e6f98b29SJim Quinlan  - if:
126e6f98b29SJim Quinlan      properties:
127e6f98b29SJim Quinlan        compatible:
128e6f98b29SJim Quinlan          contains:
129f435ce7eSRafał Miłecki            const: brcm,bcm4908-pcie
130f435ce7eSRafał Miłecki    then:
131f435ce7eSRafał Miłecki      properties:
132f435ce7eSRafał Miłecki        resets:
133c64e40caSJim Quinlan          maxItems: 1
134f435ce7eSRafał Miłecki
135f435ce7eSRafał Miłecki        reset-names:
136f435ce7eSRafał Miłecki          items:
137f435ce7eSRafał Miłecki            - const: perst
138f435ce7eSRafał Miłecki
139f435ce7eSRafał Miłecki      required:
140f435ce7eSRafał Miłecki        - resets
141f435ce7eSRafał Miłecki        - reset-names
142f435ce7eSRafał Miłecki  - if:
143f435ce7eSRafał Miłecki      properties:
144f435ce7eSRafał Miłecki        compatible:
145f435ce7eSRafał Miłecki          contains:
146e6f98b29SJim Quinlan            const: brcm,bcm7216-pcie
147e6f98b29SJim Quinlan    then:
148f435ce7eSRafał Miłecki      properties:
149f435ce7eSRafał Miłecki        resets:
150c64e40caSJim Quinlan          maxItems: 1
151f435ce7eSRafał Miłecki
152f435ce7eSRafał Miłecki        reset-names:
153f435ce7eSRafał Miłecki          items:
154f435ce7eSRafał Miłecki            - const: rescal
155f435ce7eSRafał Miłecki
156e6f98b29SJim Quinlan      required:
157e6f98b29SJim Quinlan        - resets
158e6f98b29SJim Quinlan        - reset-names
159e6f98b29SJim Quinlan
16056d02029SJim Quinlan  - if:
16156d02029SJim Quinlan      properties:
16256d02029SJim Quinlan        compatible:
16356d02029SJim Quinlan          contains:
16456d02029SJim Quinlan            const: brcm,bcm7712-pcie
16556d02029SJim Quinlan    then:
16656d02029SJim Quinlan      properties:
16756d02029SJim Quinlan        resets:
16856d02029SJim Quinlan          minItems: 3
16956d02029SJim Quinlan          maxItems: 3
17056d02029SJim Quinlan
17156d02029SJim Quinlan        reset-names:
17256d02029SJim Quinlan          items:
17356d02029SJim Quinlan            - const: rescal
17456d02029SJim Quinlan            - const: bridge
17556d02029SJim Quinlan            - const: swinit
17656d02029SJim Quinlan
17756d02029SJim Quinlan      required:
17856d02029SJim Quinlan        - resets
17956d02029SJim Quinlan        - reset-names
18056d02029SJim Quinlan
1810956dcb8SJim QuinlanunevaluatedProperties: false
1820956dcb8SJim Quinlan
1830956dcb8SJim Quinlanexamples:
1840956dcb8SJim Quinlan  - |
1850956dcb8SJim Quinlan    #include <dt-bindings/interrupt-controller/irq.h>
1860956dcb8SJim Quinlan    #include <dt-bindings/interrupt-controller/arm-gic.h>
1870956dcb8SJim Quinlan
1880956dcb8SJim Quinlan    scb {
1890956dcb8SJim Quinlan            #address-cells = <2>;
1900956dcb8SJim Quinlan            #size-cells = <1>;
1910956dcb8SJim Quinlan            pcie0: pcie@7d500000 {
1920956dcb8SJim Quinlan                    compatible = "brcm,bcm2711-pcie";
1930956dcb8SJim Quinlan                    reg = <0x0 0x7d500000 0x9310>;
1940956dcb8SJim Quinlan                    device_type = "pci";
1950956dcb8SJim Quinlan                    #address-cells = <3>;
1960956dcb8SJim Quinlan                    #size-cells = <2>;
1970956dcb8SJim Quinlan                    #interrupt-cells = <1>;
198504253e4SJim Quinlan                    interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
1990956dcb8SJim Quinlan                                 <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
2000956dcb8SJim Quinlan                    interrupt-names = "pcie", "msi";
2010956dcb8SJim Quinlan                    interrupt-map-mask = <0x0 0x0 0x0 0x7>;
202504253e4SJim Quinlan                    interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH
203504253e4SJim Quinlan                                     0 0 0 2 &gicv2 GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH
204504253e4SJim Quinlan                                     0 0 0 3 &gicv2 GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH
205504253e4SJim Quinlan                                     0 0 0 4 &gicv2 GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
206504253e4SJim Quinlan
2070956dcb8SJim Quinlan                    msi-parent = <&pcie0>;
2080956dcb8SJim Quinlan                    msi-controller;
2090956dcb8SJim Quinlan                    ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000 0x0 0x04000000>;
210e6f98b29SJim Quinlan                    dma-ranges = <0x42000000 0x1 0x00000000 0x0 0x40000000 0x0 0x80000000>,
211e6f98b29SJim Quinlan                                 <0x42000000 0x1 0x80000000 0x3 0x00000000 0x0 0x80000000>;
2120956dcb8SJim Quinlan                    brcm,enable-ssc;
213e6f98b29SJim Quinlan                    brcm,scb-sizes =  <0x0000000080000000 0x0000000080000000>;
214ea372f45SJim Quinlan
215ea372f45SJim Quinlan                    /* PCIe bridge, Root Port */
216ea372f45SJim Quinlan                    pci@0,0 {
217ea372f45SJim Quinlan                            #address-cells = <3>;
218ea372f45SJim Quinlan                            #size-cells = <2>;
219ea372f45SJim Quinlan                            reg = <0x0 0x0 0x0 0x0 0x0>;
220ea372f45SJim Quinlan                            compatible = "pciclass,0604";
221ea372f45SJim Quinlan                            device_type = "pci";
222ea372f45SJim Quinlan                            vpcie3v3-supply = <&vreg7>;
223ea372f45SJim Quinlan                            ranges;
224ea372f45SJim Quinlan
225ea372f45SJim Quinlan                            /* PCIe endpoint */
226ea372f45SJim Quinlan                            pci-ep@0,0 {
227ea372f45SJim Quinlan                                    assigned-addresses =
228ea372f45SJim Quinlan                                        <0x82010000 0x0 0xf8000000 0x6 0x00000000 0x0 0x2000>;
229ea372f45SJim Quinlan                                    reg = <0x0 0x0 0x0 0x0 0x0>;
230ea372f45SJim Quinlan                                    compatible = "pci14e4,1688";
231ea372f45SJim Quinlan                            };
232ea372f45SJim Quinlan                    };
2330956dcb8SJim Quinlan            };
2340956dcb8SJim Quinlan    };
235