blob: 044fa967bc8b6ebb53970645f2a15d59ffee9283 [file] [log] [blame]
Sergio Paracuellos27cee7d2021-09-22 07:00:33 +02001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pci/mediatek,mt7621-pcie.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: MediaTek MT7621 PCIe controller
8
9maintainers:
10 - Sergio Paracuellos <sergio.paracuellos@gmail.com>
11
12description: |+
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
15
16allOf:
17 - $ref: /schemas/pci/pci-bus.yaml#
18
19properties:
20 compatible:
21 const: mediatek,mt7621-pci
22
23 reg:
24 items:
25 - description: host-pci bridge registers
26 - description: pcie port 0 RC control registers
27 - description: pcie port 1 RC control registers
28 - description: pcie port 2 RC control registers
29
30 ranges:
31 maxItems: 2
32
33patternProperties:
34 'pcie@[0-2],0':
35 type: object
36 $ref: /schemas/pci/pci-bus.yaml#
37
38 properties:
39 resets:
40 maxItems: 1
41
42 clocks:
43 maxItems: 1
44
45 phys:
46 maxItems: 1
47
48 required:
49 - "#interrupt-cells"
50 - interrupt-map-mask
51 - interrupt-map
52 - resets
53 - clocks
54 - phys
55 - phy-names
56 - ranges
57
58 unevaluatedProperties: false
59
60required:
61 - compatible
62 - reg
63 - ranges
64 - "#interrupt-cells"
65 - interrupt-map-mask
66 - interrupt-map
67 - reset-gpios
68
69unevaluatedProperties: false
70
71examples:
72 - |
73 #include <dt-bindings/gpio/gpio.h>
74 #include <dt-bindings/interrupt-controller/mips-gic.h>
75
76 pcie: pcie@1e140000 {
77 compatible = "mediatek,mt7621-pci";
78 reg = <0x1e140000 0x100>,
79 <0x1e142000 0x100>,
80 <0x1e143000 0x100>,
81 <0x1e144000 0x100>;
82
83 #address-cells = <3>;
84 #size-cells = <2>;
85 pinctrl-names = "default";
86 pinctrl-0 = <&pcie_pins>;
87 device_type = "pci";
88 ranges = <0x02000000 0 0x60000000 0x60000000 0 0x10000000>, /* pci memory */
89 <0x01000000 0 0x1e160000 0x1e160000 0 0x00010000>; /* io space */
90 #interrupt-cells = <1>;
91 interrupt-map-mask = <0xF800 0 0 0>;
92 interrupt-map = <0x0000 0 0 0 &gic GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>,
93 <0x0800 0 0 0 &gic GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>,
94 <0x1000 0 0 0 &gic GIC_SHARED 25 IRQ_TYPE_LEVEL_HIGH>;
95 reset-gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
96
97 pcie@0,0 {
98 reg = <0x0000 0 0 0 0>;
99 #address-cells = <3>;
100 #size-cells = <2>;
101 device_type = "pci";
102 #interrupt-cells = <1>;
103 interrupt-map-mask = <0 0 0 0>;
104 interrupt-map = <0 0 0 0 &gic GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>;
105 resets = <&rstctrl 24>;
106 clocks = <&clkctrl 24>;
107 phys = <&pcie0_phy 1>;
108 phy-names = "pcie-phy0";
109 ranges;
110 };
111
112 pcie@1,0 {
113 reg = <0x0800 0 0 0 0>;
114 #address-cells = <3>;
115 #size-cells = <2>;
116 device_type = "pci";
117 #interrupt-cells = <1>;
118 interrupt-map-mask = <0 0 0 0>;
119 interrupt-map = <0 0 0 0 &gic GIC_SHARED 24 IRQ_TYPE_LEVEL_HIGH>;
120 resets = <&rstctrl 25>;
121 clocks = <&clkctrl 25>;
122 phys = <&pcie0_phy 1>;
123 phy-names = "pcie-phy1";
124 ranges;
125 };
126
127 pcie@2,0 {
128 reg = <0x1000 0 0 0 0>;
129 #address-cells = <3>;
130 #size-cells = <2>;
131 device_type = "pci";
132 #interrupt-cells = <1>;
133 interrupt-map-mask = <0 0 0 0>;
134 interrupt-map = <0 0 0 0 &gic GIC_SHARED 25 IRQ_TYPE_LEVEL_HIGH>;
135 resets = <&rstctrl 26>;
136 clocks = <&clkctrl 26>;
137 phys = <&pcie2_phy 0>;
138 phy-names = "pcie-phy2";
139 ranges;
140 };
141 };
142...