1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/pci/mediatek,mt7621-pcie.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: MediaTek MT7621 PCIe controller
10 - Sergio Paracuellos <sergio.paracuellos@gmail.com>
13 MediaTek MT7621 PCIe subsys supports a single Root Complex (RC)
14 with 3 Root Ports. Each Root Port supports a Gen1 1-lane Link
16 MT7621 PCIe HOST Topology
28 .-----------| HOST/PCI Bridge |------------.
29 | '------------------' | Type1
32 .-------------. .-------------. .-------------.
33 | VIRTUAL P2P | | VIRTUAL P2P | | VIRTUAL P2P |
34 | BUS0 | | BUS0 | | BUS0 |
35 | DEV0 | | DEV1 | | DEV2 |
36 '-------------' '-------------' '-------------'
37 Type0 | Type0 | Type0 |
38 Access BUS1 | Access BUS2| Access BUS3|
39 On Bus1 v On Bus2 v On Bus3 v
40 .----------. .----------. .----------.
41 | Device 0 | | Device 0 | | Device 0 |
42 | Func 0 | | Func 0 | | Func 0 |
43 '----------' '----------' '----------'
46 - $ref: /schemas/pci/pci-host-bridge.yaml#
50 const: mediatek,mt7621-pci
54 - description: host-pci bridge registers
55 - description: pcie port 0 RC control registers
56 - description: pcie port 1 RC control registers
57 - description: pcie port 2 RC control registers
65 $ref: /schemas/pci/pci-pci-bridge.yaml#
81 pattern: '^pcie-phy[0-2]$'
93 unevaluatedProperties: false
104 unevaluatedProperties: false
108 #include <dt-bindings/gpio/gpio.h>
109 #include <dt-bindings/interrupt-controller/mips-gic.h>
111 pcie: pcie@1e140000 {
112 compatible = "mediatek,mt7621-pci";
113 reg = <0x1e140000 0x100>,
118 #address-cells = <3>;
120 pinctrl-names = "default";
121 pinctrl-0 = <&pcie_pins>;
123 ranges = <0x02000000 0 0x60000000 0x60000000 0 0x10000000>, /* pci memory */
124 <0x01000000 0 0x1e160000 0x1e160000 0 0x00010000>; /* io space */
125 #interrupt-cells = <1>;
126 interrupt-map-mask = <0xF800 0 0 0>;
127 interrupt-map = <0x0000 0 0 0 &gic GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>,
128 <0x0800 0 0 0 &gic GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>,
129 <0x1000 0 0 0 &gic GIC_SHARED 25 IRQ_TYPE_LEVEL_HIGH>;
130 reset-gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
133 reg = <0x0000 0 0 0 0>;
134 #address-cells = <3>;
137 #interrupt-cells = <1>;
138 interrupt-map-mask = <0 0 0 0>;
139 interrupt-map = <0 0 0 0 &gic GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>;
140 resets = <&rstctrl 24>;
141 clocks = <&clkctrl 24>;
142 phys = <&pcie0_phy 1>;
143 phy-names = "pcie-phy0";
148 reg = <0x0800 0 0 0 0>;
149 #address-cells = <3>;
152 #interrupt-cells = <1>;
153 interrupt-map-mask = <0 0 0 0>;
154 interrupt-map = <0 0 0 0 &gic GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>;
155 resets = <&rstctrl 25>;
156 clocks = <&clkctrl 25>;
157 phys = <&pcie0_phy 1>;
158 phy-names = "pcie-phy1";
163 reg = <0x1000 0 0 0 0>;
164 #address-cells = <3>;
167 #interrupt-cells = <1>;
168 interrupt-map-mask = <0 0 0 0>;
169 interrupt-map = <0 0 0 0 &gic GIC_SHARED 25 IRQ_TYPE_LEVEL_HIGH>;
170 resets = <&rstctrl 26>;
171 clocks = <&clkctrl 26>;
172 phys = <&pcie2_phy 0>;
173 phy-names = "pcie-phy2";