xref: /linux/Documentation/devicetree/bindings/pci/renesas,r9a08g045-pcie.yaml (revision 84318277d6334c6981ab326d4acc87c6a6ddc9b8)
1*e7534e79SClaudiu Beznea# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*e7534e79SClaudiu Beznea%YAML 1.2
3*e7534e79SClaudiu Beznea---
4*e7534e79SClaudiu Beznea$id: http://devicetree.org/schemas/pci/renesas,r9a08g045-pcie.yaml#
5*e7534e79SClaudiu Beznea$schema: http://devicetree.org/meta-schemas/core.yaml#
6*e7534e79SClaudiu Beznea
7*e7534e79SClaudiu Bezneatitle: Renesas RZ/G3S PCIe host controller
8*e7534e79SClaudiu Beznea
9*e7534e79SClaudiu Bezneamaintainers:
10*e7534e79SClaudiu Beznea  - Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
11*e7534e79SClaudiu Beznea
12*e7534e79SClaudiu Bezneadescription:
13*e7534e79SClaudiu Beznea  Renesas RZ/G3S PCIe host controller complies with PCIe Base Specification
14*e7534e79SClaudiu Beznea  4.0 and supports up to 5 GT/s (Gen2).
15*e7534e79SClaudiu Beznea
16*e7534e79SClaudiu Bezneaproperties:
17*e7534e79SClaudiu Beznea  compatible:
18*e7534e79SClaudiu Beznea    const: renesas,r9a08g045-pcie # RZ/G3S
19*e7534e79SClaudiu Beznea
20*e7534e79SClaudiu Beznea  reg:
21*e7534e79SClaudiu Beznea    maxItems: 1
22*e7534e79SClaudiu Beznea
23*e7534e79SClaudiu Beznea  interrupts:
24*e7534e79SClaudiu Beznea    items:
25*e7534e79SClaudiu Beznea      - description: System error interrupt
26*e7534e79SClaudiu Beznea      - description: System error on correctable error interrupt
27*e7534e79SClaudiu Beznea      - description: System error on non-fatal error interrupt
28*e7534e79SClaudiu Beznea      - description: System error on fatal error interrupt
29*e7534e79SClaudiu Beznea      - description: AXI error interrupt
30*e7534e79SClaudiu Beznea      - description: INTA interrupt
31*e7534e79SClaudiu Beznea      - description: INTB interrupt
32*e7534e79SClaudiu Beznea      - description: INTC interrupt
33*e7534e79SClaudiu Beznea      - description: INTD interrupt
34*e7534e79SClaudiu Beznea      - description: MSI interrupt
35*e7534e79SClaudiu Beznea      - description: Link bandwidth interrupt
36*e7534e79SClaudiu Beznea      - description: PME interrupt
37*e7534e79SClaudiu Beznea      - description: DMA interrupt
38*e7534e79SClaudiu Beznea      - description: PCIe event interrupt
39*e7534e79SClaudiu Beznea      - description: Message interrupt
40*e7534e79SClaudiu Beznea      - description: All interrupts
41*e7534e79SClaudiu Beznea
42*e7534e79SClaudiu Beznea  interrupt-names:
43*e7534e79SClaudiu Beznea    items:
44*e7534e79SClaudiu Beznea      - description: serr
45*e7534e79SClaudiu Beznea      - description: ser_cor
46*e7534e79SClaudiu Beznea      - description: serr_nonfatal
47*e7534e79SClaudiu Beznea      - description: serr_fatal
48*e7534e79SClaudiu Beznea      - description: axi_err
49*e7534e79SClaudiu Beznea      - description: inta
50*e7534e79SClaudiu Beznea      - description: intb
51*e7534e79SClaudiu Beznea      - description: intc
52*e7534e79SClaudiu Beznea      - description: intd
53*e7534e79SClaudiu Beznea      - description: msi
54*e7534e79SClaudiu Beznea      - description: link_bandwidth
55*e7534e79SClaudiu Beznea      - description: pm_pme
56*e7534e79SClaudiu Beznea      - description: dma
57*e7534e79SClaudiu Beznea      - description: pcie_evt
58*e7534e79SClaudiu Beznea      - description: msg
59*e7534e79SClaudiu Beznea      - description: all
60*e7534e79SClaudiu Beznea
61*e7534e79SClaudiu Beznea  interrupt-controller: true
62*e7534e79SClaudiu Beznea
63*e7534e79SClaudiu Beznea  clocks:
64*e7534e79SClaudiu Beznea    items:
65*e7534e79SClaudiu Beznea      - description: System clock
66*e7534e79SClaudiu Beznea      - description: PM control clock
67*e7534e79SClaudiu Beznea
68*e7534e79SClaudiu Beznea  clock-names:
69*e7534e79SClaudiu Beznea    items:
70*e7534e79SClaudiu Beznea      - description: aclk
71*e7534e79SClaudiu Beznea      - description: pm
72*e7534e79SClaudiu Beznea
73*e7534e79SClaudiu Beznea  resets:
74*e7534e79SClaudiu Beznea    items:
75*e7534e79SClaudiu Beznea      - description: AXI2PCIe Bridge reset
76*e7534e79SClaudiu Beznea      - description: Data link layer/transaction layer reset
77*e7534e79SClaudiu Beznea      - description: Transaction layer (ACLK domain) reset
78*e7534e79SClaudiu Beznea      - description: Transaction layer (PCLK domain) reset
79*e7534e79SClaudiu Beznea      - description: Physical layer reset
80*e7534e79SClaudiu Beznea      - description: Configuration register reset
81*e7534e79SClaudiu Beznea      - description: Configuration register reset
82*e7534e79SClaudiu Beznea
83*e7534e79SClaudiu Beznea  reset-names:
84*e7534e79SClaudiu Beznea    items:
85*e7534e79SClaudiu Beznea      - description: aresetn
86*e7534e79SClaudiu Beznea      - description: rst_b
87*e7534e79SClaudiu Beznea      - description: rst_gp_b
88*e7534e79SClaudiu Beznea      - description: rst_ps_b
89*e7534e79SClaudiu Beznea      - description: rst_rsm_b
90*e7534e79SClaudiu Beznea      - description: rst_cfg_b
91*e7534e79SClaudiu Beznea      - description: rst_load_b
92*e7534e79SClaudiu Beznea
93*e7534e79SClaudiu Beznea  power-domains:
94*e7534e79SClaudiu Beznea    maxItems: 1
95*e7534e79SClaudiu Beznea
96*e7534e79SClaudiu Beznea  dma-ranges:
97*e7534e79SClaudiu Beznea    description:
98*e7534e79SClaudiu Beznea      A single range for the inbound memory region.
99*e7534e79SClaudiu Beznea    maxItems: 1
100*e7534e79SClaudiu Beznea
101*e7534e79SClaudiu Beznea  renesas,sysc:
102*e7534e79SClaudiu Beznea    description: |
103*e7534e79SClaudiu Beznea      System controller registers control and monitor various PCIe
104*e7534e79SClaudiu Beznea      functionalities.
105*e7534e79SClaudiu Beznea
106*e7534e79SClaudiu Beznea      Control:
107*e7534e79SClaudiu Beznea      - transition to L1 state
108*e7534e79SClaudiu Beznea      - receiver termination settings
109*e7534e79SClaudiu Beznea      - RST_RSM_B signal
110*e7534e79SClaudiu Beznea
111*e7534e79SClaudiu Beznea      Monitor:
112*e7534e79SClaudiu Beznea      - clkl1pm clock request state
113*e7534e79SClaudiu Beznea      - power off information in L2 state
114*e7534e79SClaudiu Beznea      - errors (fatal, non-fatal, correctable)
115*e7534e79SClaudiu Beznea    $ref: /schemas/types.yaml#/definitions/phandle
116*e7534e79SClaudiu Beznea
117*e7534e79SClaudiu BezneapatternProperties:
118*e7534e79SClaudiu Beznea  "^pcie@0,[0-0]$":
119*e7534e79SClaudiu Beznea    type: object
120*e7534e79SClaudiu Beznea    allOf:
121*e7534e79SClaudiu Beznea      - $ref: /schemas/pci/pci-pci-bridge.yaml#
122*e7534e79SClaudiu Beznea
123*e7534e79SClaudiu Beznea    properties:
124*e7534e79SClaudiu Beznea      reg:
125*e7534e79SClaudiu Beznea        maxItems: 1
126*e7534e79SClaudiu Beznea
127*e7534e79SClaudiu Beznea      vendor-id:
128*e7534e79SClaudiu Beznea        const: 0x1912
129*e7534e79SClaudiu Beznea
130*e7534e79SClaudiu Beznea      device-id:
131*e7534e79SClaudiu Beznea        const: 0x0033
132*e7534e79SClaudiu Beznea
133*e7534e79SClaudiu Beznea      clocks:
134*e7534e79SClaudiu Beznea        items:
135*e7534e79SClaudiu Beznea          - description: Reference clock
136*e7534e79SClaudiu Beznea
137*e7534e79SClaudiu Beznea      clock-names:
138*e7534e79SClaudiu Beznea        items:
139*e7534e79SClaudiu Beznea          - const: ref
140*e7534e79SClaudiu Beznea
141*e7534e79SClaudiu Beznea    required:
142*e7534e79SClaudiu Beznea      - device_type
143*e7534e79SClaudiu Beznea      - vendor-id
144*e7534e79SClaudiu Beznea      - device-id
145*e7534e79SClaudiu Beznea      - clocks
146*e7534e79SClaudiu Beznea      - clock-names
147*e7534e79SClaudiu Beznea
148*e7534e79SClaudiu Beznea    unevaluatedProperties: false
149*e7534e79SClaudiu Beznea
150*e7534e79SClaudiu Beznearequired:
151*e7534e79SClaudiu Beznea  - compatible
152*e7534e79SClaudiu Beznea  - reg
153*e7534e79SClaudiu Beznea  - clocks
154*e7534e79SClaudiu Beznea  - clock-names
155*e7534e79SClaudiu Beznea  - resets
156*e7534e79SClaudiu Beznea  - reset-names
157*e7534e79SClaudiu Beznea  - interrupts
158*e7534e79SClaudiu Beznea  - interrupt-names
159*e7534e79SClaudiu Beznea  - interrupt-map
160*e7534e79SClaudiu Beznea  - interrupt-map-mask
161*e7534e79SClaudiu Beznea  - interrupt-controller
162*e7534e79SClaudiu Beznea  - power-domains
163*e7534e79SClaudiu Beznea  - "#address-cells"
164*e7534e79SClaudiu Beznea  - "#size-cells"
165*e7534e79SClaudiu Beznea  - "#interrupt-cells"
166*e7534e79SClaudiu Beznea  - renesas,sysc
167*e7534e79SClaudiu Beznea
168*e7534e79SClaudiu BezneaallOf:
169*e7534e79SClaudiu Beznea  - $ref: /schemas/pci/pci-host-bridge.yaml#
170*e7534e79SClaudiu Beznea
171*e7534e79SClaudiu BezneaunevaluatedProperties: false
172*e7534e79SClaudiu Beznea
173*e7534e79SClaudiu Bezneaexamples:
174*e7534e79SClaudiu Beznea  - |
175*e7534e79SClaudiu Beznea    #include <dt-bindings/clock/r9a08g045-cpg.h>
176*e7534e79SClaudiu Beznea    #include <dt-bindings/interrupt-controller/arm-gic.h>
177*e7534e79SClaudiu Beznea
178*e7534e79SClaudiu Beznea    bus {
179*e7534e79SClaudiu Beznea        #address-cells = <2>;
180*e7534e79SClaudiu Beznea        #size-cells = <2>;
181*e7534e79SClaudiu Beznea
182*e7534e79SClaudiu Beznea        pcie@11e40000 {
183*e7534e79SClaudiu Beznea            compatible = "renesas,r9a08g045-pcie";
184*e7534e79SClaudiu Beznea            reg = <0 0x11e40000 0 0x10000>;
185*e7534e79SClaudiu Beznea            ranges = <0x02000000 0 0x30000000 0 0x30000000 0 0x08000000>;
186*e7534e79SClaudiu Beznea            /* Map all possible DRAM ranges (4 GB). */
187*e7534e79SClaudiu Beznea            dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 1 0x00000000>;
188*e7534e79SClaudiu Beznea            bus-range = <0x0 0xff>;
189*e7534e79SClaudiu Beznea            interrupts = <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>,
190*e7534e79SClaudiu Beznea                         <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>,
191*e7534e79SClaudiu Beznea                         <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>,
192*e7534e79SClaudiu Beznea                         <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
193*e7534e79SClaudiu Beznea                         <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
194*e7534e79SClaudiu Beznea                         <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
195*e7534e79SClaudiu Beznea                         <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
196*e7534e79SClaudiu Beznea                         <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
197*e7534e79SClaudiu Beznea                         <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
198*e7534e79SClaudiu Beznea                         <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
199*e7534e79SClaudiu Beznea                         <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>,
200*e7534e79SClaudiu Beznea                         <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
201*e7534e79SClaudiu Beznea                         <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
202*e7534e79SClaudiu Beznea                         <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>,
203*e7534e79SClaudiu Beznea                         <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>,
204*e7534e79SClaudiu Beznea                         <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>;
205*e7534e79SClaudiu Beznea            interrupt-names = "serr", "serr_cor", "serr_nonfatal",
206*e7534e79SClaudiu Beznea                              "serr_fatal", "axi_err", "inta",
207*e7534e79SClaudiu Beznea                              "intb", "intc", "intd", "msi",
208*e7534e79SClaudiu Beznea                              "link_bandwidth", "pm_pme", "dma",
209*e7534e79SClaudiu Beznea                              "pcie_evt", "msg", "all";
210*e7534e79SClaudiu Beznea            #interrupt-cells = <1>;
211*e7534e79SClaudiu Beznea            interrupt-controller;
212*e7534e79SClaudiu Beznea            interrupt-map-mask = <0 0 0 7>;
213*e7534e79SClaudiu Beznea            interrupt-map = <0 0 0 1 &pcie 0 0 0 0>, /* INTA */
214*e7534e79SClaudiu Beznea                            <0 0 0 2 &pcie 0 0 0 1>, /* INTB */
215*e7534e79SClaudiu Beznea                            <0 0 0 3 &pcie 0 0 0 2>, /* INTC */
216*e7534e79SClaudiu Beznea                            <0 0 0 4 &pcie 0 0 0 3>; /* INTD */
217*e7534e79SClaudiu Beznea            clocks = <&cpg CPG_MOD R9A08G045_PCI_ACLK>,
218*e7534e79SClaudiu Beznea                     <&cpg CPG_MOD R9A08G045_PCI_CLKL1PM>;
219*e7534e79SClaudiu Beznea            clock-names = "aclk", "pm";
220*e7534e79SClaudiu Beznea            resets = <&cpg R9A08G045_PCI_ARESETN>,
221*e7534e79SClaudiu Beznea                     <&cpg R9A08G045_PCI_RST_B>,
222*e7534e79SClaudiu Beznea                     <&cpg R9A08G045_PCI_RST_GP_B>,
223*e7534e79SClaudiu Beznea                     <&cpg R9A08G045_PCI_RST_PS_B>,
224*e7534e79SClaudiu Beznea                     <&cpg R9A08G045_PCI_RST_RSM_B>,
225*e7534e79SClaudiu Beznea                     <&cpg R9A08G045_PCI_RST_CFG_B>,
226*e7534e79SClaudiu Beznea                     <&cpg R9A08G045_PCI_RST_LOAD_B>;
227*e7534e79SClaudiu Beznea            reset-names = "aresetn", "rst_b", "rst_gp_b", "rst_ps_b",
228*e7534e79SClaudiu Beznea                          "rst_rsm_b", "rst_cfg_b", "rst_load_b";
229*e7534e79SClaudiu Beznea            power-domains = <&cpg>;
230*e7534e79SClaudiu Beznea            device_type = "pci";
231*e7534e79SClaudiu Beznea            #address-cells = <3>;
232*e7534e79SClaudiu Beznea            #size-cells = <2>;
233*e7534e79SClaudiu Beznea            renesas,sysc = <&sysc>;
234*e7534e79SClaudiu Beznea
235*e7534e79SClaudiu Beznea            pcie@0,0 {
236*e7534e79SClaudiu Beznea                reg = <0x0 0x0 0x0 0x0 0x0>;
237*e7534e79SClaudiu Beznea                ranges;
238*e7534e79SClaudiu Beznea                clocks = <&versa3 5>;
239*e7534e79SClaudiu Beznea                clock-names = "ref";
240*e7534e79SClaudiu Beznea                device_type = "pci";
241*e7534e79SClaudiu Beznea                vendor-id = <0x1912>;
242*e7534e79SClaudiu Beznea                device-id = <0x0033>;
243*e7534e79SClaudiu Beznea                #address-cells = <3>;
244*e7534e79SClaudiu Beznea                #size-cells = <2>;
245*e7534e79SClaudiu Beznea            };
246*e7534e79SClaudiu Beznea        };
247*e7534e79SClaudiu Beznea    };
248*e7534e79SClaudiu Beznea
249*e7534e79SClaudiu Beznea...
250