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