1// SPDX-License-Identifier: GPL-2.0 2/* 3 * kirkwood-viper.dts - Device Tree file for Linksys viper (E4200v2 / EA4500) 4 * 5 * (c) 2013 Jonas Gorski <jogo@openwrt.org> 6 * (c) 2013 Deutsche Telekom Innovation Laboratories 7 * (c) 2014 Luka Perkov <luka@openwrt.org> 8 * (c) 2014 Randy C. Will <randall.will@gmail.com> 9 * 10 */ 11 12/dts-v1/; 13 14#include "kirkwood.dtsi" 15#include "kirkwood-6282.dtsi" 16 17/ { 18 model = "Linksys Viper (E4200v2 / EA4500)"; 19 compatible = "linksys,viper", "marvell,kirkwood-88f6282", "marvell,kirkwood"; 20 21 memory { 22 device_type = "memory"; 23 reg = <0x00000000 0x8000000>; 24 }; 25 26 aliases { 27 serial0 = &uart0; 28 }; 29 30 chosen { 31 stdout-path = "serial0:115200n8"; 32 }; 33 34 gpio_keys { 35 compatible = "gpio-keys"; 36 #address-cells = <1>; 37 #size-cells = <0>; 38 pinctrl-0 = < &pmx_btn_wps &pmx_btn_reset >; 39 pinctrl-names = "default"; 40 41 wps { 42 label = "WPS Button"; 43 linux,code = <KEY_WPS_BUTTON>; 44 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; 45 }; 46 47 reset { 48 label = "Reset Button"; 49 linux,code = <KEY_RESTART>; 50 gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; 51 }; 52 }; 53 54 gpio-leds { 55 compatible = "gpio-leds"; 56 pinctrl-0 = < &pmx_led_white_health &pmx_led_white_pulse >; 57 pinctrl-names = "default"; 58 59 white-health { 60 label = "viper:white:health"; 61 gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>; 62 }; 63 64 white-pulse { 65 label = "viper:white:pulse"; 66 gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>; 67 }; 68 }; 69}; 70 71&pinctrl { 72 pmx_led_white_health: pmx-led-white-health { 73 marvell,pins = "mpp7"; 74 marvell,function = "gpo"; 75 }; 76 pmx_led_white_pulse: pmx-led-white-pulse { 77 marvell,pins = "mpp14"; 78 marvell,function = "gpio"; 79 }; 80 pmx_btn_wps: pmx-btn-wps { 81 marvell,pins = "mpp47"; 82 marvell,function = "gpio"; 83 }; 84 pmx_btn_reset: pmx-btn-reset { 85 marvell,pins = "mpp48"; 86 marvell,function = "gpio"; 87 }; 88}; 89 90&nand { 91 status = "okay"; 92 pinctrl-0 = <&pmx_nand>; 93 pinctrl-names = "default"; 94 95 partitions { 96 compatible = "fixed-partitions"; 97 #address-cells = <1>; 98 #size-cells = <1>; 99 100 partition@0 { 101 label = "u-boot"; 102 reg = <0x0 0x80000>; 103 read-only; 104 }; 105 106 partition@80000 { 107 label = "u_env"; 108 reg = <0x80000 0x20000>; 109 }; 110 111 partition@a0000 { 112 label = "s_env"; 113 reg = <0xA0000 0x20000>; 114 }; 115 116 partition@200000 { 117 label = "kernel"; 118 reg = <0x200000 0x2A0000>; 119 }; 120 121 partition@4a0000 { 122 label = "rootfs"; 123 reg = <0x4A0000 0x1760000>; 124 }; 125 126 partition@1c00000 { 127 label = "alt_kernel"; 128 reg = <0x1C00000 0x2A0000>; 129 }; 130 131 partition@1ea0000 { 132 label = "alt_rootfs"; 133 reg = <0x1EA0000 0x1760000>; 134 }; 135 136 partition@3600000 { 137 label = "syscfg"; 138 reg = <0x3600000 0x4A00000>; 139 }; 140 141 partition@c0000 { 142 label = "unused"; 143 reg = <0xC0000 0x140000>; 144 }; 145 146 }; 147}; 148 149&pciec { 150 status = "okay"; 151}; 152 153&pcie0 { 154 status = "okay"; 155}; 156 157&pcie1 { 158 status = "okay"; 159}; 160 161&mdio { 162 status = "okay"; 163 164 switch@10 { 165 compatible = "marvell,mv88e6085"; 166 #address-cells = <1>; 167 #size-cells = <0>; 168 reg = <16>; 169 170 ports { 171 #address-cells = <1>; 172 #size-cells = <0>; 173 174 port@0 { 175 reg = <0>; 176 label = "ethernet1"; 177 }; 178 179 port@1 { 180 reg = <1>; 181 label = "ethernet2"; 182 }; 183 184 port@2 { 185 reg = <2>; 186 label = "ethernet3"; 187 }; 188 189 port@3 { 190 reg = <3>; 191 label = "ethernet4"; 192 }; 193 194 port@4 { 195 reg = <4>; 196 label = "internet"; 197 }; 198 199 port@5 { 200 reg = <5>; 201 label = "cpu"; 202 ethernet = <ð0port>; 203 fixed-link { 204 speed = <1000>; 205 full-duplex; 206 }; 207 }; 208 }; 209 }; 210}; 211 212&uart0 { 213 status = "okay"; 214}; 215 216/* eth0 is connected to a Marvell 88E6171 switch, without a PHY. So set 217 * fixed speed and duplex. 218 */ 219ð0 { 220 status = "okay"; 221 ethernet0-port@0 { 222 speed = <1000>; 223 duplex = <1>; 224 }; 225}; 226 227/* eth1 is connected to the switch at port 6. However DSA only supports a 228 * single CPU port. So leave this port disabled to avoid confusion. 229 */ 230ð1 { 231 status = "disabled"; 232}; 233 234/* There is no battery on the board, so the RTC does not keep 235 * time when there is no power, making it useless. 236 */ 237&rtc { 238 status = "disabled"; 239}; 240 241