xref: /rk3399_rockchip-uboot/arch/arm/dts/armada-38x.dtsi (revision f46c25583a73042edf432b209ee4b93bc3f7e762)
139a230aaSStefan Roese/*
239a230aaSStefan Roese * Device Tree Include file for Marvell Armada 38x family of SoCs.
339a230aaSStefan Roese *
439a230aaSStefan Roese * Copyright (C) 2014 Marvell
539a230aaSStefan Roese *
639a230aaSStefan Roese * Lior Amsalem <alior@marvell.com>
739a230aaSStefan Roese * Gregory CLEMENT <gregory.clement@free-electrons.com>
839a230aaSStefan Roese * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
939a230aaSStefan Roese *
1039a230aaSStefan Roese * This file is dual-licensed: you can use it either under the terms
1139a230aaSStefan Roese * of the GPL or the X11 license, at your option. Note that this dual
1239a230aaSStefan Roese * licensing only applies to this file, and not this project as a
1339a230aaSStefan Roese * whole.
1439a230aaSStefan Roese *
1539a230aaSStefan Roese *  a) This file is free software; you can redistribute it and/or
1639a230aaSStefan Roese *     modify it under the terms of the GNU General Public License as
1739a230aaSStefan Roese *     published by the Free Software Foundation; either version 2 of the
1839a230aaSStefan Roese *     License, or (at your option) any later version.
1939a230aaSStefan Roese *
2039a230aaSStefan Roese *     This file is distributed in the hope that it will be useful
2139a230aaSStefan Roese *     but WITHOUT ANY WARRANTY; without even the implied warranty of
2239a230aaSStefan Roese *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2339a230aaSStefan Roese *     GNU General Public License for more details.
2439a230aaSStefan Roese *
2539a230aaSStefan Roese * Or, alternatively
2639a230aaSStefan Roese *
2739a230aaSStefan Roese *  b) Permission is hereby granted, free of charge, to any person
2839a230aaSStefan Roese *     obtaining a copy of this software and associated documentation
2939a230aaSStefan Roese *     files (the "Software"), to deal in the Software without
3039a230aaSStefan Roese *     restriction, including without limitation the rights to use
3139a230aaSStefan Roese *     copy, modify, merge, publish, distribute, sublicense, and/or
3239a230aaSStefan Roese *     sell copies of the Software, and to permit persons to whom the
3339a230aaSStefan Roese *     Software is furnished to do so, subject to the following
3439a230aaSStefan Roese *     conditions:
3539a230aaSStefan Roese *
3639a230aaSStefan Roese *     The above copyright notice and this permission notice shall be
3739a230aaSStefan Roese *     included in all copies or substantial portions of the Software.
3839a230aaSStefan Roese *
3939a230aaSStefan Roese *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
4039a230aaSStefan Roese *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
4139a230aaSStefan Roese *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
4239a230aaSStefan Roese *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
4339a230aaSStefan Roese *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
4439a230aaSStefan Roese *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4539a230aaSStefan Roese *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
4639a230aaSStefan Roese *     OTHER DEALINGS IN THE SOFTWARE.
4739a230aaSStefan Roese */
4839a230aaSStefan Roese
4939a230aaSStefan Roese#include "skeleton.dtsi"
5039a230aaSStefan Roese#include <dt-bindings/interrupt-controller/arm-gic.h>
5139a230aaSStefan Roese#include <dt-bindings/interrupt-controller/irq.h>
5239a230aaSStefan Roese
5339a230aaSStefan Roese#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
5439a230aaSStefan Roese
5539a230aaSStefan Roese/ {
5639a230aaSStefan Roese	model = "Marvell Armada 38x family SoC";
5739a230aaSStefan Roese	compatible = "marvell,armada380";
5839a230aaSStefan Roese
5939a230aaSStefan Roese	aliases {
6039a230aaSStefan Roese		gpio0 = &gpio0;
6139a230aaSStefan Roese		gpio1 = &gpio1;
6239a230aaSStefan Roese		serial0 = &uart0;
6339a230aaSStefan Roese		serial1 = &uart1;
6439a230aaSStefan Roese	};
6539a230aaSStefan Roese
6639a230aaSStefan Roese	pmu {
6739a230aaSStefan Roese		compatible = "arm,cortex-a9-pmu";
6839a230aaSStefan Roese		interrupts-extended = <&mpic 3>;
6939a230aaSStefan Roese	};
7039a230aaSStefan Roese
7139a230aaSStefan Roese	soc {
7239a230aaSStefan Roese		compatible = "marvell,armada380-mbus", "simple-bus";
73*09a54c00SStefan Roese		u-boot,dm-pre-reloc;
7439a230aaSStefan Roese		#address-cells = <2>;
7539a230aaSStefan Roese		#size-cells = <1>;
7639a230aaSStefan Roese		controller = <&mbusc>;
7739a230aaSStefan Roese		interrupt-parent = <&gic>;
7839a230aaSStefan Roese		pcie-mem-aperture = <0xe0000000 0x8000000>;
7939a230aaSStefan Roese		pcie-io-aperture  = <0xe8000000 0x100000>;
8039a230aaSStefan Roese
8139a230aaSStefan Roese		bootrom {
8239a230aaSStefan Roese			compatible = "marvell,bootrom";
8339a230aaSStefan Roese			reg = <MBUS_ID(0x01, 0x1d) 0 0x200000>;
8439a230aaSStefan Roese		};
8539a230aaSStefan Roese
8639a230aaSStefan Roese		devbus-bootcs {
8739a230aaSStefan Roese			compatible = "marvell,mvebu-devbus";
8839a230aaSStefan Roese			reg = <MBUS_ID(0xf0, 0x01) 0x10400 0x8>;
8939a230aaSStefan Roese			ranges = <0 MBUS_ID(0x01, 0x2f) 0 0xffffffff>;
9039a230aaSStefan Roese			#address-cells = <1>;
9139a230aaSStefan Roese			#size-cells = <1>;
9239a230aaSStefan Roese			clocks = <&coreclk 0>;
9339a230aaSStefan Roese			status = "disabled";
9439a230aaSStefan Roese		};
9539a230aaSStefan Roese
9639a230aaSStefan Roese		devbus-cs0 {
9739a230aaSStefan Roese			compatible = "marvell,mvebu-devbus";
9839a230aaSStefan Roese			reg = <MBUS_ID(0xf0, 0x01) 0x10408 0x8>;
9939a230aaSStefan Roese			ranges = <0 MBUS_ID(0x01, 0x3e) 0 0xffffffff>;
10039a230aaSStefan Roese			#address-cells = <1>;
10139a230aaSStefan Roese			#size-cells = <1>;
10239a230aaSStefan Roese			clocks = <&coreclk 0>;
10339a230aaSStefan Roese			status = "disabled";
10439a230aaSStefan Roese		};
10539a230aaSStefan Roese
10639a230aaSStefan Roese		devbus-cs1 {
10739a230aaSStefan Roese			compatible = "marvell,mvebu-devbus";
10839a230aaSStefan Roese			reg = <MBUS_ID(0xf0, 0x01) 0x10410 0x8>;
10939a230aaSStefan Roese			ranges = <0 MBUS_ID(0x01, 0x3d) 0 0xffffffff>;
11039a230aaSStefan Roese			#address-cells = <1>;
11139a230aaSStefan Roese			#size-cells = <1>;
11239a230aaSStefan Roese			clocks = <&coreclk 0>;
11339a230aaSStefan Roese			status = "disabled";
11439a230aaSStefan Roese		};
11539a230aaSStefan Roese
11639a230aaSStefan Roese		devbus-cs2 {
11739a230aaSStefan Roese			compatible = "marvell,mvebu-devbus";
11839a230aaSStefan Roese			reg = <MBUS_ID(0xf0, 0x01) 0x10418 0x8>;
11939a230aaSStefan Roese			ranges = <0 MBUS_ID(0x01, 0x3b) 0 0xffffffff>;
12039a230aaSStefan Roese			#address-cells = <1>;
12139a230aaSStefan Roese			#size-cells = <1>;
12239a230aaSStefan Roese			clocks = <&coreclk 0>;
12339a230aaSStefan Roese			status = "disabled";
12439a230aaSStefan Roese		};
12539a230aaSStefan Roese
12639a230aaSStefan Roese		devbus-cs3 {
12739a230aaSStefan Roese			compatible = "marvell,mvebu-devbus";
12839a230aaSStefan Roese			reg = <MBUS_ID(0xf0, 0x01) 0x10420 0x8>;
12939a230aaSStefan Roese			ranges = <0 MBUS_ID(0x01, 0x37) 0 0xffffffff>;
13039a230aaSStefan Roese			#address-cells = <1>;
13139a230aaSStefan Roese			#size-cells = <1>;
13239a230aaSStefan Roese			clocks = <&coreclk 0>;
13339a230aaSStefan Roese			status = "disabled";
13439a230aaSStefan Roese		};
13539a230aaSStefan Roese
13639a230aaSStefan Roese		internal-regs {
13739a230aaSStefan Roese			compatible = "simple-bus";
138*09a54c00SStefan Roese			u-boot,dm-pre-reloc;
13939a230aaSStefan Roese			#address-cells = <1>;
14039a230aaSStefan Roese			#size-cells = <1>;
14139a230aaSStefan Roese			ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
14239a230aaSStefan Roese
14339a230aaSStefan Roese			L2: cache-controller@8000 {
14439a230aaSStefan Roese				compatible = "arm,pl310-cache";
14539a230aaSStefan Roese				reg = <0x8000 0x1000>;
14639a230aaSStefan Roese				cache-unified;
14739a230aaSStefan Roese				cache-level = <2>;
14839a230aaSStefan Roese			};
14939a230aaSStefan Roese
15039a230aaSStefan Roese			scu@c000 {
15139a230aaSStefan Roese				compatible = "arm,cortex-a9-scu";
15239a230aaSStefan Roese				reg = <0xc000 0x58>;
15339a230aaSStefan Roese			};
15439a230aaSStefan Roese
15539a230aaSStefan Roese			timer@c600 {
15639a230aaSStefan Roese				compatible = "arm,cortex-a9-twd-timer";
15739a230aaSStefan Roese				reg = <0xc600 0x20>;
15839a230aaSStefan Roese				interrupts = <GIC_PPI 13 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>;
15939a230aaSStefan Roese				clocks = <&coreclk 2>;
16039a230aaSStefan Roese			};
16139a230aaSStefan Roese
16239a230aaSStefan Roese			gic: interrupt-controller@d000 {
16339a230aaSStefan Roese				compatible = "arm,cortex-a9-gic";
16439a230aaSStefan Roese				#interrupt-cells = <3>;
16539a230aaSStefan Roese				#size-cells = <0>;
16639a230aaSStefan Roese				interrupt-controller;
16739a230aaSStefan Roese				reg = <0xd000 0x1000>,
16839a230aaSStefan Roese				      <0xc100 0x100>;
16939a230aaSStefan Roese			};
17039a230aaSStefan Roese
17139a230aaSStefan Roese			spi0: spi@10600 {
17239a230aaSStefan Roese				compatible = "marvell,armada-380-spi",
17339a230aaSStefan Roese						"marvell,orion-spi";
17439a230aaSStefan Roese				reg = <0x10600 0x50>;
17539a230aaSStefan Roese				#address-cells = <1>;
17639a230aaSStefan Roese				#size-cells = <0>;
17739a230aaSStefan Roese				cell-index = <0>;
17839a230aaSStefan Roese				interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
17939a230aaSStefan Roese				clocks = <&coreclk 0>;
18039a230aaSStefan Roese				status = "disabled";
18139a230aaSStefan Roese			};
18239a230aaSStefan Roese
18339a230aaSStefan Roese			spi1: spi@10680 {
18439a230aaSStefan Roese				compatible = "marvell,armada-380-spi",
18539a230aaSStefan Roese						"marvell,orion-spi";
18639a230aaSStefan Roese				reg = <0x10680 0x50>;
18739a230aaSStefan Roese				#address-cells = <1>;
18839a230aaSStefan Roese				#size-cells = <0>;
18939a230aaSStefan Roese				cell-index = <1>;
19039a230aaSStefan Roese				interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
19139a230aaSStefan Roese				clocks = <&coreclk 0>;
19239a230aaSStefan Roese				status = "disabled";
19339a230aaSStefan Roese			};
19439a230aaSStefan Roese
19539a230aaSStefan Roese			i2c0: i2c@11000 {
19639a230aaSStefan Roese				compatible = "marvell,mv64xxx-i2c";
19739a230aaSStefan Roese				reg = <0x11000 0x20>;
19839a230aaSStefan Roese				#address-cells = <1>;
19939a230aaSStefan Roese				#size-cells = <0>;
20039a230aaSStefan Roese				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
20139a230aaSStefan Roese				timeout-ms = <1000>;
20239a230aaSStefan Roese				clocks = <&coreclk 0>;
20339a230aaSStefan Roese				status = "disabled";
20439a230aaSStefan Roese			};
20539a230aaSStefan Roese
20639a230aaSStefan Roese			i2c1: i2c@11100 {
20739a230aaSStefan Roese				compatible = "marvell,mv64xxx-i2c";
20839a230aaSStefan Roese				reg = <0x11100 0x20>;
20939a230aaSStefan Roese				#address-cells = <1>;
21039a230aaSStefan Roese				#size-cells = <0>;
21139a230aaSStefan Roese				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
21239a230aaSStefan Roese				timeout-ms = <1000>;
21339a230aaSStefan Roese				clocks = <&coreclk 0>;
21439a230aaSStefan Roese				status = "disabled";
21539a230aaSStefan Roese			};
21639a230aaSStefan Roese
21739a230aaSStefan Roese			uart0: serial@12000 {
21839a230aaSStefan Roese				compatible = "snps,dw-apb-uart";
21939a230aaSStefan Roese				reg = <0x12000 0x100>;
22039a230aaSStefan Roese				reg-shift = <2>;
22139a230aaSStefan Roese				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
22239a230aaSStefan Roese				reg-io-width = <1>;
22339a230aaSStefan Roese				clocks = <&coreclk 0>;
22439a230aaSStefan Roese				status = "disabled";
22539a230aaSStefan Roese			};
22639a230aaSStefan Roese
22739a230aaSStefan Roese			uart1: serial@12100 {
22839a230aaSStefan Roese				compatible = "snps,dw-apb-uart";
22939a230aaSStefan Roese				reg = <0x12100 0x100>;
23039a230aaSStefan Roese				reg-shift = <2>;
23139a230aaSStefan Roese				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
23239a230aaSStefan Roese				reg-io-width = <1>;
23339a230aaSStefan Roese				clocks = <&coreclk 0>;
23439a230aaSStefan Roese				status = "disabled";
23539a230aaSStefan Roese			};
23639a230aaSStefan Roese
23739a230aaSStefan Roese			pinctrl: pinctrl@18000 {
23839a230aaSStefan Roese				reg = <0x18000 0x20>;
23939a230aaSStefan Roese
24039a230aaSStefan Roese				ge0_rgmii_pins: ge-rgmii-pins-0 {
24139a230aaSStefan Roese					marvell,pins = "mpp6", "mpp7", "mpp8",
24239a230aaSStefan Roese						       "mpp9", "mpp10", "mpp11",
24339a230aaSStefan Roese						       "mpp12", "mpp13", "mpp14",
24439a230aaSStefan Roese						       "mpp15", "mpp16", "mpp17";
24539a230aaSStefan Roese					marvell,function = "ge0";
24639a230aaSStefan Roese				};
24739a230aaSStefan Roese
24839a230aaSStefan Roese				ge1_rgmii_pins: ge-rgmii-pins-1 {
24939a230aaSStefan Roese					marvell,pins = "mpp21", "mpp27", "mpp28",
25039a230aaSStefan Roese						       "mpp29", "mpp30", "mpp31",
25139a230aaSStefan Roese						       "mpp32", "mpp37", "mpp38",
25239a230aaSStefan Roese						       "mpp39", "mpp40", "mpp41";
25339a230aaSStefan Roese					marvell,function = "ge1";
25439a230aaSStefan Roese				};
25539a230aaSStefan Roese
25639a230aaSStefan Roese				i2c0_pins: i2c-pins-0 {
25739a230aaSStefan Roese					marvell,pins = "mpp2", "mpp3";
25839a230aaSStefan Roese					marvell,function = "i2c0";
25939a230aaSStefan Roese				};
26039a230aaSStefan Roese
26139a230aaSStefan Roese				mdio_pins: mdio-pins {
26239a230aaSStefan Roese					marvell,pins = "mpp4", "mpp5";
26339a230aaSStefan Roese					marvell,function = "ge";
26439a230aaSStefan Roese				};
26539a230aaSStefan Roese
26639a230aaSStefan Roese				ref_clk0_pins: ref-clk-pins-0 {
26739a230aaSStefan Roese					marvell,pins = "mpp45";
26839a230aaSStefan Roese					marvell,function = "ref";
26939a230aaSStefan Roese				};
27039a230aaSStefan Roese
27139a230aaSStefan Roese				ref_clk1_pins: ref-clk-pins-1 {
27239a230aaSStefan Roese					marvell,pins = "mpp46";
27339a230aaSStefan Roese					marvell,function = "ref";
27439a230aaSStefan Roese				};
27539a230aaSStefan Roese
27639a230aaSStefan Roese				spi0_pins: spi-pins-0 {
27739a230aaSStefan Roese					marvell,pins = "mpp22", "mpp23", "mpp24",
27839a230aaSStefan Roese						       "mpp25";
27939a230aaSStefan Roese					marvell,function = "spi0";
28039a230aaSStefan Roese				};
28139a230aaSStefan Roese
28239a230aaSStefan Roese				spi1_pins: spi-pins-1 {
28339a230aaSStefan Roese					marvell,pins = "mpp56", "mpp57", "mpp58",
28439a230aaSStefan Roese						       "mpp59";
28539a230aaSStefan Roese					marvell,function = "spi1";
28639a230aaSStefan Roese				};
28739a230aaSStefan Roese
28839a230aaSStefan Roese				uart0_pins: uart-pins-0 {
28939a230aaSStefan Roese					marvell,pins = "mpp0", "mpp1";
29039a230aaSStefan Roese					marvell,function = "ua0";
29139a230aaSStefan Roese				};
29239a230aaSStefan Roese
29339a230aaSStefan Roese				uart1_pins: uart-pins-1 {
29439a230aaSStefan Roese					marvell,pins = "mpp19", "mpp20";
29539a230aaSStefan Roese					marvell,function = "ua1";
29639a230aaSStefan Roese				};
29739a230aaSStefan Roese
29839a230aaSStefan Roese				sdhci_pins: sdhci-pins {
29939a230aaSStefan Roese					marvell,pins = "mpp48", "mpp49", "mpp50",
30039a230aaSStefan Roese						       "mpp52", "mpp53", "mpp54",
30139a230aaSStefan Roese						       "mpp55", "mpp57", "mpp58",
30239a230aaSStefan Roese						       "mpp59";
30339a230aaSStefan Roese					marvell,function = "sd0";
30439a230aaSStefan Roese				};
30539a230aaSStefan Roese
30639a230aaSStefan Roese				sata0_pins: sata-pins-0 {
30739a230aaSStefan Roese					marvell,pins = "mpp20";
30839a230aaSStefan Roese					marvell,function = "sata0";
30939a230aaSStefan Roese				};
31039a230aaSStefan Roese
31139a230aaSStefan Roese				sata1_pins: sata-pins-1 {
31239a230aaSStefan Roese					marvell,pins = "mpp19";
31339a230aaSStefan Roese					marvell,function = "sata1";
31439a230aaSStefan Roese				};
31539a230aaSStefan Roese
31639a230aaSStefan Roese				sata2_pins: sata-pins-2 {
31739a230aaSStefan Roese					marvell,pins = "mpp47";
31839a230aaSStefan Roese					marvell,function = "sata2";
31939a230aaSStefan Roese				};
32039a230aaSStefan Roese
32139a230aaSStefan Roese				sata3_pins: sata-pins-3 {
32239a230aaSStefan Roese					marvell,pins = "mpp44";
32339a230aaSStefan Roese					marvell,function = "sata3";
32439a230aaSStefan Roese				};
32539a230aaSStefan Roese			};
32639a230aaSStefan Roese
32739a230aaSStefan Roese			gpio0: gpio@18100 {
32839a230aaSStefan Roese				compatible = "marvell,orion-gpio";
32939a230aaSStefan Roese				reg = <0x18100 0x40>;
33039a230aaSStefan Roese				ngpios = <32>;
33139a230aaSStefan Roese				gpio-controller;
33239a230aaSStefan Roese				#gpio-cells = <2>;
33339a230aaSStefan Roese				interrupt-controller;
33439a230aaSStefan Roese				#interrupt-cells = <2>;
33539a230aaSStefan Roese				interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
33639a230aaSStefan Roese					     <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
33739a230aaSStefan Roese					     <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
33839a230aaSStefan Roese					     <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
33939a230aaSStefan Roese			};
34039a230aaSStefan Roese
34139a230aaSStefan Roese			gpio1: gpio@18140 {
34239a230aaSStefan Roese				compatible = "marvell,orion-gpio";
34339a230aaSStefan Roese				reg = <0x18140 0x40>;
34439a230aaSStefan Roese				ngpios = <28>;
34539a230aaSStefan Roese				gpio-controller;
34639a230aaSStefan Roese				#gpio-cells = <2>;
34739a230aaSStefan Roese				interrupt-controller;
34839a230aaSStefan Roese				#interrupt-cells = <2>;
34939a230aaSStefan Roese				interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
35039a230aaSStefan Roese					     <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
35139a230aaSStefan Roese					     <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
35239a230aaSStefan Roese					     <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
35339a230aaSStefan Roese			};
35439a230aaSStefan Roese
35539a230aaSStefan Roese			system-controller@18200 {
35639a230aaSStefan Roese				compatible = "marvell,armada-380-system-controller",
35739a230aaSStefan Roese					     "marvell,armada-370-xp-system-controller";
35839a230aaSStefan Roese				reg = <0x18200 0x100>;
35939a230aaSStefan Roese			};
36039a230aaSStefan Roese
36139a230aaSStefan Roese			gateclk: clock-gating-control@18220 {
36239a230aaSStefan Roese				compatible = "marvell,armada-380-gating-clock";
36339a230aaSStefan Roese				reg = <0x18220 0x4>;
36439a230aaSStefan Roese				clocks = <&coreclk 0>;
36539a230aaSStefan Roese				#clock-cells = <1>;
36639a230aaSStefan Roese			};
36739a230aaSStefan Roese
36839a230aaSStefan Roese			coreclk: mvebu-sar@18600 {
36939a230aaSStefan Roese				compatible = "marvell,armada-380-core-clock";
37039a230aaSStefan Roese				reg = <0x18600 0x04>;
37139a230aaSStefan Roese				#clock-cells = <1>;
37239a230aaSStefan Roese			};
37339a230aaSStefan Roese
37439a230aaSStefan Roese			mbusc: mbus-controller@20000 {
37539a230aaSStefan Roese				compatible = "marvell,mbus-controller";
37639a230aaSStefan Roese				reg = <0x20000 0x100>, <0x20180 0x20>;
37739a230aaSStefan Roese			};
37839a230aaSStefan Roese
37939a230aaSStefan Roese			mpic: interrupt-controller@20a00 {
38039a230aaSStefan Roese				compatible = "marvell,mpic";
38139a230aaSStefan Roese				reg = <0x20a00 0x2d0>, <0x21070 0x58>;
38239a230aaSStefan Roese				#interrupt-cells = <1>;
38339a230aaSStefan Roese				#size-cells = <1>;
38439a230aaSStefan Roese				interrupt-controller;
38539a230aaSStefan Roese				msi-controller;
38639a230aaSStefan Roese				interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
38739a230aaSStefan Roese			};
38839a230aaSStefan Roese
38939a230aaSStefan Roese			timer@20300 {
39039a230aaSStefan Roese				compatible = "marvell,armada-380-timer",
39139a230aaSStefan Roese					     "marvell,armada-xp-timer";
39239a230aaSStefan Roese				reg = <0x20300 0x30>, <0x21040 0x30>;
39339a230aaSStefan Roese				interrupts-extended = <&gic  GIC_SPI  8 IRQ_TYPE_LEVEL_HIGH>,
39439a230aaSStefan Roese						      <&gic  GIC_SPI  9 IRQ_TYPE_LEVEL_HIGH>,
39539a230aaSStefan Roese						      <&gic  GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
39639a230aaSStefan Roese						      <&gic  GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
39739a230aaSStefan Roese						      <&mpic 5>,
39839a230aaSStefan Roese						      <&mpic 6>;
39939a230aaSStefan Roese				clocks = <&coreclk 2>, <&refclk>;
40039a230aaSStefan Roese				clock-names = "nbclk", "fixed";
40139a230aaSStefan Roese			};
40239a230aaSStefan Roese
40339a230aaSStefan Roese			watchdog@20300 {
40439a230aaSStefan Roese				compatible = "marvell,armada-380-wdt";
40539a230aaSStefan Roese				reg = <0x20300 0x34>, <0x20704 0x4>, <0x18260 0x4>;
40639a230aaSStefan Roese				clocks = <&coreclk 2>, <&refclk>;
40739a230aaSStefan Roese				clock-names = "nbclk", "fixed";
40839a230aaSStefan Roese			};
40939a230aaSStefan Roese
41039a230aaSStefan Roese			cpurst@20800 {
41139a230aaSStefan Roese				compatible = "marvell,armada-370-cpu-reset";
41239a230aaSStefan Roese				reg = <0x20800 0x10>;
41339a230aaSStefan Roese			};
41439a230aaSStefan Roese
41539a230aaSStefan Roese			mpcore-soc-ctrl@20d20 {
41639a230aaSStefan Roese				compatible = "marvell,armada-380-mpcore-soc-ctrl";
41739a230aaSStefan Roese				reg = <0x20d20 0x6c>;
41839a230aaSStefan Roese			};
41939a230aaSStefan Roese
42039a230aaSStefan Roese			coherency-fabric@21010 {
42139a230aaSStefan Roese				compatible = "marvell,armada-380-coherency-fabric";
42239a230aaSStefan Roese				reg = <0x21010 0x1c>;
42339a230aaSStefan Roese			};
42439a230aaSStefan Roese
42539a230aaSStefan Roese			pmsu@22000 {
42639a230aaSStefan Roese				compatible = "marvell,armada-380-pmsu";
42739a230aaSStefan Roese				reg = <0x22000 0x1000>;
42839a230aaSStefan Roese			};
42939a230aaSStefan Roese
43039a230aaSStefan Roese			eth1: ethernet@30000 {
43139a230aaSStefan Roese				compatible = "marvell,armada-370-neta";
43239a230aaSStefan Roese				reg = <0x30000 0x4000>;
43339a230aaSStefan Roese				interrupts-extended = <&mpic 10>;
43439a230aaSStefan Roese				clocks = <&gateclk 3>;
43539a230aaSStefan Roese				status = "disabled";
43639a230aaSStefan Roese			};
43739a230aaSStefan Roese
43839a230aaSStefan Roese			eth2: ethernet@34000 {
43939a230aaSStefan Roese				compatible = "marvell,armada-370-neta";
44039a230aaSStefan Roese				reg = <0x34000 0x4000>;
44139a230aaSStefan Roese				interrupts-extended = <&mpic 12>;
44239a230aaSStefan Roese				clocks = <&gateclk 2>;
44339a230aaSStefan Roese				status = "disabled";
44439a230aaSStefan Roese			};
44539a230aaSStefan Roese
44639a230aaSStefan Roese			usb@58000 {
44739a230aaSStefan Roese				compatible = "marvell,orion-ehci";
44839a230aaSStefan Roese				reg = <0x58000 0x500>;
44939a230aaSStefan Roese				interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
45039a230aaSStefan Roese				clocks = <&gateclk 18>;
45139a230aaSStefan Roese				status = "disabled";
45239a230aaSStefan Roese			};
45339a230aaSStefan Roese
45439a230aaSStefan Roese			xor@60800 {
45539a230aaSStefan Roese				compatible = "marvell,orion-xor";
45639a230aaSStefan Roese				reg = <0x60800 0x100
45739a230aaSStefan Roese				       0x60a00 0x100>;
45839a230aaSStefan Roese				clocks = <&gateclk 22>;
45939a230aaSStefan Roese				status = "okay";
46039a230aaSStefan Roese
46139a230aaSStefan Roese				xor00 {
46239a230aaSStefan Roese					interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
46339a230aaSStefan Roese					dmacap,memcpy;
46439a230aaSStefan Roese					dmacap,xor;
46539a230aaSStefan Roese				};
46639a230aaSStefan Roese				xor01 {
46739a230aaSStefan Roese					interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
46839a230aaSStefan Roese					dmacap,memcpy;
46939a230aaSStefan Roese					dmacap,xor;
47039a230aaSStefan Roese					dmacap,memset;
47139a230aaSStefan Roese				};
47239a230aaSStefan Roese			};
47339a230aaSStefan Roese
47439a230aaSStefan Roese			xor@60900 {
47539a230aaSStefan Roese				compatible = "marvell,orion-xor";
47639a230aaSStefan Roese				reg = <0x60900 0x100
47739a230aaSStefan Roese				       0x60b00 0x100>;
47839a230aaSStefan Roese				clocks = <&gateclk 28>;
47939a230aaSStefan Roese				status = "okay";
48039a230aaSStefan Roese
48139a230aaSStefan Roese				xor10 {
48239a230aaSStefan Roese					interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
48339a230aaSStefan Roese					dmacap,memcpy;
48439a230aaSStefan Roese					dmacap,xor;
48539a230aaSStefan Roese				};
48639a230aaSStefan Roese				xor11 {
48739a230aaSStefan Roese					interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
48839a230aaSStefan Roese					dmacap,memcpy;
48939a230aaSStefan Roese					dmacap,xor;
49039a230aaSStefan Roese					dmacap,memset;
49139a230aaSStefan Roese				};
49239a230aaSStefan Roese			};
49339a230aaSStefan Roese
49439a230aaSStefan Roese			eth0: ethernet@70000 {
49539a230aaSStefan Roese				compatible = "marvell,armada-370-neta";
49639a230aaSStefan Roese				reg = <0x70000 0x4000>;
49739a230aaSStefan Roese				interrupts-extended = <&mpic 8>;
49839a230aaSStefan Roese				clocks = <&gateclk 4>;
49939a230aaSStefan Roese				status = "disabled";
50039a230aaSStefan Roese			};
50139a230aaSStefan Roese
50239a230aaSStefan Roese			mdio: mdio@72004 {
50339a230aaSStefan Roese				#address-cells = <1>;
50439a230aaSStefan Roese				#size-cells = <0>;
50539a230aaSStefan Roese				compatible = "marvell,orion-mdio";
50639a230aaSStefan Roese				reg = <0x72004 0x4>;
50739a230aaSStefan Roese				clocks = <&gateclk 4>;
50839a230aaSStefan Roese			};
50939a230aaSStefan Roese
51039a230aaSStefan Roese			rtc@a3800 {
51139a230aaSStefan Roese				compatible = "marvell,armada-380-rtc";
51239a230aaSStefan Roese				reg = <0xa3800 0x20>, <0x184a0 0x0c>;
51339a230aaSStefan Roese				reg-names = "rtc", "rtc-soc";
51439a230aaSStefan Roese				interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
51539a230aaSStefan Roese			};
51639a230aaSStefan Roese
51739a230aaSStefan Roese			sata@a8000 {
51839a230aaSStefan Roese				compatible = "marvell,armada-380-ahci";
51939a230aaSStefan Roese				reg = <0xa8000 0x2000>;
52039a230aaSStefan Roese				interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
52139a230aaSStefan Roese				clocks = <&gateclk 15>;
52239a230aaSStefan Roese				status = "disabled";
52339a230aaSStefan Roese			};
52439a230aaSStefan Roese
52539a230aaSStefan Roese			sata@e0000 {
52639a230aaSStefan Roese				compatible = "marvell,armada-380-ahci";
52739a230aaSStefan Roese				reg = <0xe0000 0x2000>;
52839a230aaSStefan Roese				interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
52939a230aaSStefan Roese				clocks = <&gateclk 30>;
53039a230aaSStefan Roese				status = "disabled";
53139a230aaSStefan Roese			};
53239a230aaSStefan Roese
53339a230aaSStefan Roese			coredivclk: clock@e4250 {
53439a230aaSStefan Roese				compatible = "marvell,armada-380-corediv-clock";
53539a230aaSStefan Roese				reg = <0xe4250 0xc>;
53639a230aaSStefan Roese				#clock-cells = <1>;
53739a230aaSStefan Roese				clocks = <&mainpll>;
53839a230aaSStefan Roese				clock-output-names = "nand";
53939a230aaSStefan Roese			};
54039a230aaSStefan Roese
54139a230aaSStefan Roese			thermal@e8078 {
54239a230aaSStefan Roese				compatible = "marvell,armada380-thermal";
54339a230aaSStefan Roese				reg = <0xe4078 0x4>, <0xe4074 0x4>;
54439a230aaSStefan Roese				status = "okay";
54539a230aaSStefan Roese			};
54639a230aaSStefan Roese
54739a230aaSStefan Roese			flash@d0000 {
54839a230aaSStefan Roese				compatible = "marvell,armada370-nand";
54939a230aaSStefan Roese				reg = <0xd0000 0x54>;
55039a230aaSStefan Roese				#address-cells = <1>;
55139a230aaSStefan Roese				#size-cells = <1>;
55239a230aaSStefan Roese				interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
55339a230aaSStefan Roese				clocks = <&coredivclk 0>;
55439a230aaSStefan Roese				status = "disabled";
55539a230aaSStefan Roese			};
55639a230aaSStefan Roese
55739a230aaSStefan Roese			sdhci@d8000 {
55839a230aaSStefan Roese				compatible = "marvell,armada-380-sdhci";
55939a230aaSStefan Roese				reg-names = "sdhci", "mbus", "conf-sdio3";
56039a230aaSStefan Roese				reg = <0xd8000 0x1000>,
56139a230aaSStefan Roese					<0xdc000 0x100>,
56239a230aaSStefan Roese					<0x18454 0x4>;
56339a230aaSStefan Roese				interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
56439a230aaSStefan Roese				clocks = <&gateclk 17>;
56539a230aaSStefan Roese				mrvl,clk-delay-cycles = <0x1F>;
56639a230aaSStefan Roese				status = "disabled";
56739a230aaSStefan Roese			};
56839a230aaSStefan Roese
56939a230aaSStefan Roese			usb3@f0000 {
57039a230aaSStefan Roese				compatible = "marvell,armada-380-xhci";
57139a230aaSStefan Roese				reg = <0xf0000 0x4000>,<0xf4000 0x4000>;
57239a230aaSStefan Roese				interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
57339a230aaSStefan Roese				clocks = <&gateclk 9>;
57439a230aaSStefan Roese				status = "disabled";
57539a230aaSStefan Roese			};
57639a230aaSStefan Roese
57739a230aaSStefan Roese			usb3@f8000 {
57839a230aaSStefan Roese				compatible = "marvell,armada-380-xhci";
57939a230aaSStefan Roese				reg = <0xf8000 0x4000>,<0xfc000 0x4000>;
58039a230aaSStefan Roese				interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
58139a230aaSStefan Roese				clocks = <&gateclk 10>;
58239a230aaSStefan Roese				status = "disabled";
58339a230aaSStefan Roese			};
58439a230aaSStefan Roese		};
58539a230aaSStefan Roese	};
58639a230aaSStefan Roese
58739a230aaSStefan Roese	clocks {
58839a230aaSStefan Roese		/* 2 GHz fixed main PLL */
58939a230aaSStefan Roese		mainpll: mainpll {
59039a230aaSStefan Roese			compatible = "fixed-clock";
59139a230aaSStefan Roese			#clock-cells = <0>;
59239a230aaSStefan Roese			clock-frequency = <1000000000>;
59339a230aaSStefan Roese		};
59439a230aaSStefan Roese
59539a230aaSStefan Roese		/* 25 MHz reference crystal */
59639a230aaSStefan Roese		refclk: oscillator {
59739a230aaSStefan Roese			compatible = "fixed-clock";
59839a230aaSStefan Roese			#clock-cells = <0>;
59939a230aaSStefan Roese			clock-frequency = <25000000>;
60039a230aaSStefan Roese		};
60139a230aaSStefan Roese	};
60239a230aaSStefan Roese};
603