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 sck-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>; 91 miso-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>; 92 mosi-gpios = <&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 }; 260 261 ethernet@60000000 { 262 status = "okay"; 263 264 ethernet-port@0 { 265 phy-mode = "rgmii"; 266 phy-handle = <&phy0>; 267 }; 268 ethernet-port@1 { 269 phy-mode = "rgmii"; 270 fixed-link { 271 speed = <1000>; 272 full-duplex; 273 pause; 274 }; 275 }; 276 }; 277 278 ide@63000000 { 279 status = "okay"; 280 }; 281 282 ide@63400000 { 283 status = "okay"; 284 }; 285 286 usb@68000000 { 287 status = "okay"; 288 }; 289 290 usb@69000000 { 291 status = "okay"; 292 }; 293 }; 294}; 295