xref: /linux/Documentation/devicetree/bindings/pci/fsl,layerscape-pcie.yaml (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
124cd7ecbSFrank Li# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
224cd7ecbSFrank Li%YAML 1.2
324cd7ecbSFrank Li---
424cd7ecbSFrank Li$id: http://devicetree.org/schemas/pci/fsl,layerscape-pcie.yaml#
524cd7ecbSFrank Li$schema: http://devicetree.org/meta-schemas/core.yaml#
624cd7ecbSFrank Li
724cd7ecbSFrank Lititle: Freescale Layerscape PCIe Root Complex(RC) controller
824cd7ecbSFrank Li
924cd7ecbSFrank Limaintainers:
1024cd7ecbSFrank Li  - Frank Li <Frank.Li@nxp.com>
1124cd7ecbSFrank Li
1224cd7ecbSFrank Lidescription:
1324cd7ecbSFrank Li  This PCIe RC controller is based on the Synopsys DesignWare PCIe IP
1424cd7ecbSFrank Li
1524cd7ecbSFrank Li  This controller derives its clocks from the Reset Configuration Word (RCW)
1624cd7ecbSFrank Li  which is used to describe the PLL settings at the time of chip-reset.
1724cd7ecbSFrank Li
1824cd7ecbSFrank Li  Also as per the available Reference Manuals, there is no specific 'version'
1924cd7ecbSFrank Li  register available in the Freescale PCIe controller register set,
2024cd7ecbSFrank Li  which can allow determining the underlying DesignWare PCIe controller version
2124cd7ecbSFrank Li  information.
2224cd7ecbSFrank Li
2324cd7ecbSFrank Liproperties:
2424cd7ecbSFrank Li  compatible:
251a1bf588SFrank Li    oneOf:
261a1bf588SFrank Li      - enum:
271a1bf588SFrank Li          - fsl,ls1012a-pcie
2824cd7ecbSFrank Li          - fsl,ls1021a-pcie
291a1bf588SFrank Li          - fsl,ls1028a-pcie
301a1bf588SFrank Li          - fsl,ls1043a-pcie
311a1bf588SFrank Li          - fsl,ls1046a-pcie
321a1bf588SFrank Li          - fsl,ls1088a-pcie
3324cd7ecbSFrank Li          - fsl,ls2080a-pcie
3424cd7ecbSFrank Li          - fsl,ls2085a-pcie
3524cd7ecbSFrank Li          - fsl,ls2088a-pcie
361a1bf588SFrank Li      - items:
371a1bf588SFrank Li          - const: fsl,lx2160ar2-pcie
381a1bf588SFrank Li          - const: fsl,ls2088a-pcie
3924cd7ecbSFrank Li  reg:
4024cd7ecbSFrank Li    maxItems: 2
4124cd7ecbSFrank Li
4224cd7ecbSFrank Li  reg-names:
4324cd7ecbSFrank Li    items:
4424cd7ecbSFrank Li      - const: regs
4524cd7ecbSFrank Li      - const: config
4624cd7ecbSFrank Li
4724cd7ecbSFrank Li  fsl,pcie-scfg:
48*f66b63efSFrank Li    $ref: /schemas/types.yaml#/definitions/phandle-array
4924cd7ecbSFrank Li    description: A phandle to the SCFG device node. The second entry is the
5024cd7ecbSFrank Li      physical PCIe controller index starting from '0'. This is used to get
5124cd7ecbSFrank Li      SCFG PEXN registers.
52*f66b63efSFrank Li    items:
53*f66b63efSFrank Li      items:
54*f66b63efSFrank Li        - description: A phandle to the SCFG device node
55*f66b63efSFrank Li        - description: PCIe controller index starting from '0'
56*f66b63efSFrank Li    maxItems: 1
5724cd7ecbSFrank Li
5824cd7ecbSFrank Li  big-endian:
5924cd7ecbSFrank Li    $ref: /schemas/types.yaml#/definitions/flag
6024cd7ecbSFrank Li    description: If the PEX_LUT and PF register block is in big-endian, specify
6124cd7ecbSFrank Li      this property.
6224cd7ecbSFrank Li
6324cd7ecbSFrank Li  dma-coherent: true
6424cd7ecbSFrank Li
6524cd7ecbSFrank Li  msi-parent: true
6624cd7ecbSFrank Li
6724cd7ecbSFrank Li  iommu-map: true
6824cd7ecbSFrank Li
6924cd7ecbSFrank Li  interrupts:
7024cd7ecbSFrank Li    minItems: 1
7124cd7ecbSFrank Li    maxItems: 2
7224cd7ecbSFrank Li
7324cd7ecbSFrank Li  interrupt-names:
7424cd7ecbSFrank Li    minItems: 1
7524cd7ecbSFrank Li    maxItems: 2
7624cd7ecbSFrank Li
77b9fe09a1SFrank Li  num-viewport:
78b9fe09a1SFrank Li    $ref: /schemas/types.yaml#/definitions/uint32
79b9fe09a1SFrank Li    deprecated: true
80b9fe09a1SFrank Li    description:
81b9fe09a1SFrank Li      Number of outbound view ports configured in hardware. It's the same as
82b9fe09a1SFrank Li      the number of outbound AT windows.
83b9fe09a1SFrank Li    maximum: 256
84b9fe09a1SFrank Li
8524cd7ecbSFrank Lirequired:
8624cd7ecbSFrank Li  - compatible
8724cd7ecbSFrank Li  - reg
8824cd7ecbSFrank Li  - reg-names
8924cd7ecbSFrank Li  - "#address-cells"
9024cd7ecbSFrank Li  - "#size-cells"
9124cd7ecbSFrank Li  - device_type
9224cd7ecbSFrank Li  - bus-range
9324cd7ecbSFrank Li  - ranges
9424cd7ecbSFrank Li  - interrupts
9524cd7ecbSFrank Li  - interrupt-names
9624cd7ecbSFrank Li  - "#interrupt-cells"
9724cd7ecbSFrank Li  - interrupt-map-mask
9824cd7ecbSFrank Li  - interrupt-map
9924cd7ecbSFrank Li
10024cd7ecbSFrank LiallOf:
10124cd7ecbSFrank Li  - $ref: /schemas/pci/pci-bus.yaml#
10224cd7ecbSFrank Li
10324cd7ecbSFrank Li  - if:
10424cd7ecbSFrank Li      properties:
10524cd7ecbSFrank Li        compatible:
10624cd7ecbSFrank Li          enum:
10724cd7ecbSFrank Li            - fsl,ls1028a-pcie
10824cd7ecbSFrank Li            - fsl,ls1046a-pcie
10924cd7ecbSFrank Li            - fsl,ls1043a-pcie
11024cd7ecbSFrank Li            - fsl,ls1012a-pcie
11124cd7ecbSFrank Li    then:
11224cd7ecbSFrank Li      properties:
11324cd7ecbSFrank Li        interrupts:
11424cd7ecbSFrank Li          maxItems: 2
11524cd7ecbSFrank Li        interrupt-names:
11624cd7ecbSFrank Li          items:
11724cd7ecbSFrank Li            - const: pme
11824cd7ecbSFrank Li            - const: aer
11924cd7ecbSFrank Li
12024cd7ecbSFrank Li  - if:
12124cd7ecbSFrank Li      properties:
12224cd7ecbSFrank Li        compatible:
12324cd7ecbSFrank Li          enum:
12424cd7ecbSFrank Li            - fsl,ls2080a-pcie
12524cd7ecbSFrank Li            - fsl,ls2085a-pcie
12624cd7ecbSFrank Li            - fsl,ls2088a-pcie
12724cd7ecbSFrank Li    then:
12824cd7ecbSFrank Li      properties:
12924cd7ecbSFrank Li        interrupts:
13024cd7ecbSFrank Li          maxItems: 1
13124cd7ecbSFrank Li        interrupt-names:
13224cd7ecbSFrank Li          items:
13324cd7ecbSFrank Li            - const: intr
13424cd7ecbSFrank Li
13524cd7ecbSFrank Li  - if:
13624cd7ecbSFrank Li      properties:
13724cd7ecbSFrank Li        compatible:
13824cd7ecbSFrank Li          enum:
13924cd7ecbSFrank Li            - fsl,ls1088a-pcie
14024cd7ecbSFrank Li    then:
14124cd7ecbSFrank Li      properties:
14224cd7ecbSFrank Li        interrupts:
14324cd7ecbSFrank Li          maxItems: 1
14424cd7ecbSFrank Li        interrupt-names:
14524cd7ecbSFrank Li          items:
14624cd7ecbSFrank Li            - const: aer
14724cd7ecbSFrank Li
14824cd7ecbSFrank LiunevaluatedProperties: false
14924cd7ecbSFrank Li
15024cd7ecbSFrank Liexamples:
15124cd7ecbSFrank Li  - |
15224cd7ecbSFrank Li    #include <dt-bindings/interrupt-controller/arm-gic.h>
15324cd7ecbSFrank Li
15424cd7ecbSFrank Li    soc {
15524cd7ecbSFrank Li      #address-cells = <2>;
15624cd7ecbSFrank Li      #size-cells = <2>;
15724cd7ecbSFrank Li
15824cd7ecbSFrank Li      pcie@3400000 {
15924cd7ecbSFrank Li        compatible = "fsl,ls1088a-pcie";
16024cd7ecbSFrank Li        reg = <0x00 0x03400000 0x0 0x00100000>, /* controller registers */
16124cd7ecbSFrank Li            <0x20 0x00000000 0x0 0x00002000>; /* configuration space */
16224cd7ecbSFrank Li        reg-names = "regs", "config";
16324cd7ecbSFrank Li        interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>; /* aer interrupt */
16424cd7ecbSFrank Li        interrupt-names = "aer";
16524cd7ecbSFrank Li        #address-cells = <3>;
16624cd7ecbSFrank Li        #size-cells = <2>;
16724cd7ecbSFrank Li        dma-coherent;
16824cd7ecbSFrank Li        device_type = "pci";
16924cd7ecbSFrank Li        bus-range = <0x0 0xff>;
17024cd7ecbSFrank Li        ranges = <0x81000000 0x0 0x00000000 0x20 0x00010000 0x0 0x00010000   /* downstream I/O */
17124cd7ecbSFrank Li                 0x82000000 0x0 0x40000000 0x20 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
17224cd7ecbSFrank Li        msi-parent = <&its>;
17324cd7ecbSFrank Li        #interrupt-cells = <1>;
17424cd7ecbSFrank Li        interrupt-map-mask = <0 0 0 7>;
17524cd7ecbSFrank Li        interrupt-map = <0000 0 0 1 &gic 0 0 0 109 IRQ_TYPE_LEVEL_HIGH>,
17624cd7ecbSFrank Li                        <0000 0 0 2 &gic 0 0 0 110 IRQ_TYPE_LEVEL_HIGH>,
17724cd7ecbSFrank Li                        <0000 0 0 3 &gic 0 0 0 111 IRQ_TYPE_LEVEL_HIGH>,
17824cd7ecbSFrank Li                        <0000 0 0 4 &gic 0 0 0 112 IRQ_TYPE_LEVEL_HIGH>;
17924cd7ecbSFrank Li        iommu-map = <0 &smmu 0 1>; /* Fixed-up by bootloader */
18024cd7ecbSFrank Li      };
18124cd7ecbSFrank Li    };
18224cd7ecbSFrank Li...
183