1// SPDX-License-Identifier: GPL-2.0
2#include "qcom-ipq8064.dtsi"
3#include <dt-bindings/input/input.h>
4
5/ {
6	model = "MikroTik RB3011UiAS-RM";
7	compatible = "mikrotik,rb3011";
8
9	aliases {
10		serial0 = &gsbi7_serial;
11		ethernet0 = &gmac0;
12		ethernet1 = &gmac3;
13		mdio-gpio0 = &mdio0;
14		mdio-gpio1 = &mdio1;
15	};
16
17	chosen {
18		bootargs = "loglevel=8 console=ttyMSM0,115200";
19		stdout-path = "serial0:115200n8";
20	};
21
22	memory@0 {
23		reg = <0x42000000 0x3e000000>;
24		device_type = "memory";
25	};
26
27	mdio0: mdio@0 {
28		status = "okay";
29		compatible = "virtual,mdio-gpio";
30		gpios = <&qcom_pinmux 1 GPIO_ACTIVE_HIGH>,
31			<&qcom_pinmux 0 GPIO_ACTIVE_HIGH>;
32		#address-cells = <1>;
33		#size-cells = <0>;
34
35		pinctrl-0 = <&mdio0_pins>;
36		pinctrl-names = "default";
37
38		switch0: switch@10 {
39			compatible = "qca,qca8337";
40			#address-cells = <1>;
41			#size-cells = <0>;
42
43			dsa,member = <0 0>;
44
45			pinctrl-0 = <&sw0_reset_pin>;
46			pinctrl-names = "default";
47
48			reset-gpios = <&qcom_pinmux 16 GPIO_ACTIVE_LOW>;
49			reg = <0x10>;
50
51			ports {
52				#address-cells = <1>;
53				#size-cells = <0>;
54
55				switch0cpu: port@0 {
56					reg = <0>;
57					label = "cpu";
58					ethernet = <&gmac0>;
59					phy-mode = "rgmii-id";
60					fixed-link {
61						speed = <1000>;
62						full-duplex;
63					};
64				};
65
66				port@1 {
67					reg = <1>;
68					label = "sw1";
69				};
70
71				port@2 {
72					reg = <2>;
73					label = "sw2";
74				};
75
76				port@3 {
77					reg = <3>;
78					label = "sw3";
79				};
80
81				port@4 {
82					reg = <4>;
83					label = "sw4";
84				};
85
86				port@5 {
87					reg = <5>;
88					label = "sw5";
89				};
90			};
91		};
92	};
93
94	mdio1: mdio@1 {
95		status = "okay";
96		compatible = "virtual,mdio-gpio";
97		gpios = <&qcom_pinmux 11 GPIO_ACTIVE_HIGH>,
98			<&qcom_pinmux 10 GPIO_ACTIVE_HIGH>;
99		#address-cells = <1>;
100		#size-cells = <0>;
101
102		pinctrl-0 = <&mdio1_pins>;
103		pinctrl-names = "default";
104
105		switch1: switch@14 {
106			compatible = "qca,qca8337";
107			#address-cells = <1>;
108			#size-cells = <0>;
109
110			dsa,member = <1 0>;
111
112			pinctrl-0 = <&sw1_reset_pin>;
113			pinctrl-names = "default";
114
115			reset-gpios = <&qcom_pinmux 17 GPIO_ACTIVE_LOW>;
116			reg = <0x10>;
117
118			ports {
119				#address-cells = <1>;
120				#size-cells = <0>;
121
122				switch1cpu: port@0 {
123					reg = <0>;
124					label = "cpu";
125					ethernet = <&gmac3>;
126					phy-mode = "sgmii";
127					fixed-link {
128						speed = <1000>;
129						full-duplex;
130					};
131				};
132
133				port@1 {
134					reg = <1>;
135					label = "sw6";
136				};
137
138				port@2 {
139					reg = <2>;
140					label = "sw7";
141				};
142
143				port@3 {
144					reg = <3>;
145					label = "sw8";
146				};
147
148				port@4 {
149					reg = <4>;
150					label = "sw9";
151				};
152
153				port@5 {
154					reg = <5>;
155					label = "sw10";
156				};
157			};
158		};
159	};
160
161	soc {
162		gsbi5: gsbi@1a200000 {
163			qcom,mode = <GSBI_PROT_SPI>;
164			status = "okay";
165
166			spi4: spi@1a280000 {
167				status = "okay";
168				spi-max-frequency = <50000000>;
169
170				pinctrl-0 = <&spi_pins>;
171				pinctrl-names = "default";
172
173				cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
174
175				norflash: s25fl016k@0 {
176					compatible = "jedec,spi-nor";
177					#address-cells = <1>;
178					#size-cells = <1>;
179					spi-max-frequency = <50000000>;
180					reg = <0>;
181
182					partition@0 {
183						label = "RouterBoot";
184						reg = <0x0 0x40000>;
185					};
186				};
187			};
188		};
189
190		gpio_keys {
191			compatible = "gpio-keys";
192			pinctrl-0 = <&buttons_pins>;
193			pinctrl-names = "default";
194
195			button@1 {
196				label = "reset";
197				linux,code = <KEY_RESTART>;
198				gpios = <&qcom_pinmux 66 GPIO_ACTIVE_LOW>;
199				linux,input-type = <1>;
200				debounce-interval = <60>;
201			};
202		};
203
204		leds {
205			compatible = "gpio-leds";
206			pinctrl-0 = <&leds_pins>;
207			pinctrl-names = "default";
208
209			led@7 {
210				label = "rb3011:green:user";
211				gpios = <&qcom_pinmux 33 GPIO_ACTIVE_HIGH>;
212				default-state = "off";
213			};
214		};
215
216	};
217};
218
219&gmac0 {
220	status = "okay";
221
222	phy-mode = "rgmii";
223	qcom,id = <0>;
224	phy-handle = <&switch0cpu>;
225
226	fixed-link {
227		speed = <1000>;
228		full-duplex;
229	};
230};
231
232&gmac3 {
233	status = "okay";
234
235	phy-mode = "sgmii";
236	qcom,id = <3>;
237	phy-handle = <&switch1cpu>;
238
239	fixed-link {
240		speed = <1000>;
241		full-duplex;
242	};
243};
244
245&gsbi7 {
246	status = "okay";
247	qcom,mode = <GSBI_PROT_I2C_UART>;
248};
249
250&gsbi7_serial {
251	status = "okay";
252};
253
254&qcom_pinmux {
255	buttons_pins: buttons_pins {
256		mux {
257			pins = "gpio66";
258			drive-strength = <16>;
259			bias-disable;
260		};
261	};
262
263	leds_pins: leds_pins {
264		mux {
265			pins = "gpio33";
266			drive-strength = <16>;
267			bias-disable;
268		};
269	};
270
271	mdio0_pins: mdio0_pins {
272		mux {
273			pins = "gpio0", "gpio1";
274			function = "gpio";
275			drive-strength = <8>;
276			bias-disable;
277		};
278	};
279
280	mdio1_pins: mdio1_pins {
281		mux {
282			pins = "gpio10", "gpio11";
283			function = "gpio";
284			drive-strength = <8>;
285			bias-disable;
286		};
287	};
288
289	sw0_reset_pin: sw0_reset_pin {
290		mux {
291			pins = "gpio16";
292			drive-strength = <16>;
293			function = "gpio";
294			bias-disable;
295			input-disable;
296		};
297	};
298
299	sw1_reset_pin: sw1_reset_pin {
300		mux {
301			pins = "gpio17";
302			drive-strength = <16>;
303			function = "gpio";
304			bias-disable;
305			input-disable;
306		};
307	};
308};
309