Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 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"; |
Linus Walleij | 5d3c455 | 2019-06-16 23:40:13 +0200 | [diff] [blame] | 14 | compatible = "dlink,dns-313", "cortina,gemini"; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 15 | #address-cells = <1>; |
| 16 | #size-cells = <1>; |
| 17 | |
Linus Walleij | e7c8815 | 2018-05-06 15:39:00 +0200 | [diff] [blame] | 18 | memory@0 { |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 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 { |
Linus Walleij | 0d6ce77 | 2018-05-02 09:17:25 +0200 | [diff] [blame] | 29 | bootargs = "console=ttyS0,19200n8 root=/dev/sda4 rw rootwait"; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 30 | stdout-path = "uart0:19200n8"; |
| 31 | }; |
| 32 | |
| 33 | gpio_keys { |
| 34 | compatible = "gpio-keys"; |
Linus Walleij | e7c8815 | 2018-05-06 15:39:00 +0200 | [diff] [blame] | 35 | |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 36 | button-esc { |
Geert Uytterhoeven | c0b20ba | 2018-02-13 15:15:31 +0100 | [diff] [blame] | 37 | debounce-interval = <50>; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 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"; |
Linus Walleij | 2bd2bbf | 2018-02-25 11:18:51 +0100 | [diff] [blame] | 62 | linux,default-trigger = "disk-read"; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 63 | }; |
| 64 | led-disk-red { |
| 65 | label = "dns313:red:disk"; |
| 66 | gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>; |
| 67 | default-state = "off"; |
Linus Walleij | 2bd2bbf | 2018-02-25 11:18:51 +0100 | [diff] [blame] | 68 | linux,default-trigger = "disk-write"; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 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>; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 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 { |
Linus Walleij | a10d862 | 2018-03-03 23:35:28 +0100 | [diff] [blame] | 160 | /* |
| 161 | * This is a Eon EN29LV400AB 512 KiB flash with |
| 162 | * three partitions. |
| 163 | */ |
| 164 | compatible = "cortina,gemini-flash", "jedec-flash"; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 165 | status = "okay"; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 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 | }; |
Linus Walleij | 9522004 | 2017-11-19 11:04:23 +0100 | [diff] [blame] | 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 | }; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 268 | }; |
| 269 | }; |
| 270 | |
| 271 | sata: sata@46000000 { |
| 272 | /* The ROM uses this muxmode */ |
Linus Walleij | 29d1d52 | 2018-02-25 14:08:14 +0100 | [diff] [blame] | 273 | cortina,gemini-ata-muxmode = <0>; |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 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 | |
Linus Walleij | 9522004 | 2017-11-19 11:04:23 +0100 | [diff] [blame] | 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 | |
Linus Walleij | dd5c056 | 2017-11-17 16:36:32 +0100 | [diff] [blame] | 300 | ata@63000000 { |
| 301 | status = "okay"; |
| 302 | }; |
| 303 | }; |
| 304 | }; |