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