1// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
2/*
3 * Device Tree file for Ctera C200-V2
4 *
5 * Copyright (C) 2022 Pawel Dembicki <paweldembicki@gmail.com>
6 */
7
8/dts-v1/;
9
10#include "armada-370.dtsi"
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/input/input.h>
13#include <dt-bindings/thermal/thermal.h>
14#include <dt-bindings/leds/common.h>
15
16/ {
17	model = "Ctera C200 V2";
18	compatible = "ctera,c200-v2", "marvell,armada370", "marvell,armada-370-xp";
19
20	chosen {
21		bootargs = "console=ttyS0,115200";
22		stdout-path = "serial0:115200n8";
23	};
24
25	memory {
26		device_type = "memory";
27		reg = <0x00000000 0x40000000>; /* 1024 MB */
28	};
29
30	soc {
31		ranges = <MBUS_ID(0xf0, 0x01) 0 0xd0000000 0x100000
32			  MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000
33			  MBUS_ID(0x09, 0x01) 0 0xf1100000 0x10000>;
34	};
35
36	thermal-zones {
37		ethphy-thermal {
38			polling-delay = <20000>;
39			polling-delay-passive = <2000>;
40
41			thermal-sensors = <&ethphy0>;
42
43			trips {
44				ethphy_alert1: trip1 {
45					temperature = <65000>;
46					hysteresis = <4000>;
47					type = "passive";
48				};
49
50				ethphy_crit: trip2 {
51					temperature = <100000>;
52					hysteresis = <2000>;
53					type = "critical";
54				};
55			};
56		};
57	};
58
59	beeper {
60		compatible = "pwm-beeper";
61		pinctrl-0 = <&pmx_beeper>;
62		pinctrl-names = "default";
63		pwms = <&gpio1 31 4000>;
64	};
65
66	gpio-poweroff {
67		compatible = "gpio-poweroff";
68		pinctrl-0 = <&pmx_poweroff>;
69		pinctrl-names = "default";
70		gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
71	};
72
73	keys {
74		compatible = "gpio-keys";
75		pinctrl-0 = <&pmx_buttons>;
76		pinctrl-names = "default";
77
78		power {
79			label = "Power Button";
80			linux,code = <KEY_POWER>;
81			gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
82		};
83
84		reset {
85			label = "Reset Button";
86			linux,code = <KEY_RESTART>;
87			gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
88		};
89
90		usb1 {
91			label = "USB1 Button";
92			linux,code = <BTN_0>;
93			gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
94		};
95
96		usb2 {
97			label = "USB2 Button";
98			linux,code = <BTN_1>;
99			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
100		};
101	};
102
103	leds {
104		compatible = "gpio-leds";
105		pinctrl-0 = <&pmx_leds1 &pmx_leds2>;
106		pinctrl-names = "default";
107
108		led-0 {
109			function = LED_FUNCTION_USB;
110			function-enumerator = <2>;
111			color = <LED_COLOR_ID_RED>;
112			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
113		};
114
115		led-1 {
116			function = LED_FUNCTION_USB;
117			function-enumerator = <2>;
118			color = <LED_COLOR_ID_GREEN>;
119			gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
120		};
121
122		led-2 {
123			function = LED_FUNCTION_USB;
124			function-enumerator = <1>;
125			color = <LED_COLOR_ID_RED>;
126			gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
127		};
128
129		led-3 {
130			function = LED_FUNCTION_USB;
131			function-enumerator = <1>;
132			color = <LED_COLOR_ID_GREEN>;
133			gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
134		};
135
136		led-4 {
137			function = LED_FUNCTION_DISK;
138			function-enumerator = <2>;
139			color = <LED_COLOR_ID_GREEN>;
140			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
141		};
142
143		led-5 {
144			function = LED_FUNCTION_DISK;
145			function-enumerator = <1>;
146			color = <LED_COLOR_ID_RED>;
147			gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
148		};
149
150		led-6 {
151			function = LED_FUNCTION_DISK;
152			function-enumerator = <2>;
153			color = <LED_COLOR_ID_RED>;
154			gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
155		};
156
157		led-7 {
158			function = LED_FUNCTION_INDICATOR;
159			color = <LED_COLOR_ID_BLUE>;
160			gpios = <&gpio1 20 GPIO_ACTIVE_HIGH>;
161		};
162
163		led-8 {
164			function = LED_FUNCTION_DISK_ERR;
165			color = <LED_COLOR_ID_RED>;
166			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
167		};
168
169		led-9 {
170			function = LED_FUNCTION_DISK_ERR;
171			color = <LED_COLOR_ID_GREEN>;
172			gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;
173		};
174
175		led-10 {
176			function = LED_FUNCTION_STATUS;
177			color = <LED_COLOR_ID_RED>;
178			gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
179		};
180
181		led-11 {
182			function = LED_FUNCTION_DISK;
183			function-enumerator = <1>;
184			color = <LED_COLOR_ID_GREEN>;
185			gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
186		};
187
188		led-12 {
189			function = LED_FUNCTION_STATUS;
190			color = <LED_COLOR_ID_GREEN>;
191			gpios = <&gpio1 26 GPIO_ACTIVE_LOW>;
192		};
193	};
194};
195
196&coherencyfab {
197	broken-idle;
198};
199
200&eth1 {
201	pinctrl-0 = <&ge1_rgmii_pins>;
202	pinctrl-names = "default";
203	status = "okay";
204	phy-handle = <&ethphy0>;
205	phy-connection-type = "rgmii-id";
206};
207
208&i2c0 {
209	pinctrl-0 = <&i2c0_pins>;
210	pinctrl-names = "default";
211	clock-frequency = <100000>;
212	status = "okay";
213
214	hwmon@2a {
215		compatible = "nuvoton,nct7802";
216		reg = <0x2a>;
217	};
218
219	rtc@30 {
220		compatible = "sii,s35390a";
221		reg = <0x30>;
222	};
223};
224
225&mdio {
226	pinctrl-0 = <&mdio_pins>;
227	pinctrl-names = "default";
228
229	ethphy0: ethernet-phy@0 { /* Marvell 88E1318 */
230		reg = <0>;
231		#thermal-sensor-cells = <0>;
232	};
233};
234
235&nand_controller {
236	status = "okay";
237
238	nand@0 {
239		reg = <0>;
240		label = "pxa3xx_nand-0";
241		nand-rb = <0>;
242		marvell,nand-keep-config;
243		nand-on-flash-bbt;
244		nand-ecc-strength = <4>;
245		nand-ecc-step-size = <512>;
246
247		partitions {
248			compatible = "fixed-partitions";
249			#address-cells = <1>;
250			#size-cells = <1>;
251
252			partition@0 {
253				label = "uboot";
254				reg = <0x0000000 0x200000>;
255				read-only;
256			};
257
258			partition@200000 {
259				label = "certificate";
260				reg = <0x0200000 0x100000>;
261				read-only;
262			};
263
264			partition@300000 {
265				label = "preset_cfg";
266				reg = <0x0300000 0x100000>;
267				read-only;
268			};
269
270			partition@400000 {
271				label = "dev_params";
272				reg = <0x0400000 0x100000>;
273				read-only;
274			};
275			partition@500000 {
276				label = "active_bank";
277				reg = <0x0500000 0x0100000>;
278			};
279
280			partition@600000 {
281				label = "magic";
282				reg = <0x0600000 0x0100000>;
283				read-only;
284			};
285
286			partition@700000 {
287				label = "bank1";
288				reg = <0x0700000 0x2800000>;
289			};
290
291			partition@2f00000 {
292				label = "bank2";
293				reg = <0x2f00000 0x2800000>;
294			};
295
296			/* 0x5700000-0x5a00000 undefined in vendor firmware */
297
298			partition@5a00000 {
299				label = "reserved";
300				reg = <0x5a00000 0x2000000>;
301			};
302
303			partition@7a00000 {
304				label = "rootfs";
305				reg = <0x7a00000 0x8600000>;
306			};
307		};
308	};
309};
310
311&pciec {
312	status = "okay";
313
314	pcie@1,0 { /* Renesas uPD720202 USB 3.0 controller */
315		pinctrl-0 = <&pmx_pcie>;
316		pinctrl-names = "default";
317		status = "okay";
318		reset-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
319	};
320};
321
322&pinctrl {
323	pmx_poweroff: pmx-poweroff {
324		marvell,pins = "mpp7";
325		marvell,function = "gpo";
326	};
327
328	pmx_power_cpu: pmx-power-cpu {
329		marvell,pins = "mpp4";
330		marvell,function = "vdd";
331	};
332
333	pmx_buttons: pmx-buttons {
334		marvell,pins = "mpp6", "mpp10", "mpp14", "mpp32";
335		marvell,function = "gpio";
336	};
337
338	pmx_leds1: pmx-leds1 {
339		marvell,pins = "mpp47";
340		marvell,function = "gpo";
341	};
342
343	pmx_leds2: pmx-leds2 {
344		marvell,pins = "mpp12", "mpp13", "mpp15", "mpp16", "mpp50", "mpp51",
345			       "mpp52", "mpp53", "mpp55", "mpp56", "mpp57", "mpp58";
346		marvell,function = "gpio";
347	};
348
349	pmx_pcie: pmx-pcie {
350		marvell,pins = "mpp59";
351		marvell,function = "gpio";
352	};
353
354	pmx_beeper: pmx-beeper {
355		marvell,pins = "mpp63";
356		marvell,function = "gpio";
357	};
358};
359
360&pmsu {
361	pinctrl-0 = <&pmx_power_cpu>;
362	pinctrl-names = "default";
363};
364
365&rtc {
366	status = "disabled";
367};
368
369&sata {
370	nr-ports = <2>;
371	status = "okay";
372	#address-cells = <1>;
373	#size-cells = <0>;
374
375	hdd0_temp: sata-port@0 {
376		reg = <0>;
377		#thermal-sensor-cells = <0>;
378	};
379
380	hdd1_temp: sata-port@1 {
381		reg = <1>;
382		#thermal-sensor-cells = <0>;
383	};
384};
385
386&uart0 {
387	status = "okay";
388};
389