Merge branch 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / arch / arm / boot / dts / gemini-sl93512r.dts
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Device Tree file for the Storm Semiconductor SL93512R_BRD
4  * Gemini reference design, also initially called
5  * "Gemini324 EV-Board" before Storm acquired Storlink Semiconductor.
6  * The series were later acquired by Cortina Systems.
7  */
8
9 /dts-v1/;
10
11 #include "gemini.dtsi"
12 #include <dt-bindings/input/input.h>
13
14 / {
15         model = "Storlink Semiconductor Gemini324 EV-Board / Storm Semiconductor SL93512R_BRD";
16         compatible = "storlink,gemini324", "storm,sl93512r", "cortina,gemini";
17         #address-cells = <1>;
18         #size-cells = <1>;
19
20         memory@0 {
21                 /* 64 MB Samsung K4H511638B */
22                 device_type = "memory";
23                 reg = <0x00000000 0x4000000>;
24         };
25
26         chosen {
27                 bootargs = "console=ttyS0,19200n8 root=/dev/mtdblock3 rw rootfstype=squashfs,jffs2 rootwait";
28                 stdout-path = &uart0;
29         };
30
31         gpio_keys {
32                 compatible = "gpio-keys";
33
34                 button-wps {
35                         debounce-interval = <50>;
36                         wakeup-source;
37                         linux,code = <KEY_WPS_BUTTON>;
38                         label = "WPS";
39                         /* Conflicts with TVC and extended flash */
40                         gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
41                 };
42
43                 button-setup {
44                         debounce-interval = <50>;
45                         wakeup-source;
46                         linux,code = <KEY_SETUP>;
47                         label = "factory reset";
48                         /* Conflict with NAND flash */
49                         gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
50                 };
51         };
52
53         leds {
54                 compatible = "gpio-leds";
55                 led-green-harddisk {
56                         label = "sq201:green:harddisk";
57                         /* Conflict with LCD (no problem) */
58                         gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
59                         default-state = "off";
60                         linux,default-trigger = "disk-activity";
61                 };
62                 led-green-wireless {
63                         label = "sq201:green:wireless";
64                         /* Conflict with NAND flash CE0 (no problem) */
65                         gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
66                         default-state = "on";
67                         linux,default-trigger = "heartbeat";
68                 };
69         };
70
71         mdio0: mdio {
72                 compatible = "virtual,mdio-gpio";
73                 /* Uses MDC and MDIO */
74                 gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
75                         <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
76                 #address-cells = <1>;
77                 #size-cells = <0>;
78
79                 /* This is a Marvell 88E1111 ethernet transciever */
80                 phy0: ethernet-phy@1 {
81                         reg = <1>;
82                 };
83         };
84
85         spi {
86                 compatible = "spi-gpio";
87                 #address-cells = <1>;
88                 #size-cells = <0>;
89                 /* Check pin collisions */
90                 gpio-sck = <&gpio1 28 GPIO_ACTIVE_HIGH>;
91                 gpio-miso = <&gpio1 30 GPIO_ACTIVE_HIGH>;
92                 gpio-mosi = <&gpio1 29 GPIO_ACTIVE_HIGH>;
93                 cs-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
94                 num-chipselects = <1>;
95
96                 switch@0 {
97                         compatible = "vitesse,vsc7385";
98                         reg = <0>;
99                         /* Specified for 2.5 MHz or below */
100                         spi-max-frequency = <2500000>;
101                         gpio-controller;
102                         #gpio-cells = <2>;
103
104                         ports {
105                                 #address-cells = <1>;
106                                 #size-cells = <0>;
107
108                                 port@0 {
109                                         reg = <0>;
110                                         label = "lan1";
111                                 };
112                                 port@1 {
113                                         reg = <1>;
114                                         label = "lan2";
115                                 };
116                                 port@2 {
117                                         reg = <2>;
118                                         label = "lan3";
119                                 };
120                                 port@3 {
121                                         reg = <3>;
122                                         label = "lan4";
123                                 };
124                                 vsc: port@6 {
125                                         reg = <6>;
126                                         label = "cpu";
127                                         ethernet = <&gmac1>;
128                                         phy-mode = "rgmii";
129                                         fixed-link {
130                                                 speed = <1000>;
131                                                 full-duplex;
132                                                 pause;
133                                         };
134                                 };
135                         };
136                 };
137         };
138
139
140         soc {
141                 flash@30000000 {
142                         status = "okay";
143                         /* 16MB of flash */
144                         reg = <0x30000000 0x01000000>;
145
146                         partitions {
147                                 compatible = "redboot-fis";
148                                 /* Eraseblock at 0xfe0000 */
149                                 fis-index-block = <0x1fc>;
150                         };
151                 };
152
153                 syscon: syscon@40000000 {
154                         pinctrl {
155                                 /*
156                                  * gpio0agrp cover line 0, used by WPS button
157                                  * gpio0fgrp cover line 16 used by HD LED
158                                  * gpio0ggrp cover line 17, 18 used by wireless LAN LED and
159                                  * reset button OR USB ID select on 17 and USB VBUS select
160                                  * on 18. (Confusing.)
161                                  * gpio0igrp cover line 21, 22 used by MDIO for Marvell PHY
162                                  */
163                                 gpio0_default_pins: pinctrl-gpio0 {
164                                         mux {
165                                                 function = "gpio0";
166                                                 groups = "gpio0agrp",
167                                                 "gpio0fgrp",
168                                                 "gpio0ggrp",
169                                                 "gpio0igrp";
170                                         };
171                                 };
172                                 /*
173                                  * gpio1dgrp cover lines used by SPI for
174                                  * the Vitesse chip (28-31)
175                                  */
176                                 gpio1_default_pins: pinctrl-gpio1 {
177                                         mux {
178                                                 function = "gpio1";
179                                                 groups = "gpio1dgrp";
180                                         };
181                                 };
182                                 pinctrl-gmii {
183                                         mux {
184                                                 function = "gmii";
185                                                 groups = "gmii_gmac0_grp", "gmii_gmac1_grp";
186                                         };
187                                         /* Control pad skew comes from sl_switch.c in the vendor code */
188                                         conf0 {
189                                                 pins = "P10 GMAC1 TXC";
190                                                 skew-delay = <5>;
191                                         };
192                                         conf1 {
193                                                 pins = "V11 GMAC1 TXEN";
194                                                 skew-delay = <7>;
195                                         };
196                                         conf2 {
197                                                 pins = "T11 GMAC1 RXC";
198                                                 skew-delay = <8>;
199                                         };
200                                         conf3 {
201                                                 pins = "U11 GMAC1 RXDV";
202                                                 skew-delay = <7>;
203                                         };
204                                         conf4 {
205                                                 pins = "V7 GMAC0 TXC";
206                                                 skew-delay = <10>;
207                                         };
208                                         conf5 {
209                                                 pins = "P8 GMAC0 TXEN";
210                                                 skew-delay = <7>; /* 5 at another place? */
211                                         };
212                                         conf6 {
213                                                 pins = "T8 GMAC0 RXC";
214                                                 skew-delay = <15>;
215                                         };
216                                         conf7 {
217                                                 pins = "R8 GMAC0 RXDV";
218                                                 skew-delay = <0>;
219                                         };
220                                         conf8 {
221                                                 /* The data lines all have default skew */
222                                                 pins = "U8 GMAC0 RXD0", "V8 GMAC0 RXD1",
223                                                        "P9 GMAC0 RXD2", "R9 GMAC0 RXD3",
224                                                        "R11 GMAC1 RXD0", "P11 GMAC1 RXD1",
225                                                        "V12 GMAC1 RXD2", "U12 GMAC1 RXD3",
226                                                        "R10 GMAC1 TXD0", "T10 GMAC1 TXD1",
227                                                        "U10 GMAC1 TXD2", "V10 GMAC1 TXD3";
228                                                 skew-delay = <7>;
229                                         };
230                                         /* Appears in sl351x_gmac.c in the vendor code */
231                                         conf9 {
232                                                 pins = "U7 GMAC0 TXD0", "T7 GMAC0 TXD1",
233                                                        "R7 GMAC0 TXD2", "P7 GMAC0 TXD3";
234                                                 skew-delay = <5>;
235                                         };
236                                 };
237                         };
238                 };
239
240                 /* Both interfaces brought out on SATA connectors */
241                 sata: sata@46000000 {
242                         cortina,gemini-ata-muxmode = <0>;
243                         cortina,gemini-enable-sata-bridge;
244                         status = "okay";
245                 };
246
247                 gpio0: gpio@4d000000 {
248                         pinctrl-names = "default";
249                         pinctrl-0 = <&gpio0_default_pins>;
250                 };
251
252                 gpio1: gpio@4e000000 {
253                         pinctrl-names = "default";
254                         pinctrl-0 = <&gpio1_default_pins>;
255                 };
256
257                 pci@50000000 {
258                         status = "okay";
259                         interrupt-map-mask = <0xf800 0 0 7>;
260                         interrupt-map =
261                                 <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
262                                 <0x4800 0 0 2 &pci_intc 1>,
263                                 <0x4800 0 0 3 &pci_intc 2>,
264                                 <0x4800 0 0 4 &pci_intc 3>,
265                                 <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
266                                 <0x5000 0 0 2 &pci_intc 2>,
267                                 <0x5000 0 0 3 &pci_intc 3>,
268                                 <0x5000 0 0 4 &pci_intc 0>,
269                                 <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
270                                 <0x5800 0 0 2 &pci_intc 3>,
271                                 <0x5800 0 0 3 &pci_intc 0>,
272                                 <0x5800 0 0 4 &pci_intc 1>,
273                                 <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
274                                 <0x6000 0 0 2 &pci_intc 0>,
275                                 <0x6000 0 0 3 &pci_intc 1>,
276                                 <0x6000 0 0 4 &pci_intc 2>;
277                 };
278
279                 ethernet@60000000 {
280                         status = "okay";
281
282                         ethernet-port@0 {
283                                 phy-mode = "rgmii";
284                                 phy-handle = <&phy0>;
285                         };
286                         ethernet-port@1 {
287                                 phy-mode = "rgmii";
288                                 fixed-link {
289                                         speed = <1000>;
290                                         full-duplex;
291                                         pause;
292                                 };
293                         };
294                 };
295
296                 ata@63000000 {
297                         status = "okay";
298                 };
299
300                 ata@63400000 {
301                         status = "okay";
302                 };
303
304                 usb@68000000 {
305                         status = "okay";
306                 };
307
308                 usb@69000000 {
309                         status = "okay";
310                 };
311         };
312 };