1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree file for D-Link DNS-313 1-Bay Network Storage Enclosure
4 */
5
6/dts-v1/;
7
8#include "gemini.dtsi"
9#include <dt-bindings/input/input.h>
10#include <dt-bindings/thermal/thermal.h>
11
12/ {
13	model = "D-Link DNS-313 1-Bay Network Storage Enclosure";
14	compatible = "dlink,dns-313", "cortina,gemini";
15	#address-cells = <1>;
16	#size-cells = <1>;
17
18	memory@0 {
19		/* 64 MB SDRAM in a Nanya NT5DS32M16BS-6K package */
20		device_type = "memory";
21		reg = <0x00000000 0x4000000>;
22	};
23
24	aliases {
25		mdio-gpio0 = &mdio0;
26	};
27
28	chosen {
29		bootargs = "console=ttyS0,19200n8 root=/dev/sda4 rw rootwait";
30		stdout-path = "uart0:19200n8";
31	};
32
33	gpio_keys {
34		compatible = "gpio-keys";
35
36		button-esc {
37			debounce-interval = <100>;
38			wakeup-source;
39			linux,code = <KEY_ESC>;
40			label = "reset";
41			gpios = <&gpio1 31 GPIO_ACTIVE_LOW>;
42		};
43	};
44
45	leds {
46		compatible = "gpio-leds";
47		led-power {
48			label = "dns313:blue:power";
49			gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
50			default-state = "on";
51			linux,default-trigger = "heartbeat";
52		};
53		led-disk-blue {
54			label = "dns313:blue:disk";
55			gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
56			default-state = "off";
57		};
58		led-disk-green {
59			label = "dns313:green:disk";
60			gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
61			default-state = "off";
62			linux,default-trigger = "disk-read";
63		};
64		led-disk-red {
65			label = "dns313:red:disk";
66			gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
67			default-state = "off";
68			linux,default-trigger = "disk-write";
69		};
70	};
71
72	/*
73	 * This is a ADDA AD0405GB-G73 fan @3000 and 6000 RPM.
74	 */
75	fan0: gpio-fan {
76		compatible = "gpio-fan";
77		gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>,
78			<&gpio0 12 GPIO_ACTIVE_HIGH>;
79		gpio-fan,speed-map = <0 0>, <3000 1>, <6000 2>;
80		#cooling-cells = <2>;
81	};
82
83
84	/* Global Mixed-Mode Technology G751 mounted on GPIO I2C */
85	gpio-i2c {
86		compatible = "i2c-gpio";
87		sda-gpios = <&gpio0 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
88		scl-gpios = <&gpio0 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
89		#address-cells = <1>;
90		#size-cells = <0>;
91
92		g751: temperature-sensor@48 {
93			compatible = "gmt,g751";
94			reg = <0x48>;
95			#thermal-sensor-cells = <0>;
96		};
97	};
98
99	thermal-zones {
100		chassis-thermal {
101			/* Poll every 20 seconds */
102			polling-delay = <20000>;
103			/* Poll every 2nd second when cooling */
104			polling-delay-passive = <2000>;
105
106			thermal-sensors = <&g751>;
107
108			/* Tripping points from the fan.script in the rootfs */
109			trips {
110				chassis_alert0: chassis-alert0 {
111					/* At 43 degrees turn on low speed */
112					temperature = <43000>;
113					hysteresis = <3000>;
114					type = "active";
115				};
116				chassis_alert1: chassis-alert1 {
117					/* At 47 degrees turn on high speed */
118					temperature = <47000>;
119					hysteresis = <3000>;
120					type = "active";
121				};
122				chassis_crit: chassis-crit {
123					/* Just shut down at 60 degrees */
124					temperature = <60000>;
125					hysteresis = <2000>;
126					type = "critical";
127				};
128			};
129
130			cooling-maps {
131				map0 {
132					trip = <&chassis_alert0>;
133					cooling-device = <&fan0 1 1>;
134				};
135				map1 {
136					trip = <&chassis_alert1>;
137					cooling-device = <&fan0 2 2>;
138				};
139			};
140		};
141	};
142
143	mdio0: ethernet-phy {
144		compatible = "virtual,mdio-gpio";
145		/* Uses MDC and MDIO */
146		gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
147			<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
148		#address-cells = <1>;
149		#size-cells = <0>;
150
151		/* This is a Realtek RTL8211B Gigabit ethernet transceiver */
152		phy0: ethernet-phy@1 {
153			reg = <1>;
154			device_type = "ethernet-phy";
155		};
156	};
157
158	soc {
159		flash@30000000 {
160			/*
161			 * This is a Eon EN29LV400AB 512 KiB flash with
162			 * three partitions.
163			 */
164			compatible = "cortina,gemini-flash", "jedec-flash";
165			status = "okay";
166			reg = <0x30000000 0x00080000>;
167
168			/*
169			 * This "RedBoot" is the Storlink derivative.
170			 */
171			partition@0 {
172				label = "RedBoot";
173				reg = <0x00000000 0x00040000>;
174				read-only;
175			};
176			partition@40000 {
177				label = "MTD1";
178				reg = <0x00040000 0x00020000>;
179				read-only;
180			};
181			partition@60000 {
182				label = "MTD2";
183				reg = <0x00060000 0x00020000>;
184				read-only;
185			};
186		};
187
188		syscon: syscon@40000000 {
189			pinctrl {
190				/*
191				 */
192				gpio0_default_pins: pinctrl-gpio0 {
193					mux {
194						function = "gpio0";
195						groups =
196						/* Used by LEDs conflicts ICE */
197						"gpio0bgrp",
198						/* Used by ? conflicts ICE */
199						"gpio0cgrp",
200						/*
201						 * Used by fan & G751, conflicts LPC,
202						 * UART modem lines, SSP
203						 */
204						"gpio0egrp",
205						/* Used by G751 */
206						"gpio0fgrp",
207						/* Used by MDIO */
208						"gpio0igrp";
209					};
210				};
211				gpio1_default_pins: pinctrl-gpio1 {
212					mux {
213						function = "gpio1";
214						/* Used by "reset" button */
215						groups = "gpio1dgrp";
216					};
217				};
218				pinctrl-gmii {
219					mux {
220						function = "gmii";
221						groups = "gmii_gmac0_grp";
222					};
223					/*
224					 * In the vendor Linux tree, these values are set for the C3
225					 * version of the SL3512 ASIC with the comment "benson suggest"
226					 */
227					conf0 {
228						pins = "R8 GMAC0 RXDV", "U11 GMAC1 RXDV";
229						skew-delay = <0>;
230					};
231					conf1 {
232						pins = "T8 GMAC0 RXC";
233						skew-delay = <10>;
234					};
235					conf2 {
236						pins = "T11 GMAC1 RXC";
237						skew-delay = <15>;
238					};
239					conf3 {
240						pins = "P8 GMAC0 TXEN", "V11 GMAC1 TXEN";
241						skew-delay = <7>;
242					};
243					conf4 {
244						pins = "V7 GMAC0 TXC", "P10 GMAC1 TXC";
245						skew-delay = <10>;
246					};
247					conf5 {
248						/* The data lines all have default skew */
249						pins = "U8 GMAC0 RXD0", "V8 GMAC0 RXD1",
250						       "P9 GMAC0 RXD2", "R9 GMAC0 RXD3",
251						       "R11 GMAC1 RXD0", "P11 GMAC1 RXD1",
252						       "V12 GMAC1 RXD2", "U12 GMAC1 RXD3",
253						       "R10 GMAC1 TXD0", "T10 GMAC1 TXD1",
254						       "U10 GMAC1 TXD2", "V10 GMAC1 TXD3";
255						skew-delay = <7>;
256					};
257					conf6 {
258						pins = "U7 GMAC0 TXD0", "T7 GMAC0 TXD1",
259						       "R7 GMAC0 TXD2", "P7 GMAC0 TXD3";
260						skew-delay = <5>;
261					};
262					/* Set up drive strength on GMAC0 to 16 mA */
263					conf7 {
264						groups = "gmii_gmac0_grp";
265						drive-strength = <16>;
266					};
267				};
268			};
269		};
270
271		sata: sata@46000000 {
272			/* The ROM uses this muxmode */
273			cortina,gemini-ata-muxmode = <0>;
274			cortina,gemini-enable-sata-bridge;
275			status = "okay";
276		};
277
278		gpio0: gpio@4d000000 {
279			pinctrl-names = "default";
280			pinctrl-0 = <&gpio0_default_pins>;
281		};
282
283		gpio1: gpio@4e000000 {
284			pinctrl-names = "default";
285			pinctrl-0 = <&gpio1_default_pins>;
286		};
287
288		ethernet@60000000 {
289			status = "okay";
290
291			ethernet-port@0 {
292				phy-mode = "rgmii";
293				phy-handle = <&phy0>;
294			};
295			ethernet-port@1 {
296				/* Not used in this platform */
297			};
298		};
299
300		ide@63000000 {
301			status = "okay";
302		};
303	};
304};
305