xref: /openbmc/u-boot/arch/arm/dts/armada-ap806.dtsi (revision 9eb34681)
11335483aSStefan Roese/*
21335483aSStefan Roese * Copyright (C) 2016 Marvell Technology Group Ltd.
31335483aSStefan Roese *
41335483aSStefan Roese * This file is dual-licensed: you can use it either under the terms
51335483aSStefan Roese * of the GPLv2 or the X11 license, at your option. Note that this dual
61335483aSStefan Roese * licensing only applies to this file, and not this project as a
71335483aSStefan Roese * whole.
81335483aSStefan Roese *
91335483aSStefan Roese *  a) This library is free software; you can redistribute it and/or
101335483aSStefan Roese *     modify it under the terms of the GNU General Public License as
111335483aSStefan Roese *     published by the Free Software Foundation; either version 2 of the
121335483aSStefan Roese *     License, or (at your option) any later version.
131335483aSStefan Roese *
141335483aSStefan Roese *     This library is distributed in the hope that it will be useful,
151335483aSStefan Roese *     but WITHOUT ANY WARRANTY; without even the implied warranty of
161335483aSStefan Roese *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
171335483aSStefan Roese *     GNU General Public License for more details.
181335483aSStefan Roese *
191335483aSStefan Roese * Or, alternatively,
201335483aSStefan Roese *
211335483aSStefan Roese *  b) Permission is hereby granted, free of charge, to any person
221335483aSStefan Roese *     obtaining a copy of this software and associated documentation
231335483aSStefan Roese *     files (the "Software"), to deal in the Software without
241335483aSStefan Roese *     restriction, including without limitation the rights to use,
251335483aSStefan Roese *     copy, modify, merge, publish, distribute, sublicense, and/or
261335483aSStefan Roese *     sell copies of the Software, and to permit persons to whom the
271335483aSStefan Roese *     Software is furnished to do so, subject to the following
281335483aSStefan Roese *     conditions:
291335483aSStefan Roese *
301335483aSStefan Roese *     The above copyright notice and this permission notice shall be
311335483aSStefan Roese *     included in all copies or substantial portions of the Software.
321335483aSStefan Roese *
331335483aSStefan Roese *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
341335483aSStefan Roese *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
351335483aSStefan Roese *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
361335483aSStefan Roese *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
371335483aSStefan Roese *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
381335483aSStefan Roese *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
391335483aSStefan Roese *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
401335483aSStefan Roese *     OTHER DEALINGS IN THE SOFTWARE.
411335483aSStefan Roese */
421335483aSStefan Roese
431335483aSStefan Roese/*
441335483aSStefan Roese * Device Tree file for Marvell Armada AP806.
451335483aSStefan Roese */
461335483aSStefan Roese
471335483aSStefan Roese#include <dt-bindings/interrupt-controller/arm-gic.h>
481335483aSStefan Roese
491335483aSStefan Roese/dts-v1/;
501335483aSStefan Roese
511335483aSStefan Roese/ {
521335483aSStefan Roese	model = "Marvell Armada AP806";
531335483aSStefan Roese	compatible = "marvell,armada-ap806";
541335483aSStefan Roese	#address-cells = <2>;
551335483aSStefan Roese	#size-cells = <2>;
561335483aSStefan Roese
571335483aSStefan Roese	aliases {
581335483aSStefan Roese		serial0 = &uart0;
591335483aSStefan Roese		serial1 = &uart1;
601335483aSStefan Roese	};
611335483aSStefan Roese
621335483aSStefan Roese	psci {
631335483aSStefan Roese		compatible = "arm,psci-0.2";
641335483aSStefan Roese		method = "smc";
651335483aSStefan Roese	};
661335483aSStefan Roese
671335483aSStefan Roese	ap806 {
681335483aSStefan Roese		#address-cells = <2>;
691335483aSStefan Roese		#size-cells = <2>;
701335483aSStefan Roese		compatible = "simple-bus";
711335483aSStefan Roese		interrupt-parent = <&gic>;
721335483aSStefan Roese		ranges;
731335483aSStefan Roese
741335483aSStefan Roese		config-space {
751335483aSStefan Roese			#address-cells = <1>;
761335483aSStefan Roese			#size-cells = <1>;
771335483aSStefan Roese			compatible = "simple-bus";
781335483aSStefan Roese			ranges = <0x0 0x0 0xf0000000 0x1000000>;
791335483aSStefan Roese
801335483aSStefan Roese			gic: interrupt-controller@210000 {
811335483aSStefan Roese				compatible = "arm,gic-400";
821335483aSStefan Roese				#interrupt-cells = <3>;
831335483aSStefan Roese				#address-cells = <1>;
841335483aSStefan Roese				#size-cells = <1>;
851335483aSStefan Roese				ranges;
861335483aSStefan Roese				interrupt-controller;
871335483aSStefan Roese				interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
881335483aSStefan Roese				reg = <0x210000 0x10000>,
891335483aSStefan Roese				      <0x220000 0x20000>,
901335483aSStefan Roese				      <0x240000 0x20000>,
911335483aSStefan Roese				      <0x260000 0x20000>;
921335483aSStefan Roese
931335483aSStefan Roese				gic_v2m0: v2m@280000 {
941335483aSStefan Roese					compatible = "arm,gic-v2m-frame";
951335483aSStefan Roese					msi-controller;
961335483aSStefan Roese					reg = <0x280000 0x1000>;
971335483aSStefan Roese					arm,msi-base-spi = <160>;
981335483aSStefan Roese					arm,msi-num-spis = <32>;
991335483aSStefan Roese				};
1001335483aSStefan Roese				gic_v2m1: v2m@290000 {
1011335483aSStefan Roese					compatible = "arm,gic-v2m-frame";
1021335483aSStefan Roese					msi-controller;
1031335483aSStefan Roese					reg = <0x290000 0x1000>;
1041335483aSStefan Roese					arm,msi-base-spi = <192>;
1051335483aSStefan Roese					arm,msi-num-spis = <32>;
1061335483aSStefan Roese				};
1071335483aSStefan Roese				gic_v2m2: v2m@2a0000 {
1081335483aSStefan Roese					compatible = "arm,gic-v2m-frame";
1091335483aSStefan Roese					msi-controller;
1101335483aSStefan Roese					reg = <0x2a0000 0x1000>;
1111335483aSStefan Roese					arm,msi-base-spi = <224>;
1121335483aSStefan Roese					arm,msi-num-spis = <32>;
1131335483aSStefan Roese				};
1141335483aSStefan Roese				gic_v2m3: v2m@2b0000 {
1151335483aSStefan Roese					compatible = "arm,gic-v2m-frame";
1161335483aSStefan Roese					msi-controller;
1171335483aSStefan Roese					reg = <0x2b0000 0x1000>;
1181335483aSStefan Roese					arm,msi-base-spi = <256>;
1191335483aSStefan Roese					arm,msi-num-spis = <32>;
1201335483aSStefan Roese				};
1211335483aSStefan Roese			};
1221335483aSStefan Roese
1231335483aSStefan Roese			timer {
1241335483aSStefan Roese				compatible = "arm,armv8-timer";
1251335483aSStefan Roese				interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>,
1261335483aSStefan Roese					     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>,
1271335483aSStefan Roese					     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>,
1281335483aSStefan Roese					     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
1291335483aSStefan Roese			};
1301335483aSStefan Roese
1311335483aSStefan Roese			odmi: odmi@300000 {
1321335483aSStefan Roese				compatible = "marvell,odmi-controller";
1331335483aSStefan Roese				interrupt-controller;
1341335483aSStefan Roese				msi-controller;
1351335483aSStefan Roese				marvell,odmi-frames = <4>;
1361335483aSStefan Roese				reg = <0x300000 0x4000>,
1371335483aSStefan Roese				      <0x304000 0x4000>,
1381335483aSStefan Roese				      <0x308000 0x4000>,
1391335483aSStefan Roese				      <0x30C000 0x4000>;
1401335483aSStefan Roese				marvell,spi-base = <128>, <136>, <144>, <152>;
1411335483aSStefan Roese			};
1421335483aSStefan Roese
143f99386c5SKonstantin Porotchkin			ap_pinctl: ap-pinctl@6F4000 {
144f99386c5SKonstantin Porotchkin				compatible = "marvell,armada-ap806-pinctrl";
145f99386c5SKonstantin Porotchkin				bank-name ="apn-806";
146f99386c5SKonstantin Porotchkin				reg = <0x6F4000 0x10>;
147f99386c5SKonstantin Porotchkin				pin-count = <20>;
148f99386c5SKonstantin Porotchkin				max-func = <3>;
149f99386c5SKonstantin Porotchkin
150f99386c5SKonstantin Porotchkin				ap_i2c0_pins: i2c-pins-0 {
151f99386c5SKonstantin Porotchkin					marvell,pins = < 4 5 >;
152f99386c5SKonstantin Porotchkin					marvell,function = <3>;
153f99386c5SKonstantin Porotchkin				};
154f99386c5SKonstantin Porotchkin				ap_emmc_pins: emmc-pins-0 {
155f99386c5SKonstantin Porotchkin					marvell,pins = < 0 1 2 3 4 5 6 7
156f99386c5SKonstantin Porotchkin							 8 9 10 >;
157f99386c5SKonstantin Porotchkin					marvell,function = <1>;
158f99386c5SKonstantin Porotchkin				};
159f99386c5SKonstantin Porotchkin			};
160f99386c5SKonstantin Porotchkin
161*9eb34681SKonstantin Porotchkin			ap_gpio0: gpio@6F5040 {
162*9eb34681SKonstantin Porotchkin				compatible = "marvell,orion-gpio";
163*9eb34681SKonstantin Porotchkin				reg = <0x6F5040 0x40>;
164*9eb34681SKonstantin Porotchkin				ngpios = <20>;
165*9eb34681SKonstantin Porotchkin				gpio-controller;
166*9eb34681SKonstantin Porotchkin				#gpio-cells = <2>;
167*9eb34681SKonstantin Porotchkin			};
168*9eb34681SKonstantin Porotchkin
1691335483aSStefan Roese			xor@400000 {
1701335483aSStefan Roese				compatible = "marvell,mv-xor-v2";
1711335483aSStefan Roese				reg = <0x400000 0x1000>,
1721335483aSStefan Roese				      <0x410000 0x1000>;
1731335483aSStefan Roese				msi-parent = <&gic_v2m0>;
1741335483aSStefan Roese				dma-coherent;
1751335483aSStefan Roese			};
1761335483aSStefan Roese
1771335483aSStefan Roese			xor@420000 {
1781335483aSStefan Roese				compatible = "marvell,mv-xor-v2";
1791335483aSStefan Roese				reg = <0x420000 0x1000>,
1801335483aSStefan Roese				      <0x430000 0x1000>;
1811335483aSStefan Roese				msi-parent = <&gic_v2m0>;
1821335483aSStefan Roese				dma-coherent;
1831335483aSStefan Roese			};
1841335483aSStefan Roese
1851335483aSStefan Roese			xor@440000 {
1861335483aSStefan Roese				compatible = "marvell,mv-xor-v2";
1871335483aSStefan Roese				reg = <0x440000 0x1000>,
1881335483aSStefan Roese				      <0x450000 0x1000>;
1891335483aSStefan Roese				msi-parent = <&gic_v2m0>;
1901335483aSStefan Roese				dma-coherent;
1911335483aSStefan Roese			};
1921335483aSStefan Roese
1931335483aSStefan Roese			xor@460000 {
1941335483aSStefan Roese				compatible = "marvell,mv-xor-v2";
1951335483aSStefan Roese				reg = <0x460000 0x1000>,
1961335483aSStefan Roese				      <0x470000 0x1000>;
1971335483aSStefan Roese				msi-parent = <&gic_v2m0>;
1981335483aSStefan Roese				dma-coherent;
1991335483aSStefan Roese			};
2001335483aSStefan Roese
2011335483aSStefan Roese			spi0: spi@510600 {
2021335483aSStefan Roese				compatible = "marvell,armada-380-spi";
2031335483aSStefan Roese				reg = <0x510600 0x50>;
2041335483aSStefan Roese				#address-cells = <1>;
2051335483aSStefan Roese				#size-cells = <0>;
2061335483aSStefan Roese				cell-index = <0>;
2071335483aSStefan Roese				interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
2081335483aSStefan Roese				clocks = <&ap_syscon 3>;
2091335483aSStefan Roese				status = "disabled";
2101335483aSStefan Roese			};
2111335483aSStefan Roese
2121335483aSStefan Roese			i2c0: i2c@511000 {
2131335483aSStefan Roese				compatible = "marvell,mv78230-i2c";
2141335483aSStefan Roese				reg = <0x511000 0x20>;
2151335483aSStefan Roese				#address-cells = <1>;
2161335483aSStefan Roese				#size-cells = <0>;
2171335483aSStefan Roese				interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
2181335483aSStefan Roese				timeout-ms = <1000>;
2191335483aSStefan Roese				clocks = <&ap_syscon 3>;
2201335483aSStefan Roese				status = "disabled";
2211335483aSStefan Roese			};
2221335483aSStefan Roese
2231335483aSStefan Roese			uart0: serial@512000 {
2241335483aSStefan Roese				compatible = "snps,dw-apb-uart";
2251335483aSStefan Roese				reg = <0x512000 0x100>;
2261335483aSStefan Roese				reg-shift = <2>;
2271335483aSStefan Roese				interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
2281335483aSStefan Roese				reg-io-width = <1>;
2291335483aSStefan Roese				clocks = <&ap_syscon 3>;
2301335483aSStefan Roese				status = "disabled";
231b5fbf5aaSStefan Roese				clock-frequency = <200000000>;
2321335483aSStefan Roese			};
2331335483aSStefan Roese
2341335483aSStefan Roese			uart1: serial@512100 {
2351335483aSStefan Roese				compatible = "snps,dw-apb-uart";
2361335483aSStefan Roese				reg = <0x512100 0x100>;
2371335483aSStefan Roese				reg-shift = <2>;
2381335483aSStefan Roese				interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
2391335483aSStefan Roese				reg-io-width = <1>;
2401335483aSStefan Roese				clocks = <&ap_syscon 3>;
2411335483aSStefan Roese				status = "disabled";
2421335483aSStefan Roese
2431335483aSStefan Roese			};
2441335483aSStefan Roese
245b14b0b1eSStefan Roese			ap_sdhci0: sdhci@6e0000 {
246b14b0b1eSStefan Roese				compatible = "marvell,armada-8k-sdhci";
247b14b0b1eSStefan Roese				reg = <0x6e0000 0x300>;
248b14b0b1eSStefan Roese				interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
249b14b0b1eSStefan Roese				dma-coherent;
250b14b0b1eSStefan Roese				status = "disabled";
251b14b0b1eSStefan Roese			};
252b14b0b1eSStefan Roese
2531335483aSStefan Roese			ap_syscon: system-controller@6f4000 {
2541335483aSStefan Roese				compatible = "marvell,ap806-system-controller",
2551335483aSStefan Roese					     "syscon";
2561335483aSStefan Roese				#clock-cells = <1>;
2571335483aSStefan Roese				clock-output-names = "ap-cpu-cluster-0",
2581335483aSStefan Roese						     "ap-cpu-cluster-1",
2591335483aSStefan Roese						     "ap-fixed", "ap-mss";
2601335483aSStefan Roese				reg = <0x6f4000 0x1000>;
2611335483aSStefan Roese			};
2621335483aSStefan Roese		};
2631335483aSStefan Roese	};
2641335483aSStefan Roese};
265