1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/pci/mediatek-pcie-gen3.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Gen3 PCIe controller on MediaTek SoCs
10 - Jianjun Wang <jianjun.wang@mediatek.com>
13 PCIe Gen3 MAC controller for MediaTek SoCs, it supports Gen3 speed
14 and compatible with Gen2, Gen1 speed.
16 This PCIe controller supports up to 256 MSI vectors, the MSI hardware
17 block diagram is as follows:
27 |0|1|2|3|4|5|6|7| (PCIe intc)
31 +-------+ +------+ +-----------+
33 +-+-+---+--+--+ +-+-+---+--+--+ +-+-+---+--+--+
34 |0|1|...|30|31| |0|1|...|30|31| |0|1|...|30|31| (MSI sets)
35 +-+-+---+--+--+ +-+-+---+--+--+ +-+-+---+--+--+
36 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
37 | | | | | | | | | | | | (MSI vectors)
38 | | | | | | | | | | | |
40 (MSI SET0) (MSI SET1) ... (MSI SET7)
42 With 256 MSI vectors supported, the MSI vectors are composed of 8 sets,
43 each set has its own address for MSI message, and supports 32 MSI vectors
44 to generate interrupt.
51 - mediatek,mt7986-pcie
52 - mediatek,mt8188-pcie
53 - mediatek,mt8195-pcie
54 - const: mediatek,mt8192-pcie
55 - const: mediatek,mt8192-pcie
98 assigned-clock-parents:
114 interrupt-controller:
115 description: Interrupt controller node for handling legacy PCI interrupts.
122 interrupt-controller: true
127 - interrupt-controller
129 additionalProperties: false
140 - interrupt-controller
143 - $ref: /schemas/pci/pci-bus.yaml#
147 const: mediatek,mt8192-pcie
163 - mediatek,mt8188-pcie
164 - mediatek,mt8195-pcie
180 - mediatek,mt7986-pcie
190 unevaluatedProperties: false
194 #include <dt-bindings/interrupt-controller/arm-gic.h>
195 #include <dt-bindings/interrupt-controller/irq.h>
198 #address-cells = <2>;
201 pcie: pcie@11230000 {
202 compatible = "mediatek,mt8192-pcie";
204 #address-cells = <3>;
206 reg = <0x00 0x11230000 0x00 0x4000>;
207 reg-names = "pcie-mac";
208 interrupts = <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH 0>;
209 bus-range = <0x00 0xff>;
210 ranges = <0x82000000 0x00 0x12000000 0x00
211 0x12000000 0x00 0x1000000>;
212 clocks = <&infracfg 44>,
218 clock-names = "pl_250m", "tl_26m", "tl_96m",
219 "tl_32k", "peri_26m", "top_133m";
220 assigned-clocks = <&topckgen 50>;
221 assigned-clock-parents = <&topckgen 91>;
224 phy-names = "pcie-phy";
226 resets = <&infracfg_rst 2>,
228 reset-names = "phy", "mac";
230 #interrupt-cells = <1>;
231 interrupt-map-mask = <0 0 0 0x7>;
232 interrupt-map = <0 0 0 1 &pcie_intc 0>,
233 <0 0 0 2 &pcie_intc 1>,
234 <0 0 0 3 &pcie_intc 2>,
235 <0 0 0 4 &pcie_intc 3>;
236 pcie_intc: interrupt-controller {
237 #address-cells = <0>;
238 #interrupt-cells = <1>;
239 interrupt-controller;