1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * ZyXEL NSA310S Board Description
4 * Copyright 2020-2022 Pawel Dembicki <paweldembicki@gmail.com>
5 * Copyright (c) 2015-2021, Tony Dinh <mibodhi@gmail.com>
6 * Copyright (c) 2014, Adam Baker <linux@baker-net.org.uk>
7 * Based upon the board setup file created by Peter Schildmann
8 */
9/dts-v1/;
10
11#include "kirkwood.dtsi"
12#include "kirkwood-6281.dtsi"
13#include <dt-bindings/leds/common.h>
14
15/ {
16	model = "ZyXEL NSA310S";
17	compatible = "zyxel,nsa310s", "marvell,kirkwood-88f6702", "marvell,kirkwood";
18
19	memory {
20		device_type = "memory";
21		reg = <0x00000000 0x10000000>;
22	};
23
24	chosen {
25		bootargs = "console=ttyS0,115200n8 earlyprintk";
26		stdout-path = &uart0;
27	};
28
29	gpio_poweroff {
30		compatible = "gpio-poweroff";
31		pinctrl-0 = <&pmx_pwr_off>;
32		pinctrl-names = "default";
33		gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
34	};
35
36	keys {
37		compatible = "gpio-keys";
38		#address-cells = <1>;
39		#size-cells = <0>;
40		pinctrl-0 = <&pmx_buttons>;
41		pinctrl-names = "default";
42
43		power {
44			label = "Power Button";
45			linux,code = <KEY_POWER>;
46			gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
47		};
48
49		copy {
50			label = "Copy Button";
51			linux,code = <KEY_COPY>;
52			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
53		};
54
55		reset {
56			label = "Reset Button";
57			linux,code = <KEY_RESTART>;
58			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
59		};
60	};
61
62	leds {
63		compatible = "gpio-leds";
64		pinctrl-0 = <&pmx_leds>;
65		pinctrl-names = "default";
66
67		led-1 {
68			function = LED_FUNCTION_DISK_ERR;
69			color = <LED_COLOR_ID_RED>;
70			gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
71		};
72
73		led-2 {
74			function = LED_FUNCTION_USB;
75			color = <LED_COLOR_ID_GREEN>;
76			gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
77			linux,default-trigger = "usb-host";
78		};
79
80		led-3 {
81			function = LED_FUNCTION_DISK;
82			color = <LED_COLOR_ID_GREEN>;
83			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
84			linux,default-trigger = "ata1";
85		};
86
87		led-4 {
88			function = LED_FUNCTION_INDICATOR;
89			color = <LED_COLOR_ID_GREEN>;
90			gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
91		};
92
93		led-5 {
94			function = LED_FUNCTION_INDICATOR;
95			color = <LED_COLOR_ID_RED>;
96			gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
97		};
98
99		led-6 {
100			function = LED_FUNCTION_STATUS;
101			color = <LED_COLOR_ID_GREEN>;
102			gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
103			linux,default-trigger = "default-on";
104		};
105
106		led-7 {
107			function = LED_FUNCTION_STATUS;
108			color = <LED_COLOR_ID_RED>;
109			gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
110		};
111	};
112
113	usb0_power: regulator@1 {
114		compatible = "regulator-fixed";
115		regulator-name = "USB Power";
116
117		regulator-min-microvolt = <5000000>;
118		regulator-max-microvolt = <5000000>;
119		regulator-always-on;
120		regulator-boot-on;
121		gpio = <&gpio0 21 GPIO_ACTIVE_HIGH>;
122	};
123
124	sata1_power: regulator@2 {
125		compatible = "regulator-fixed";
126		regulator-name = "SATA1 Power";
127
128		regulator-min-microvolt = <5000000>;
129		regulator-max-microvolt = <5000000>;
130		regulator-always-on;
131		regulator-boot-on;
132		gpio = <&gpio1 1 GPIO_ACTIVE_HIGH>;
133	};
134
135	thermal-zones {
136		disk-thermal {
137			polling-delay = <20000>;
138			polling-delay-passive = <2000>;
139
140			thermal-sensors = <&hdd_temp>;
141
142			trips {
143				disk_alert: disk-alert {
144					temperature = <40000>;
145					hysteresis = <5000>;
146					type = "active";
147				};
148				disk_crit: disk-crit {
149					temperature = <60000>;
150					hysteresis = <2000>;
151					type = "critical";
152				};
153			};
154		};
155	};
156};
157
158
159&eth0 {
160	status = "okay";
161
162	ethernet0-port@0 {
163		phy-handle = <&ethphy0>;
164	};
165};
166
167&i2c0 {
168	status = "okay";
169
170	rtc@68 {
171		compatible = "htk,ht1382";
172		reg = <0x68>;
173	};
174};
175
176&mdio {
177	status = "okay";
178
179	ethphy0: ethernet-phy@1 {
180		reg = <1>;
181		phy-mode = "rgmii-id";
182		marvell,reg-init = <0x1 0x16 0x0 0x3>,
183				   <0x1 0x10 0x0 0x1017>,
184				   <0x1 0x11 0x0 0x4408>,
185				   <0x1 0x16 0x0 0x0>;
186	};
187};
188
189&nand {
190	status = "okay";
191	chip-delay = <35>;
192
193	partition@0 {
194		label = "uboot";
195		reg = <0x0000000 0x00c0000>;
196		read-only;
197	};
198	partition@c0000 {
199		label = "uboot_env";
200		reg = <0x00c0000 0x0080000>;
201	};
202	partition@140000 {
203		label = "ubi";
204		reg = <0x0140000 0x7ec0000>;
205	};
206};
207
208&pciec {
209	status = "okay";
210};
211
212&pcie0 {
213	status = "okay";
214};
215
216&pinctrl {
217	pinctrl-names = "default";
218
219	pmx_buttons: pmx-buttons {
220		marvell,pins = "mpp24", "mpp25", "mpp26";
221		marvell,function = "gpio";
222	};
223
224	pmx_leds: pmx-leds {
225		marvell,pins = "mpp13", "mpp15", "mpp16", "mpp22", "mpp23",
226						"mpp28", "mpp29";
227		marvell,function = "gpio";
228	};
229
230	pmx_power: pmx-power {
231		marvell,pins = "mpp21", "mpp33";
232		marvell,function = "gpio";
233	};
234
235	pmx_pwr_off: pmx-pwr-off {
236		marvell,pins = "mpp27";
237		marvell,function = "gpio";
238	};
239};
240
241&rtc {
242	status = "disabled";
243};
244
245&sata {
246	status = "okay";
247	nr-ports = <1>;
248	#address-cells = <1>;
249	#size-cells = <0>;
250
251	hdd_temp: sata-port@0 {
252		reg = <0>;
253		#thermal-sensor-cells = <0>;
254	};
255};
256
257&uart0 {
258	status = "okay";
259};
260