xref: /linux/arch/arm/boot/dts/gemini/gemini-sl93512r.dts (revision c4a83b1a956b8d0ab17c47c67f6ae5e6194ec866)
1724ba675SRob Herring// SPDX-License-Identifier: GPL-2.0
2724ba675SRob Herring/*
3724ba675SRob Herring * Device Tree file for the Storm Semiconductor SL93512R_BRD
4724ba675SRob Herring * Gemini reference design, also initially called
5724ba675SRob Herring * "Gemini324 EV-Board" before Storm acquired Storlink Semiconductor.
6724ba675SRob Herring * The series were later acquired by Cortina Systems.
7724ba675SRob Herring */
8724ba675SRob Herring
9724ba675SRob Herring/dts-v1/;
10724ba675SRob Herring
11724ba675SRob Herring#include "gemini.dtsi"
12724ba675SRob Herring#include <dt-bindings/input/input.h>
13724ba675SRob Herring
14724ba675SRob Herring/ {
15724ba675SRob Herring	model = "Storlink Semiconductor Gemini324 EV-Board / Storm Semiconductor SL93512R_BRD";
16724ba675SRob Herring	compatible = "storlink,gemini324", "storm,sl93512r", "cortina,gemini";
17724ba675SRob Herring	#address-cells = <1>;
18724ba675SRob Herring	#size-cells = <1>;
19724ba675SRob Herring
20724ba675SRob Herring	memory@0 {
21724ba675SRob Herring		/* 64 MB Samsung K4H511638B */
22724ba675SRob Herring		device_type = "memory";
23724ba675SRob Herring		reg = <0x00000000 0x4000000>;
24724ba675SRob Herring	};
25724ba675SRob Herring
26724ba675SRob Herring	chosen {
27724ba675SRob Herring		bootargs = "console=ttyS0,19200n8 root=/dev/mtdblock3 rw rootfstype=squashfs,jffs2 rootwait";
28724ba675SRob Herring		stdout-path = &uart0;
29724ba675SRob Herring	};
30724ba675SRob Herring
31724ba675SRob Herring	gpio_keys {
32724ba675SRob Herring		compatible = "gpio-keys";
33724ba675SRob Herring
34724ba675SRob Herring		button-wps {
35724ba675SRob Herring			debounce-interval = <50>;
36724ba675SRob Herring			wakeup-source;
37724ba675SRob Herring			linux,code = <KEY_WPS_BUTTON>;
38724ba675SRob Herring			label = "WPS";
39724ba675SRob Herring			/* Conflicts with TVC and extended flash */
40724ba675SRob Herring			gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
41724ba675SRob Herring		};
42724ba675SRob Herring
43724ba675SRob Herring		button-setup {
44724ba675SRob Herring			debounce-interval = <50>;
45724ba675SRob Herring			wakeup-source;
46*c4a83b1aSLinus Walleij			linux,code = <KEY_RESTART>;
47724ba675SRob Herring			label = "factory reset";
48724ba675SRob Herring			/* Conflict with NAND flash */
49724ba675SRob Herring			gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
50724ba675SRob Herring		};
51724ba675SRob Herring	};
52724ba675SRob Herring
53724ba675SRob Herring	leds {
54724ba675SRob Herring		compatible = "gpio-leds";
55724ba675SRob Herring		led-green-harddisk {
56724ba675SRob Herring			label = "sq201:green:harddisk";
57724ba675SRob Herring			/* Conflict with LCD (no problem) */
58724ba675SRob Herring			gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
59724ba675SRob Herring			default-state = "off";
60724ba675SRob Herring			linux,default-trigger = "disk-activity";
61724ba675SRob Herring		};
62724ba675SRob Herring		led-green-wireless {
63724ba675SRob Herring			label = "sq201:green:wireless";
64724ba675SRob Herring			/* Conflict with NAND flash CE0 (no problem) */
65724ba675SRob Herring			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
66724ba675SRob Herring			default-state = "on";
67724ba675SRob Herring			linux,default-trigger = "heartbeat";
68724ba675SRob Herring		};
69724ba675SRob Herring	};
70724ba675SRob Herring
71724ba675SRob Herring	mdio0: mdio {
72724ba675SRob Herring		compatible = "virtual,mdio-gpio";
73724ba675SRob Herring		/* Uses MDC and MDIO */
74724ba675SRob Herring		gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
75724ba675SRob Herring			<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
76724ba675SRob Herring		#address-cells = <1>;
77724ba675SRob Herring		#size-cells = <0>;
78724ba675SRob Herring
79724ba675SRob Herring		/* This is a Marvell 88E1111 ethernet transciever */
80724ba675SRob Herring		phy0: ethernet-phy@1 {
81724ba675SRob Herring			reg = <1>;
82724ba675SRob Herring		};
83724ba675SRob Herring	};
84724ba675SRob Herring
85724ba675SRob Herring	spi {
86724ba675SRob Herring		compatible = "spi-gpio";
87724ba675SRob Herring		#address-cells = <1>;
88724ba675SRob Herring		#size-cells = <0>;
89724ba675SRob Herring		/* Check pin collisions */
90724ba675SRob Herring		sck-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
91724ba675SRob Herring		miso-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
92724ba675SRob Herring		mosi-gpios = <&gpio1 29 GPIO_ACTIVE_HIGH>;
93724ba675SRob Herring		cs-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
94724ba675SRob Herring		num-chipselects = <1>;
95724ba675SRob Herring
96724ba675SRob Herring		switch@0 {
97724ba675SRob Herring			compatible = "vitesse,vsc7385";
98724ba675SRob Herring			reg = <0>;
99724ba675SRob Herring			/* Specified for 2.5 MHz or below */
100724ba675SRob Herring			spi-max-frequency = <2500000>;
101724ba675SRob Herring			gpio-controller;
102724ba675SRob Herring			#gpio-cells = <2>;
103724ba675SRob Herring
104724ba675SRob Herring			ports {
105724ba675SRob Herring				#address-cells = <1>;
106724ba675SRob Herring				#size-cells = <0>;
107724ba675SRob Herring
108724ba675SRob Herring				port@0 {
109724ba675SRob Herring					reg = <0>;
110724ba675SRob Herring					label = "lan1";
111724ba675SRob Herring				};
112724ba675SRob Herring				port@1 {
113724ba675SRob Herring					reg = <1>;
114724ba675SRob Herring					label = "lan2";
115724ba675SRob Herring				};
116724ba675SRob Herring				port@2 {
117724ba675SRob Herring					reg = <2>;
118724ba675SRob Herring					label = "lan3";
119724ba675SRob Herring				};
120724ba675SRob Herring				port@3 {
121724ba675SRob Herring					reg = <3>;
122724ba675SRob Herring					label = "lan4";
123724ba675SRob Herring				};
124724ba675SRob Herring				vsc: port@6 {
125724ba675SRob Herring					reg = <6>;
126724ba675SRob Herring					label = "cpu";
127724ba675SRob Herring					ethernet = <&gmac1>;
128724ba675SRob Herring					phy-mode = "rgmii";
129724ba675SRob Herring					fixed-link {
130724ba675SRob Herring						speed = <1000>;
131724ba675SRob Herring						full-duplex;
132724ba675SRob Herring						pause;
133724ba675SRob Herring					};
134724ba675SRob Herring				};
135724ba675SRob Herring			};
136724ba675SRob Herring		};
137724ba675SRob Herring	};
138724ba675SRob Herring
139724ba675SRob Herring
140724ba675SRob Herring	soc {
141724ba675SRob Herring		flash@30000000 {
142724ba675SRob Herring			status = "okay";
143724ba675SRob Herring			/* 16MB of flash */
144724ba675SRob Herring			reg = <0x30000000 0x01000000>;
145724ba675SRob Herring
146724ba675SRob Herring			partitions {
147724ba675SRob Herring				compatible = "redboot-fis";
148724ba675SRob Herring				/* Eraseblock at 0xfe0000 */
149724ba675SRob Herring				fis-index-block = <0x1fc>;
150724ba675SRob Herring			};
151724ba675SRob Herring		};
152724ba675SRob Herring
153724ba675SRob Herring		syscon: syscon@40000000 {
154724ba675SRob Herring			pinctrl {
155724ba675SRob Herring				/*
156724ba675SRob Herring				 * gpio0agrp cover line 0, used by WPS button
157724ba675SRob Herring				 * gpio0fgrp cover line 16 used by HD LED
158724ba675SRob Herring				 * gpio0ggrp cover line 17, 18 used by wireless LAN LED and
159724ba675SRob Herring				 * reset button OR USB ID select on 17 and USB VBUS select
160724ba675SRob Herring				 * on 18. (Confusing.)
161724ba675SRob Herring				 * gpio0igrp cover line 21, 22 used by MDIO for Marvell PHY
162724ba675SRob Herring				 */
163724ba675SRob Herring				gpio0_default_pins: pinctrl-gpio0 {
164724ba675SRob Herring					mux {
165724ba675SRob Herring						function = "gpio0";
166724ba675SRob Herring						groups = "gpio0agrp",
167724ba675SRob Herring						"gpio0fgrp",
168724ba675SRob Herring						"gpio0ggrp",
169724ba675SRob Herring						"gpio0igrp";
170724ba675SRob Herring					};
171724ba675SRob Herring				};
172724ba675SRob Herring				/*
173724ba675SRob Herring				 * gpio1dgrp cover lines used by SPI for
174724ba675SRob Herring				 * the Vitesse chip (28-31)
175724ba675SRob Herring				 */
176724ba675SRob Herring				gpio1_default_pins: pinctrl-gpio1 {
177724ba675SRob Herring					mux {
178724ba675SRob Herring						function = "gpio1";
179724ba675SRob Herring						groups = "gpio1dgrp";
180724ba675SRob Herring					};
181724ba675SRob Herring				};
182724ba675SRob Herring				pinctrl-gmii {
183724ba675SRob Herring					mux {
184724ba675SRob Herring						function = "gmii";
185724ba675SRob Herring						groups = "gmii_gmac0_grp", "gmii_gmac1_grp";
186724ba675SRob Herring					};
187724ba675SRob Herring					/* Control pad skew comes from sl_switch.c in the vendor code */
188724ba675SRob Herring					conf0 {
189724ba675SRob Herring						pins = "P10 GMAC1 TXC";
190724ba675SRob Herring						skew-delay = <5>;
191724ba675SRob Herring					};
192724ba675SRob Herring					conf1 {
193724ba675SRob Herring						pins = "V11 GMAC1 TXEN";
194724ba675SRob Herring						skew-delay = <7>;
195724ba675SRob Herring					};
196724ba675SRob Herring					conf2 {
197724ba675SRob Herring						pins = "T11 GMAC1 RXC";
198724ba675SRob Herring						skew-delay = <8>;
199724ba675SRob Herring					};
200724ba675SRob Herring					conf3 {
201724ba675SRob Herring						pins = "U11 GMAC1 RXDV";
202724ba675SRob Herring						skew-delay = <7>;
203724ba675SRob Herring					};
204724ba675SRob Herring					conf4 {
205724ba675SRob Herring						pins = "V7 GMAC0 TXC";
206724ba675SRob Herring						skew-delay = <10>;
207724ba675SRob Herring					};
208724ba675SRob Herring					conf5 {
209724ba675SRob Herring						pins = "P8 GMAC0 TXEN";
210724ba675SRob Herring						skew-delay = <7>; /* 5 at another place? */
211724ba675SRob Herring					};
212724ba675SRob Herring					conf6 {
213724ba675SRob Herring						pins = "T8 GMAC0 RXC";
214724ba675SRob Herring						skew-delay = <15>;
215724ba675SRob Herring					};
216724ba675SRob Herring					conf7 {
217724ba675SRob Herring						pins = "R8 GMAC0 RXDV";
218724ba675SRob Herring						skew-delay = <0>;
219724ba675SRob Herring					};
220724ba675SRob Herring					conf8 {
221724ba675SRob Herring						/* The data lines all have default skew */
222724ba675SRob Herring						pins = "U8 GMAC0 RXD0", "V8 GMAC0 RXD1",
223724ba675SRob Herring						       "P9 GMAC0 RXD2", "R9 GMAC0 RXD3",
224724ba675SRob Herring						       "R11 GMAC1 RXD0", "P11 GMAC1 RXD1",
225724ba675SRob Herring						       "V12 GMAC1 RXD2", "U12 GMAC1 RXD3",
226724ba675SRob Herring						       "R10 GMAC1 TXD0", "T10 GMAC1 TXD1",
227724ba675SRob Herring						       "U10 GMAC1 TXD2", "V10 GMAC1 TXD3";
228724ba675SRob Herring						skew-delay = <7>;
229724ba675SRob Herring					};
230724ba675SRob Herring					/* Appears in sl351x_gmac.c in the vendor code */
231724ba675SRob Herring					conf9 {
232724ba675SRob Herring						pins = "U7 GMAC0 TXD0", "T7 GMAC0 TXD1",
233724ba675SRob Herring						       "R7 GMAC0 TXD2", "P7 GMAC0 TXD3";
234724ba675SRob Herring						skew-delay = <5>;
235724ba675SRob Herring					};
236724ba675SRob Herring				};
237724ba675SRob Herring			};
238724ba675SRob Herring		};
239724ba675SRob Herring
240724ba675SRob Herring		/* Both interfaces brought out on SATA connectors */
241724ba675SRob Herring		sata: sata@46000000 {
242724ba675SRob Herring			cortina,gemini-ata-muxmode = <0>;
243724ba675SRob Herring			cortina,gemini-enable-sata-bridge;
244724ba675SRob Herring			status = "okay";
245724ba675SRob Herring		};
246724ba675SRob Herring
247724ba675SRob Herring		gpio0: gpio@4d000000 {
248724ba675SRob Herring			pinctrl-names = "default";
249724ba675SRob Herring			pinctrl-0 = <&gpio0_default_pins>;
250724ba675SRob Herring		};
251724ba675SRob Herring
252724ba675SRob Herring		gpio1: gpio@4e000000 {
253724ba675SRob Herring			pinctrl-names = "default";
254724ba675SRob Herring			pinctrl-0 = <&gpio1_default_pins>;
255724ba675SRob Herring		};
256724ba675SRob Herring
257724ba675SRob Herring		pci@50000000 {
258724ba675SRob Herring			status = "okay";
259724ba675SRob Herring		};
260724ba675SRob Herring
261724ba675SRob Herring		ethernet@60000000 {
262724ba675SRob Herring			status = "okay";
263724ba675SRob Herring
264724ba675SRob Herring			ethernet-port@0 {
265724ba675SRob Herring				phy-mode = "rgmii";
266724ba675SRob Herring				phy-handle = <&phy0>;
267724ba675SRob Herring			};
268724ba675SRob Herring			ethernet-port@1 {
269724ba675SRob Herring				phy-mode = "rgmii";
270724ba675SRob Herring				fixed-link {
271724ba675SRob Herring					speed = <1000>;
272724ba675SRob Herring					full-duplex;
273724ba675SRob Herring					pause;
274724ba675SRob Herring				};
275724ba675SRob Herring			};
276724ba675SRob Herring		};
277724ba675SRob Herring
278724ba675SRob Herring		ide@63000000 {
279724ba675SRob Herring			status = "okay";
280724ba675SRob Herring		};
281724ba675SRob Herring
282724ba675SRob Herring		ide@63400000 {
283724ba675SRob Herring			status = "okay";
284724ba675SRob Herring		};
285724ba675SRob Herring
286724ba675SRob Herring		usb@68000000 {
287724ba675SRob Herring			status = "okay";
288724ba675SRob Herring		};
289724ba675SRob Herring
290724ba675SRob Herring		usb@69000000 {
291724ba675SRob Herring			status = "okay";
292724ba675SRob Herring		};
293724ba675SRob Herring	};
294724ba675SRob Herring};
295