xref: /freebsd/sys/contrib/device-tree/Bindings/pci/fsl,layerscape-pcie.yaml (revision 7d0873ebb83b19ba1e8a89e679470d885efe12e3)
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