1 1.1.1.2 jmcneill // SPDX-License-Identifier: GPL-2.0 2 1.1 jmcneill #include <dt-bindings/input/input.h> 3 1.1 jmcneill #include <dt-bindings/gpio/gpio.h> 4 1.1 jmcneill 5 1.1 jmcneill #define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 6 1.1 jmcneill 7 1.1 jmcneill / { 8 1.1.1.4 jmcneill #address-cells = <1>; 9 1.1.1.4 jmcneill #size-cells = <1>; 10 1.1 jmcneill compatible = "marvell,kirkwood"; 11 1.1 jmcneill interrupt-parent = <&intc>; 12 1.1 jmcneill 13 1.1 jmcneill cpus { 14 1.1 jmcneill #address-cells = <1>; 15 1.1 jmcneill #size-cells = <0>; 16 1.1 jmcneill 17 1.1 jmcneill cpu@0 { 18 1.1 jmcneill device_type = "cpu"; 19 1.1 jmcneill compatible = "marvell,feroceon"; 20 1.1 jmcneill reg = <0>; 21 1.1 jmcneill clocks = <&core_clk 1>, <&core_clk 3>, <&gate_clk 11>; 22 1.1 jmcneill clock-names = "cpu_clk", "ddrclk", "powersave"; 23 1.1 jmcneill }; 24 1.1 jmcneill }; 25 1.1 jmcneill 26 1.1 jmcneill aliases { 27 1.1 jmcneill gpio0 = &gpio0; 28 1.1 jmcneill gpio1 = &gpio1; 29 1.1 jmcneill i2c0 = &i2c0; 30 1.1 jmcneill }; 31 1.1 jmcneill 32 1.1 jmcneill mbus@f1000000 { 33 1.1 jmcneill compatible = "marvell,kirkwood-mbus", "simple-bus"; 34 1.1 jmcneill #address-cells = <2>; 35 1.1 jmcneill #size-cells = <1>; 36 1.1 jmcneill /* If a board file needs to change this ranges it must replace it completely */ 37 1.1 jmcneill ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 /* internal-regs */ 38 1.1 jmcneill MBUS_ID(0x01, 0x2f) 0 0xf4000000 0x10000 /* nand flash */ 39 1.1 jmcneill MBUS_ID(0x03, 0x01) 0 0xf5000000 0x10000 /* crypto sram */ 40 1.1 jmcneill >; 41 1.1 jmcneill controller = <&mbusc>; 42 1.1 jmcneill pcie-mem-aperture = <0xe0000000 0x10000000>; /* 256 MiB memory space */ 43 1.1 jmcneill pcie-io-aperture = <0xf2000000 0x100000>; /* 1 MiB I/O space */ 44 1.1 jmcneill 45 1.1.1.2 jmcneill nand: nand@12f { 46 1.1 jmcneill #address-cells = <1>; 47 1.1 jmcneill #size-cells = <1>; 48 1.1 jmcneill cle = <0>; 49 1.1 jmcneill ale = <1>; 50 1.1 jmcneill bank-width = <1>; 51 1.1 jmcneill compatible = "marvell,orion-nand"; 52 1.1 jmcneill reg = <MBUS_ID(0x01, 0x2f) 0 0x400>; 53 1.1 jmcneill chip-delay = <25>; 54 1.1 jmcneill /* set partition map and/or chip-delay in board dts */ 55 1.1 jmcneill clocks = <&gate_clk 7>; 56 1.1 jmcneill pinctrl-0 = <&pmx_nand>; 57 1.1 jmcneill pinctrl-names = "default"; 58 1.1 jmcneill status = "disabled"; 59 1.1 jmcneill }; 60 1.1 jmcneill 61 1.1.1.2 jmcneill crypto_sram: sa-sram@301 { 62 1.1 jmcneill compatible = "mmio-sram"; 63 1.1 jmcneill reg = <MBUS_ID(0x03, 0x01) 0x0 0x800>; 64 1.1 jmcneill clocks = <&gate_clk 17>; 65 1.1 jmcneill #address-cells = <1>; 66 1.1 jmcneill #size-cells = <1>; 67 1.1 jmcneill }; 68 1.1 jmcneill }; 69 1.1 jmcneill 70 1.1 jmcneill ocp@f1000000 { 71 1.1 jmcneill compatible = "simple-bus"; 72 1.1 jmcneill ranges = <0x00000000 0xf1000000 0x0100000>; 73 1.1 jmcneill #address-cells = <1>; 74 1.1 jmcneill #size-cells = <1>; 75 1.1 jmcneill 76 1.1 jmcneill pinctrl: pin-controller@10000 { 77 1.1 jmcneill /* set compatible property in SoC file */ 78 1.1 jmcneill reg = <0x10000 0x20>; 79 1.1 jmcneill 80 1.1 jmcneill pmx_ge1: pmx-ge1 { 81 1.1 jmcneill marvell,pins = "mpp20", "mpp21", "mpp22", "mpp23", 82 1.1 jmcneill "mpp24", "mpp25", "mpp26", "mpp27", 83 1.1 jmcneill "mpp30", "mpp31", "mpp32", "mpp33"; 84 1.1 jmcneill marvell,function = "ge1"; 85 1.1 jmcneill }; 86 1.1 jmcneill 87 1.1 jmcneill pmx_nand: pmx-nand { 88 1.1 jmcneill marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3", 89 1.1 jmcneill "mpp4", "mpp5", "mpp18", "mpp19"; 90 1.1 jmcneill marvell,function = "nand"; 91 1.1 jmcneill }; 92 1.1 jmcneill 93 1.1 jmcneill /* 94 1.1 jmcneill * Default SPI0 pinctrl setting with CSn on mpp0, 95 1.1 jmcneill * overwrite marvell,pins on board level if required. 96 1.1 jmcneill */ 97 1.1 jmcneill pmx_spi: pmx-spi { 98 1.1 jmcneill marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3"; 99 1.1 jmcneill marvell,function = "spi"; 100 1.1 jmcneill }; 101 1.1 jmcneill 102 1.1 jmcneill pmx_twsi0: pmx-twsi0 { 103 1.1 jmcneill marvell,pins = "mpp8", "mpp9"; 104 1.1 jmcneill marvell,function = "twsi0"; 105 1.1 jmcneill }; 106 1.1 jmcneill 107 1.1 jmcneill /* 108 1.1 jmcneill * Default UART pinctrl setting without RTS/CTS, 109 1.1 jmcneill * overwrite marvell,pins on board level if required. 110 1.1 jmcneill */ 111 1.1 jmcneill pmx_uart0: pmx-uart0 { 112 1.1 jmcneill marvell,pins = "mpp10", "mpp11"; 113 1.1 jmcneill marvell,function = "uart0"; 114 1.1 jmcneill }; 115 1.1 jmcneill 116 1.1 jmcneill pmx_uart1: pmx-uart1 { 117 1.1 jmcneill marvell,pins = "mpp13", "mpp14"; 118 1.1 jmcneill marvell,function = "uart1"; 119 1.1 jmcneill }; 120 1.1 jmcneill }; 121 1.1 jmcneill 122 1.1 jmcneill core_clk: core-clocks@10030 { 123 1.1 jmcneill compatible = "marvell,kirkwood-core-clock"; 124 1.1 jmcneill reg = <0x10030 0x4>; 125 1.1 jmcneill #clock-cells = <1>; 126 1.1 jmcneill }; 127 1.1 jmcneill 128 1.1 jmcneill spi0: spi@10600 { 129 1.1 jmcneill compatible = "marvell,orion-spi"; 130 1.1 jmcneill #address-cells = <1>; 131 1.1 jmcneill #size-cells = <0>; 132 1.1 jmcneill cell-index = <0>; 133 1.1 jmcneill interrupts = <23>; 134 1.1 jmcneill reg = <0x10600 0x28>; 135 1.1 jmcneill clocks = <&gate_clk 7>; 136 1.1 jmcneill pinctrl-0 = <&pmx_spi>; 137 1.1 jmcneill pinctrl-names = "default"; 138 1.1 jmcneill status = "disabled"; 139 1.1 jmcneill }; 140 1.1 jmcneill 141 1.1 jmcneill gpio0: gpio@10100 { 142 1.1 jmcneill compatible = "marvell,orion-gpio"; 143 1.1 jmcneill #gpio-cells = <2>; 144 1.1 jmcneill gpio-controller; 145 1.1 jmcneill reg = <0x10100 0x40>; 146 1.1 jmcneill ngpios = <32>; 147 1.1 jmcneill interrupt-controller; 148 1.1 jmcneill #interrupt-cells = <2>; 149 1.1 jmcneill interrupts = <35>, <36>, <37>, <38>; 150 1.1 jmcneill clocks = <&gate_clk 7>; 151 1.1 jmcneill }; 152 1.1 jmcneill 153 1.1 jmcneill gpio1: gpio@10140 { 154 1.1 jmcneill compatible = "marvell,orion-gpio"; 155 1.1 jmcneill #gpio-cells = <2>; 156 1.1 jmcneill gpio-controller; 157 1.1 jmcneill reg = <0x10140 0x40>; 158 1.1 jmcneill ngpios = <18>; 159 1.1 jmcneill interrupt-controller; 160 1.1 jmcneill #interrupt-cells = <2>; 161 1.1 jmcneill interrupts = <39>, <40>, <41>; 162 1.1 jmcneill clocks = <&gate_clk 7>; 163 1.1 jmcneill }; 164 1.1 jmcneill 165 1.1 jmcneill i2c0: i2c@11000 { 166 1.1 jmcneill compatible = "marvell,mv64xxx-i2c"; 167 1.1 jmcneill reg = <0x11000 0x20>; 168 1.1 jmcneill #address-cells = <1>; 169 1.1 jmcneill #size-cells = <0>; 170 1.1 jmcneill interrupts = <29>; 171 1.1 jmcneill clock-frequency = <100000>; 172 1.1 jmcneill clocks = <&gate_clk 7>; 173 1.1 jmcneill pinctrl-0 = <&pmx_twsi0>; 174 1.1 jmcneill pinctrl-names = "default"; 175 1.1 jmcneill status = "disabled"; 176 1.1 jmcneill }; 177 1.1 jmcneill 178 1.1 jmcneill uart0: serial@12000 { 179 1.1 jmcneill compatible = "ns16550a"; 180 1.1 jmcneill reg = <0x12000 0x100>; 181 1.1 jmcneill reg-shift = <2>; 182 1.1 jmcneill interrupts = <33>; 183 1.1 jmcneill clocks = <&gate_clk 7>; 184 1.1 jmcneill pinctrl-0 = <&pmx_uart0>; 185 1.1 jmcneill pinctrl-names = "default"; 186 1.1 jmcneill status = "disabled"; 187 1.1 jmcneill }; 188 1.1 jmcneill 189 1.1 jmcneill uart1: serial@12100 { 190 1.1 jmcneill compatible = "ns16550a"; 191 1.1 jmcneill reg = <0x12100 0x100>; 192 1.1 jmcneill reg-shift = <2>; 193 1.1 jmcneill interrupts = <34>; 194 1.1 jmcneill clocks = <&gate_clk 7>; 195 1.1 jmcneill pinctrl-0 = <&pmx_uart1>; 196 1.1 jmcneill pinctrl-names = "default"; 197 1.1 jmcneill status = "disabled"; 198 1.1 jmcneill }; 199 1.1 jmcneill 200 1.1 jmcneill mbusc: mbus-controller@20000 { 201 1.1 jmcneill compatible = "marvell,mbus-controller"; 202 1.1 jmcneill reg = <0x20000 0x80>, <0x1500 0x20>; 203 1.1 jmcneill }; 204 1.1 jmcneill 205 1.1 jmcneill sysc: system-controller@20000 { 206 1.1 jmcneill compatible = "marvell,orion-system-controller"; 207 1.1 jmcneill reg = <0x20000 0x120>; 208 1.1 jmcneill }; 209 1.1 jmcneill 210 1.1 jmcneill bridge_intc: bridge-interrupt-ctrl@20110 { 211 1.1 jmcneill compatible = "marvell,orion-bridge-intc"; 212 1.1 jmcneill interrupt-controller; 213 1.1 jmcneill #interrupt-cells = <1>; 214 1.1 jmcneill reg = <0x20110 0x8>; 215 1.1 jmcneill interrupts = <1>; 216 1.1 jmcneill marvell,#interrupts = <6>; 217 1.1 jmcneill }; 218 1.1 jmcneill 219 1.1 jmcneill gate_clk: clock-gating-control@2011c { 220 1.1 jmcneill compatible = "marvell,kirkwood-gating-clock"; 221 1.1 jmcneill reg = <0x2011c 0x4>; 222 1.1 jmcneill clocks = <&core_clk 0>; 223 1.1 jmcneill #clock-cells = <1>; 224 1.1 jmcneill }; 225 1.1 jmcneill 226 1.1 jmcneill l2: l2-cache@20128 { 227 1.1 jmcneill compatible = "marvell,kirkwood-cache"; 228 1.1 jmcneill reg = <0x20128 0x4>; 229 1.1 jmcneill }; 230 1.1 jmcneill 231 1.1.1.5 jmcneill intc: interrupt-controller@20200 { 232 1.1 jmcneill compatible = "marvell,orion-intc"; 233 1.1 jmcneill interrupt-controller; 234 1.1 jmcneill #interrupt-cells = <1>; 235 1.1 jmcneill reg = <0x20200 0x10>, <0x20210 0x10>; 236 1.1 jmcneill }; 237 1.1 jmcneill 238 1.1 jmcneill timer: timer@20300 { 239 1.1 jmcneill compatible = "marvell,orion-timer"; 240 1.1 jmcneill reg = <0x20300 0x20>; 241 1.1 jmcneill interrupt-parent = <&bridge_intc>; 242 1.1 jmcneill interrupts = <1>, <2>; 243 1.1 jmcneill clocks = <&core_clk 0>; 244 1.1 jmcneill }; 245 1.1 jmcneill 246 1.1 jmcneill wdt: watchdog-timer@20300 { 247 1.1 jmcneill compatible = "marvell,orion-wdt"; 248 1.1 jmcneill reg = <0x20300 0x28>, <0x20108 0x4>; 249 1.1 jmcneill interrupt-parent = <&bridge_intc>; 250 1.1 jmcneill interrupts = <3>; 251 1.1 jmcneill clocks = <&gate_clk 7>; 252 1.1 jmcneill status = "okay"; 253 1.1 jmcneill }; 254 1.1 jmcneill 255 1.1 jmcneill cesa: crypto@30000 { 256 1.1 jmcneill compatible = "marvell,kirkwood-crypto"; 257 1.1 jmcneill reg = <0x30000 0x10000>; 258 1.1 jmcneill reg-names = "regs"; 259 1.1 jmcneill interrupts = <22>; 260 1.1 jmcneill clocks = <&gate_clk 17>; 261 1.1 jmcneill marvell,crypto-srams = <&crypto_sram>; 262 1.1 jmcneill marvell,crypto-sram-size = <0x800>; 263 1.1 jmcneill status = "okay"; 264 1.1 jmcneill }; 265 1.1 jmcneill 266 1.1 jmcneill usb0: ehci@50000 { 267 1.1 jmcneill compatible = "marvell,orion-ehci"; 268 1.1 jmcneill reg = <0x50000 0x1000>; 269 1.1 jmcneill interrupts = <19>; 270 1.1 jmcneill clocks = <&gate_clk 3>; 271 1.1 jmcneill status = "okay"; 272 1.1 jmcneill }; 273 1.1 jmcneill 274 1.1 jmcneill dma0: xor@60800 { 275 1.1 jmcneill compatible = "marvell,orion-xor"; 276 1.1 jmcneill reg = <0x60800 0x100 277 1.1 jmcneill 0x60A00 0x100>; 278 1.1 jmcneill status = "okay"; 279 1.1 jmcneill clocks = <&gate_clk 8>; 280 1.1 jmcneill 281 1.1 jmcneill xor00 { 282 1.1 jmcneill interrupts = <5>; 283 1.1 jmcneill dmacap,memcpy; 284 1.1 jmcneill dmacap,xor; 285 1.1 jmcneill }; 286 1.1 jmcneill xor01 { 287 1.1 jmcneill interrupts = <6>; 288 1.1 jmcneill dmacap,memcpy; 289 1.1 jmcneill dmacap,xor; 290 1.1 jmcneill dmacap,memset; 291 1.1 jmcneill }; 292 1.1 jmcneill }; 293 1.1 jmcneill 294 1.1 jmcneill dma1: xor@60900 { 295 1.1 jmcneill compatible = "marvell,orion-xor"; 296 1.1 jmcneill reg = <0x60900 0x100 297 1.1 jmcneill 0x60B00 0x100>; 298 1.1 jmcneill status = "okay"; 299 1.1 jmcneill clocks = <&gate_clk 16>; 300 1.1 jmcneill 301 1.1 jmcneill xor00 { 302 1.1 jmcneill interrupts = <7>; 303 1.1 jmcneill dmacap,memcpy; 304 1.1 jmcneill dmacap,xor; 305 1.1 jmcneill }; 306 1.1 jmcneill xor01 { 307 1.1 jmcneill interrupts = <8>; 308 1.1 jmcneill dmacap,memcpy; 309 1.1 jmcneill dmacap,xor; 310 1.1 jmcneill dmacap,memset; 311 1.1 jmcneill }; 312 1.1 jmcneill }; 313 1.1 jmcneill 314 1.1 jmcneill eth0: ethernet-controller@72000 { 315 1.1 jmcneill compatible = "marvell,kirkwood-eth"; 316 1.1 jmcneill #address-cells = <1>; 317 1.1 jmcneill #size-cells = <0>; 318 1.1 jmcneill reg = <0x72000 0x4000>; 319 1.1 jmcneill clocks = <&gate_clk 0>; 320 1.1 jmcneill marvell,tx-checksum-limit = <1600>; 321 1.1 jmcneill status = "disabled"; 322 1.1 jmcneill 323 1.1 jmcneill eth0port: ethernet0-port@0 { 324 1.1 jmcneill compatible = "marvell,kirkwood-eth-port"; 325 1.1 jmcneill reg = <0>; 326 1.1 jmcneill interrupts = <11>; 327 1.1 jmcneill /* overwrite MAC address in bootloader */ 328 1.1 jmcneill local-mac-address = [00 00 00 00 00 00]; 329 1.1 jmcneill /* set phy-handle property in board file */ 330 1.1 jmcneill }; 331 1.1 jmcneill }; 332 1.1 jmcneill 333 1.1 jmcneill mdio: mdio-bus@72004 { 334 1.1 jmcneill compatible = "marvell,orion-mdio"; 335 1.1 jmcneill #address-cells = <1>; 336 1.1 jmcneill #size-cells = <0>; 337 1.1 jmcneill reg = <0x72004 0x84>; 338 1.1 jmcneill interrupts = <46>; 339 1.1 jmcneill clocks = <&gate_clk 0>; 340 1.1 jmcneill status = "disabled"; 341 1.1 jmcneill 342 1.1 jmcneill /* add phy nodes in board file */ 343 1.1 jmcneill }; 344 1.1 jmcneill 345 1.1 jmcneill eth1: ethernet-controller@76000 { 346 1.1 jmcneill compatible = "marvell,kirkwood-eth"; 347 1.1 jmcneill #address-cells = <1>; 348 1.1 jmcneill #size-cells = <0>; 349 1.1 jmcneill reg = <0x76000 0x4000>; 350 1.1 jmcneill clocks = <&gate_clk 19>; 351 1.1 jmcneill marvell,tx-checksum-limit = <1600>; 352 1.1 jmcneill pinctrl-0 = <&pmx_ge1>; 353 1.1 jmcneill pinctrl-names = "default"; 354 1.1 jmcneill status = "disabled"; 355 1.1 jmcneill 356 1.1 jmcneill eth1port: ethernet1-port@0 { 357 1.1 jmcneill compatible = "marvell,kirkwood-eth-port"; 358 1.1 jmcneill reg = <0>; 359 1.1 jmcneill interrupts = <15>; 360 1.1 jmcneill /* overwrite MAC address in bootloader */ 361 1.1 jmcneill local-mac-address = [00 00 00 00 00 00]; 362 1.1 jmcneill /* set phy-handle property in board file */ 363 1.1 jmcneill }; 364 1.1 jmcneill }; 365 1.1 jmcneill 366 1.1 jmcneill sata_phy0: sata-phy@82000 { 367 1.1 jmcneill compatible = "marvell,mvebu-sata-phy"; 368 1.1 jmcneill reg = <0x82000 0x0334>; 369 1.1 jmcneill clocks = <&gate_clk 14>; 370 1.1 jmcneill clock-names = "sata"; 371 1.1 jmcneill #phy-cells = <0>; 372 1.1.1.5 jmcneill status = "okay"; 373 1.1 jmcneill }; 374 1.1 jmcneill 375 1.1 jmcneill sata_phy1: sata-phy@84000 { 376 1.1 jmcneill compatible = "marvell,mvebu-sata-phy"; 377 1.1 jmcneill reg = <0x84000 0x0334>; 378 1.1 jmcneill clocks = <&gate_clk 15>; 379 1.1 jmcneill clock-names = "sata"; 380 1.1 jmcneill #phy-cells = <0>; 381 1.1.1.5 jmcneill status = "okay"; 382 1.1 jmcneill }; 383 1.1 jmcneill 384 1.1 jmcneill audio0: audio-controller@a0000 { 385 1.1 jmcneill compatible = "marvell,kirkwood-audio"; 386 1.1.1.3 jmcneill #sound-dai-cells = <0>; 387 1.1 jmcneill reg = <0xa0000 0x2210>; 388 1.1 jmcneill interrupts = <24>; 389 1.1 jmcneill clocks = <&gate_clk 9>; 390 1.1 jmcneill clock-names = "internal"; 391 1.1 jmcneill status = "disabled"; 392 1.1 jmcneill }; 393 1.1 jmcneill }; 394 1.1 jmcneill }; 395