1*7d0873ebSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*7d0873ebSEmmanuel Vadot%YAML 1.2 3*7d0873ebSEmmanuel Vadot--- 4*7d0873ebSEmmanuel Vadot$id: http://devicetree.org/schemas/pci/fsl,layerscape-pcie.yaml# 5*7d0873ebSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*7d0873ebSEmmanuel Vadot 7*7d0873ebSEmmanuel Vadottitle: Freescale Layerscape PCIe Root Complex(RC) controller 8*7d0873ebSEmmanuel Vadot 9*7d0873ebSEmmanuel Vadotmaintainers: 10*7d0873ebSEmmanuel Vadot - Frank Li <Frank.Li@nxp.com> 11*7d0873ebSEmmanuel Vadot 12*7d0873ebSEmmanuel Vadotdescription: 13*7d0873ebSEmmanuel Vadot This PCIe RC controller is based on the Synopsys DesignWare PCIe IP 14*7d0873ebSEmmanuel Vadot 15*7d0873ebSEmmanuel Vadot This controller derives its clocks from the Reset Configuration Word (RCW) 16*7d0873ebSEmmanuel Vadot which is used to describe the PLL settings at the time of chip-reset. 17*7d0873ebSEmmanuel Vadot 18*7d0873ebSEmmanuel Vadot Also as per the available Reference Manuals, there is no specific 'version' 19*7d0873ebSEmmanuel Vadot register available in the Freescale PCIe controller register set, 20*7d0873ebSEmmanuel Vadot which can allow determining the underlying DesignWare PCIe controller version 21*7d0873ebSEmmanuel Vadot information. 22*7d0873ebSEmmanuel Vadot 23*7d0873ebSEmmanuel Vadotproperties: 24*7d0873ebSEmmanuel Vadot compatible: 25*7d0873ebSEmmanuel Vadot enum: 26*7d0873ebSEmmanuel Vadot - fsl,ls1021a-pcie 27*7d0873ebSEmmanuel Vadot - fsl,ls2080a-pcie 28*7d0873ebSEmmanuel Vadot - fsl,ls2085a-pcie 29*7d0873ebSEmmanuel Vadot - fsl,ls2088a-pcie 30*7d0873ebSEmmanuel Vadot - fsl,ls1088a-pcie 31*7d0873ebSEmmanuel Vadot - fsl,ls1046a-pcie 32*7d0873ebSEmmanuel Vadot - fsl,ls1043a-pcie 33*7d0873ebSEmmanuel Vadot - fsl,ls1012a-pcie 34*7d0873ebSEmmanuel Vadot - fsl,ls1028a-pcie 35*7d0873ebSEmmanuel Vadot - fsl,lx2160a-pcie 36*7d0873ebSEmmanuel Vadot 37*7d0873ebSEmmanuel Vadot reg: 38*7d0873ebSEmmanuel Vadot maxItems: 2 39*7d0873ebSEmmanuel Vadot 40*7d0873ebSEmmanuel Vadot reg-names: 41*7d0873ebSEmmanuel Vadot items: 42*7d0873ebSEmmanuel Vadot - const: regs 43*7d0873ebSEmmanuel Vadot - const: config 44*7d0873ebSEmmanuel Vadot 45*7d0873ebSEmmanuel Vadot fsl,pcie-scfg: 46*7d0873ebSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 47*7d0873ebSEmmanuel Vadot description: A phandle to the SCFG device node. The second entry is the 48*7d0873ebSEmmanuel Vadot physical PCIe controller index starting from '0'. This is used to get 49*7d0873ebSEmmanuel Vadot SCFG PEXN registers. 50*7d0873ebSEmmanuel Vadot 51*7d0873ebSEmmanuel Vadot big-endian: 52*7d0873ebSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 53*7d0873ebSEmmanuel Vadot description: If the PEX_LUT and PF register block is in big-endian, specify 54*7d0873ebSEmmanuel Vadot this property. 55*7d0873ebSEmmanuel Vadot 56*7d0873ebSEmmanuel Vadot dma-coherent: true 57*7d0873ebSEmmanuel Vadot 58*7d0873ebSEmmanuel Vadot msi-parent: true 59*7d0873ebSEmmanuel Vadot 60*7d0873ebSEmmanuel Vadot iommu-map: true 61*7d0873ebSEmmanuel Vadot 62*7d0873ebSEmmanuel Vadot interrupts: 63*7d0873ebSEmmanuel Vadot minItems: 1 64*7d0873ebSEmmanuel Vadot maxItems: 2 65*7d0873ebSEmmanuel Vadot 66*7d0873ebSEmmanuel Vadot interrupt-names: 67*7d0873ebSEmmanuel Vadot minItems: 1 68*7d0873ebSEmmanuel Vadot maxItems: 2 69*7d0873ebSEmmanuel Vadot 70*7d0873ebSEmmanuel Vadotrequired: 71*7d0873ebSEmmanuel Vadot - compatible 72*7d0873ebSEmmanuel Vadot - reg 73*7d0873ebSEmmanuel Vadot - reg-names 74*7d0873ebSEmmanuel Vadot - "#address-cells" 75*7d0873ebSEmmanuel Vadot - "#size-cells" 76*7d0873ebSEmmanuel Vadot - device_type 77*7d0873ebSEmmanuel Vadot - bus-range 78*7d0873ebSEmmanuel Vadot - ranges 79*7d0873ebSEmmanuel Vadot - interrupts 80*7d0873ebSEmmanuel Vadot - interrupt-names 81*7d0873ebSEmmanuel Vadot - "#interrupt-cells" 82*7d0873ebSEmmanuel Vadot - interrupt-map-mask 83*7d0873ebSEmmanuel Vadot - interrupt-map 84*7d0873ebSEmmanuel Vadot 85*7d0873ebSEmmanuel VadotallOf: 86*7d0873ebSEmmanuel Vadot - $ref: /schemas/pci/pci-bus.yaml# 87*7d0873ebSEmmanuel Vadot 88*7d0873ebSEmmanuel Vadot - if: 89*7d0873ebSEmmanuel Vadot properties: 90*7d0873ebSEmmanuel Vadot compatible: 91*7d0873ebSEmmanuel Vadot enum: 92*7d0873ebSEmmanuel Vadot - fsl,ls1028a-pcie 93*7d0873ebSEmmanuel Vadot - fsl,ls1046a-pcie 94*7d0873ebSEmmanuel Vadot - fsl,ls1043a-pcie 95*7d0873ebSEmmanuel Vadot - fsl,ls1012a-pcie 96*7d0873ebSEmmanuel Vadot then: 97*7d0873ebSEmmanuel Vadot properties: 98*7d0873ebSEmmanuel Vadot interrupts: 99*7d0873ebSEmmanuel Vadot maxItems: 2 100*7d0873ebSEmmanuel Vadot interrupt-names: 101*7d0873ebSEmmanuel Vadot items: 102*7d0873ebSEmmanuel Vadot - const: pme 103*7d0873ebSEmmanuel Vadot - const: aer 104*7d0873ebSEmmanuel Vadot 105*7d0873ebSEmmanuel Vadot - if: 106*7d0873ebSEmmanuel Vadot properties: 107*7d0873ebSEmmanuel Vadot compatible: 108*7d0873ebSEmmanuel Vadot enum: 109*7d0873ebSEmmanuel Vadot - fsl,ls2080a-pcie 110*7d0873ebSEmmanuel Vadot - fsl,ls2085a-pcie 111*7d0873ebSEmmanuel Vadot - fsl,ls2088a-pcie 112*7d0873ebSEmmanuel Vadot then: 113*7d0873ebSEmmanuel Vadot properties: 114*7d0873ebSEmmanuel Vadot interrupts: 115*7d0873ebSEmmanuel Vadot maxItems: 1 116*7d0873ebSEmmanuel Vadot interrupt-names: 117*7d0873ebSEmmanuel Vadot items: 118*7d0873ebSEmmanuel Vadot - const: intr 119*7d0873ebSEmmanuel Vadot 120*7d0873ebSEmmanuel Vadot - if: 121*7d0873ebSEmmanuel Vadot properties: 122*7d0873ebSEmmanuel Vadot compatible: 123*7d0873ebSEmmanuel Vadot enum: 124*7d0873ebSEmmanuel Vadot - fsl,ls1088a-pcie 125*7d0873ebSEmmanuel Vadot then: 126*7d0873ebSEmmanuel Vadot properties: 127*7d0873ebSEmmanuel Vadot interrupts: 128*7d0873ebSEmmanuel Vadot maxItems: 1 129*7d0873ebSEmmanuel Vadot interrupt-names: 130*7d0873ebSEmmanuel Vadot items: 131*7d0873ebSEmmanuel Vadot - const: aer 132*7d0873ebSEmmanuel Vadot 133*7d0873ebSEmmanuel VadotunevaluatedProperties: false 134*7d0873ebSEmmanuel Vadot 135*7d0873ebSEmmanuel Vadotexamples: 136*7d0873ebSEmmanuel Vadot - | 137*7d0873ebSEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 138*7d0873ebSEmmanuel Vadot 139*7d0873ebSEmmanuel Vadot soc { 140*7d0873ebSEmmanuel Vadot #address-cells = <2>; 141*7d0873ebSEmmanuel Vadot #size-cells = <2>; 142*7d0873ebSEmmanuel Vadot 143*7d0873ebSEmmanuel Vadot pcie@3400000 { 144*7d0873ebSEmmanuel Vadot compatible = "fsl,ls1088a-pcie"; 145*7d0873ebSEmmanuel Vadot reg = <0x00 0x03400000 0x0 0x00100000>, /* controller registers */ 146*7d0873ebSEmmanuel Vadot <0x20 0x00000000 0x0 0x00002000>; /* configuration space */ 147*7d0873ebSEmmanuel Vadot reg-names = "regs", "config"; 148*7d0873ebSEmmanuel Vadot interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>; /* aer interrupt */ 149*7d0873ebSEmmanuel Vadot interrupt-names = "aer"; 150*7d0873ebSEmmanuel Vadot #address-cells = <3>; 151*7d0873ebSEmmanuel Vadot #size-cells = <2>; 152*7d0873ebSEmmanuel Vadot dma-coherent; 153*7d0873ebSEmmanuel Vadot device_type = "pci"; 154*7d0873ebSEmmanuel Vadot bus-range = <0x0 0xff>; 155*7d0873ebSEmmanuel Vadot ranges = <0x81000000 0x0 0x00000000 0x20 0x00010000 0x0 0x00010000 /* downstream I/O */ 156*7d0873ebSEmmanuel Vadot 0x82000000 0x0 0x40000000 0x20 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */ 157*7d0873ebSEmmanuel Vadot msi-parent = <&its>; 158*7d0873ebSEmmanuel Vadot #interrupt-cells = <1>; 159*7d0873ebSEmmanuel Vadot interrupt-map-mask = <0 0 0 7>; 160*7d0873ebSEmmanuel Vadot interrupt-map = <0000 0 0 1 &gic 0 0 0 109 IRQ_TYPE_LEVEL_HIGH>, 161*7d0873ebSEmmanuel Vadot <0000 0 0 2 &gic 0 0 0 110 IRQ_TYPE_LEVEL_HIGH>, 162*7d0873ebSEmmanuel Vadot <0000 0 0 3 &gic 0 0 0 111 IRQ_TYPE_LEVEL_HIGH>, 163*7d0873ebSEmmanuel Vadot <0000 0 0 4 &gic 0 0 0 112 IRQ_TYPE_LEVEL_HIGH>; 164*7d0873ebSEmmanuel Vadot iommu-map = <0 &smmu 0 1>; /* Fixed-up by bootloader */ 165*7d0873ebSEmmanuel Vadot }; 166*7d0873ebSEmmanuel Vadot }; 167*7d0873ebSEmmanuel Vadot... 168