| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937 | 
							- From 7409b155562cc19b929b57692b334c5758ffc75d Mon Sep 17 00:00:00 2001
 
- From: Konstantin Porotchkin <[email protected]>
 
- Date: Fri, 4 Oct 2019 16:27:22 +0200
 
- Subject: [PATCH] arm64: dts: marvell: Prepare the introduction of AP807 based
 
-  SoCs
 
- Prepare the support for Marvell AP807 die. This die is very similar to
 
- AP806 but uses different DDR PHY. AP807 is a major component of CN9130
 
- SoC series.
 
- Signed-off-by: Konstantin Porotchkin <[email protected]>
 
- Signed-off-by: Miquel Raynal <[email protected]>
 
- Signed-off-by: Gregory CLEMENT <[email protected]>
 
- ---
 
-  arch/arm64/boot/dts/marvell/armada-ap806.dtsi | 448 +----------------
 
-  arch/arm64/boot/dts/marvell/armada-ap80x.dtsi | 456 ++++++++++++++++++
 
-  2 files changed, 458 insertions(+), 446 deletions(-)
 
-  create mode 100644 arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
 
- --- a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
 
- +++ b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
 
- @@ -5,454 +5,10 @@
 
-   * Device Tree file for Marvell Armada AP806.
 
-   */
 
-  
 
- -#include <dt-bindings/interrupt-controller/arm-gic.h>
 
- -#include <dt-bindings/thermal/thermal.h>
 
- -
 
- -/dts-v1/;
 
- +#define AP_NAME		ap806
 
- +#include "armada-ap80x.dtsi"
 
-  
 
-  / {
 
-  	model = "Marvell Armada AP806";
 
-  	compatible = "marvell,armada-ap806";
 
- -	#address-cells = <2>;
 
- -	#size-cells = <2>;
 
- -
 
- -	aliases {
 
- -		serial0 = &uart0;
 
- -		serial1 = &uart1;
 
- -		gpio0 = &ap_gpio;
 
- -		spi0 = &spi0;
 
- -	};
 
- -
 
- -	psci {
 
- -		compatible = "arm,psci-0.2";
 
- -		method = "smc";
 
- -	};
 
- -
 
- -	reserved-memory {
 
- -		#address-cells = <2>;
 
- -		#size-cells = <2>;
 
- -		ranges;
 
- -
 
- -		/*
 
- -		 * This area matches the mapping done with a
 
- -		 * mainline U-Boot, and should be updated by the
 
- -		 * bootloader.
 
- -		 */
 
- -
 
- -		psci-area@4000000 {
 
- -			reg = <0x0 0x4000000 0x0 0x200000>;
 
- -			no-map;
 
- -		};
 
- -	};
 
- -
 
- -	ap806 {
 
- -		#address-cells = <2>;
 
- -		#size-cells = <2>;
 
- -		compatible = "simple-bus";
 
- -		interrupt-parent = <&gic>;
 
- -		ranges;
 
- -
 
- -		config-space@f0000000 {
 
- -			#address-cells = <1>;
 
- -			#size-cells = <1>;
 
- -			compatible = "simple-bus";
 
- -			ranges = <0x0 0x0 0xf0000000 0x1000000>;
 
- -
 
- -			gic: interrupt-controller@210000 {
 
- -				compatible = "arm,gic-400";
 
- -				#interrupt-cells = <3>;
 
- -				#address-cells = <1>;
 
- -				#size-cells = <1>;
 
- -				ranges;
 
- -				interrupt-controller;
 
- -				interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
 
- -				reg = <0x210000 0x10000>,
 
- -				      <0x220000 0x20000>,
 
- -				      <0x240000 0x20000>,
 
- -				      <0x260000 0x20000>;
 
- -
 
- -				gic_v2m0: v2m@280000 {
 
- -					compatible = "arm,gic-v2m-frame";
 
- -					msi-controller;
 
- -					reg = <0x280000 0x1000>;
 
- -					arm,msi-base-spi = <160>;
 
- -					arm,msi-num-spis = <32>;
 
- -				};
 
- -				gic_v2m1: v2m@290000 {
 
- -					compatible = "arm,gic-v2m-frame";
 
- -					msi-controller;
 
- -					reg = <0x290000 0x1000>;
 
- -					arm,msi-base-spi = <192>;
 
- -					arm,msi-num-spis = <32>;
 
- -				};
 
- -				gic_v2m2: v2m@2a0000 {
 
- -					compatible = "arm,gic-v2m-frame";
 
- -					msi-controller;
 
- -					reg = <0x2a0000 0x1000>;
 
- -					arm,msi-base-spi = <224>;
 
- -					arm,msi-num-spis = <32>;
 
- -				};
 
- -				gic_v2m3: v2m@2b0000 {
 
- -					compatible = "arm,gic-v2m-frame";
 
- -					msi-controller;
 
- -					reg = <0x2b0000 0x1000>;
 
- -					arm,msi-base-spi = <256>;
 
- -					arm,msi-num-spis = <32>;
 
- -				};
 
- -			};
 
- -
 
- -			timer {
 
- -				compatible = "arm,armv8-timer";
 
- -				interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
 
- -					     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
 
- -					     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
 
- -					     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
 
- -			};
 
- -
 
- -			pmu {
 
- -				compatible = "arm,cortex-a72-pmu";
 
- -				interrupt-parent = <&pic>;
 
- -				interrupts = <17>;
 
- -			};
 
- -
 
- -			odmi: odmi@300000 {
 
- -				compatible = "marvell,odmi-controller";
 
- -				interrupt-controller;
 
- -				msi-controller;
 
- -				marvell,odmi-frames = <4>;
 
- -				reg = <0x300000 0x4000>,
 
- -				      <0x304000 0x4000>,
 
- -				      <0x308000 0x4000>,
 
- -				      <0x30C000 0x4000>;
 
- -				marvell,spi-base = <128>, <136>, <144>, <152>;
 
- -			};
 
- -
 
- -			gicp: gicp@3f0040 {
 
- -				compatible = "marvell,ap806-gicp";
 
- -				reg = <0x3f0040 0x10>;
 
- -				marvell,spi-ranges = <64 64>, <288 64>;
 
- -				msi-controller;
 
- -			};
 
- -
 
- -			pic: interrupt-controller@3f0100 {
 
- -				compatible = "marvell,armada-8k-pic";
 
- -				reg = <0x3f0100 0x10>;
 
- -				#interrupt-cells = <1>;
 
- -				interrupt-controller;
 
- -				interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
 
- -			};
 
- -
 
- -			sei: interrupt-controller@3f0200 {
 
- -				compatible = "marvell,ap806-sei";
 
- -				reg = <0x3f0200 0x40>;
 
- -				interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
 
- -				#interrupt-cells = <1>;
 
- -				interrupt-controller;
 
- -				msi-controller;
 
- -			};
 
- -
 
- -			xor@400000 {
 
- -				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 
- -				reg = <0x400000 0x1000>,
 
- -				      <0x410000 0x1000>;
 
- -				msi-parent = <&gic_v2m0>;
 
- -				clocks = <&ap_clk 3>;
 
- -				dma-coherent;
 
- -			};
 
- -
 
- -			xor@420000 {
 
- -				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 
- -				reg = <0x420000 0x1000>,
 
- -				      <0x430000 0x1000>;
 
- -				msi-parent = <&gic_v2m0>;
 
- -				clocks = <&ap_clk 3>;
 
- -				dma-coherent;
 
- -			};
 
- -
 
- -			xor@440000 {
 
- -				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 
- -				reg = <0x440000 0x1000>,
 
- -				      <0x450000 0x1000>;
 
- -				msi-parent = <&gic_v2m0>;
 
- -				clocks = <&ap_clk 3>;
 
- -				dma-coherent;
 
- -			};
 
- -
 
- -			xor@460000 {
 
- -				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 
- -				reg = <0x460000 0x1000>,
 
- -				      <0x470000 0x1000>;
 
- -				msi-parent = <&gic_v2m0>;
 
- -				clocks = <&ap_clk 3>;
 
- -				dma-coherent;
 
- -			};
 
- -
 
- -			spi0: spi@510600 {
 
- -				compatible = "marvell,armada-380-spi";
 
- -				reg = <0x510600 0x50>;
 
- -				#address-cells = <1>;
 
- -				#size-cells = <0>;
 
- -				interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
 
- -				clocks = <&ap_clk 3>;
 
- -				status = "disabled";
 
- -			};
 
- -
 
- -			i2c0: i2c@511000 {
 
- -				compatible = "marvell,mv78230-i2c";
 
- -				reg = <0x511000 0x20>;
 
- -				#address-cells = <1>;
 
- -				#size-cells = <0>;
 
- -				interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
 
- -				timeout-ms = <1000>;
 
- -				clocks = <&ap_clk 3>;
 
- -				status = "disabled";
 
- -			};
 
- -
 
- -			uart0: serial@512000 {
 
- -				compatible = "snps,dw-apb-uart";
 
- -				reg = <0x512000 0x100>;
 
- -				reg-shift = <2>;
 
- -				interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
 
- -				reg-io-width = <1>;
 
- -				clocks = <&ap_clk 3>;
 
- -				status = "disabled";
 
- -			};
 
- -
 
- -			uart1: serial@512100 {
 
- -				compatible = "snps,dw-apb-uart";
 
- -				reg = <0x512100 0x100>;
 
- -				reg-shift = <2>;
 
- -				interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
 
- -				reg-io-width = <1>;
 
- -				clocks = <&ap_clk 3>;
 
- -				status = "disabled";
 
- -
 
- -			};
 
- -
 
- -			watchdog: watchdog@610000 {
 
- -				compatible = "arm,sbsa-gwdt";
 
- -				reg = <0x610000 0x1000>, <0x600000 0x1000>;
 
- -				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
 
- -			};
 
- -
 
- -			ap_sdhci0: sdhci@6e0000 {
 
- -				compatible = "marvell,armada-ap806-sdhci";
 
- -				reg = <0x6e0000 0x300>;
 
- -				interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
 
- -				clock-names = "core";
 
- -				clocks = <&ap_clk 4>;
 
- -				dma-coherent;
 
- -				marvell,xenon-phy-slow-mode;
 
- -				status = "disabled";
 
- -			};
 
- -
 
- -			ap_syscon0: system-controller@6f4000 {
 
- -				compatible = "syscon", "simple-mfd";
 
- -				reg = <0x6f4000 0x2000>;
 
- -
 
- -				ap_clk: clock {
 
- -					compatible = "marvell,ap806-clock";
 
- -					#clock-cells = <1>;
 
- -				};
 
- -
 
- -				ap_pinctrl: pinctrl {
 
- -					compatible = "marvell,ap806-pinctrl";
 
- -
 
- -					uart0_pins: uart0-pins {
 
- -						marvell,pins = "mpp11", "mpp19";
 
- -						marvell,function = "uart0";
 
- -					};
 
- -				};
 
- -
 
- -				ap_gpio: gpio@1040 {
 
- -					compatible = "marvell,armada-8k-gpio";
 
- -					offset = <0x1040>;
 
- -					ngpios = <20>;
 
- -					gpio-controller;
 
- -					#gpio-cells = <2>;
 
- -					gpio-ranges = <&ap_pinctrl 0 0 20>;
 
- -				};
 
- -			};
 
- -
 
- -			ap_syscon1: system-controller@6f8000 {
 
- -				compatible = "syscon", "simple-mfd";
 
- -				reg = <0x6f8000 0x1000>;
 
- -				#address-cells = <1>;
 
- -				#size-cells = <1>;
 
- -
 
- -				cpu_clk: clock-cpu@278 {
 
- -					compatible = "marvell,ap806-cpu-clock";
 
- -					clocks = <&ap_clk 0>, <&ap_clk 1>;
 
- -					#clock-cells = <1>;
 
- -					reg = <0x278 0xa30>;
 
- -				};
 
- -
 
- -				ap_thermal: thermal-sensor@80 {
 
- -					compatible = "marvell,armada-ap806-thermal";
 
- -					reg = <0x80 0x10>;
 
- -					interrupt-parent = <&sei>;
 
- -					interrupts = <18>;
 
- -					#thermal-sensor-cells = <1>;
 
- -				};
 
- -			};
 
- -		};
 
- -	};
 
- -
 
- -	/*
 
- -	 * The thermal IP features one internal sensor plus, if applicable, one
 
- -	 * remote channel wired to one sensor per CPU.
 
- -	 *
 
- -	 * Only one thermal zone per AP/CP may trigger interrupts at a time, the
 
- -	 * first one that will have a critical trip point will be chosen.
 
- -	 */
 
- -	thermal-zones {
 
- -		ap_thermal_ic: ap-thermal-ic {
 
- -			polling-delay-passive = <0>; /* Interrupt driven */
 
- -			polling-delay = <0>; /* Interrupt driven */
 
- -
 
- -			thermal-sensors = <&ap_thermal 0>;
 
- -
 
- -			trips {
 
- -				ap_crit: ap-crit {
 
- -					temperature = <100000>; /* mC degrees */
 
- -					hysteresis = <2000>; /* mC degrees */
 
- -					type = "critical";
 
- -				};
 
- -			};
 
- -
 
- -			cooling-maps { };
 
- -		};
 
- -
 
- -		ap_thermal_cpu0: ap-thermal-cpu0 {
 
- -			polling-delay-passive = <1000>;
 
- -			polling-delay = <1000>;
 
- -
 
- -			thermal-sensors = <&ap_thermal 1>;
 
- -
 
- -			trips {
 
- -				cpu0_hot: cpu0-hot {
 
- -					temperature = <85000>;
 
- -					hysteresis = <2000>;
 
- -					type = "passive";
 
- -				};
 
- -				cpu0_emerg: cpu0-emerg {
 
- -					temperature = <95000>;
 
- -					hysteresis = <2000>;
 
- -					type = "passive";
 
- -				};
 
- -			};
 
- -
 
- -			cooling-maps {
 
- -				map0_hot: map0-hot {
 
- -					trip = <&cpu0_hot>;
 
- -					cooling-device = <&cpu0 1 2>,
 
- -						<&cpu1 1 2>;
 
- -				};
 
- -				map0_emerg: map0-ermerg {
 
- -					trip = <&cpu0_emerg>;
 
- -					cooling-device = <&cpu0 3 3>,
 
- -						<&cpu1 3 3>;
 
- -				};
 
- -			};
 
- -		};
 
- -
 
- -		ap_thermal_cpu1: ap-thermal-cpu1 {
 
- -			polling-delay-passive = <1000>;
 
- -			polling-delay = <1000>;
 
- -
 
- -			thermal-sensors = <&ap_thermal 2>;
 
- -
 
- -			trips {
 
- -				cpu1_hot: cpu1-hot {
 
- -					temperature = <85000>;
 
- -					hysteresis = <2000>;
 
- -					type = "passive";
 
- -				};
 
- -				cpu1_emerg: cpu1-emerg {
 
- -					temperature = <95000>;
 
- -					hysteresis = <2000>;
 
- -					type = "passive";
 
- -				};
 
- -			};
 
- -
 
- -			cooling-maps {
 
- -				map1_hot: map1-hot {
 
- -					trip = <&cpu1_hot>;
 
- -					cooling-device = <&cpu0 1 2>,
 
- -						<&cpu1 1 2>;
 
- -				};
 
- -				map1_emerg: map1-emerg {
 
- -					trip = <&cpu1_emerg>;
 
- -					cooling-device = <&cpu0 3 3>,
 
- -						<&cpu1 3 3>;
 
- -				};
 
- -			};
 
- -		};
 
- -
 
- -		ap_thermal_cpu2: ap-thermal-cpu2 {
 
- -			polling-delay-passive = <1000>;
 
- -			polling-delay = <1000>;
 
- -
 
- -			thermal-sensors = <&ap_thermal 3>;
 
- -
 
- -			trips {
 
- -				cpu2_hot: cpu2-hot {
 
- -					temperature = <85000>;
 
- -					hysteresis = <2000>;
 
- -					type = "passive";
 
- -				};
 
- -				cpu2_emerg: cpu2-emerg {
 
- -					temperature = <95000>;
 
- -					hysteresis = <2000>;
 
- -					type = "passive";
 
- -				};
 
- -			};
 
- -
 
- -			cooling-maps {
 
- -				map2_hot: map2-hot {
 
- -					trip = <&cpu2_hot>;
 
- -					cooling-device = <&cpu2 1 2>,
 
- -						<&cpu3 1 2>;
 
- -				};
 
- -				map2_emerg: map2-emerg {
 
- -					trip = <&cpu2_emerg>;
 
- -					cooling-device = <&cpu2 3 3>,
 
- -						<&cpu3 3 3>;
 
- -				};
 
- -			};
 
- -		};
 
- -
 
- -		ap_thermal_cpu3: ap-thermal-cpu3 {
 
- -			polling-delay-passive = <1000>;
 
- -			polling-delay = <1000>;
 
- -
 
- -			thermal-sensors = <&ap_thermal 4>;
 
- -
 
- -			trips {
 
- -				cpu3_hot: cpu3-hot {
 
- -					temperature = <85000>;
 
- -					hysteresis = <2000>;
 
- -					type = "passive";
 
- -				};
 
- -				cpu3_emerg: cpu3-emerg {
 
- -					temperature = <95000>;
 
- -					hysteresis = <2000>;
 
- -					type = "passive";
 
- -				};
 
- -			};
 
- -
 
- -			cooling-maps {
 
- -				map3_hot: map3-bhot {
 
- -					trip = <&cpu3_hot>;
 
- -					cooling-device = <&cpu2 1 2>,
 
- -						<&cpu3 1 2>;
 
- -				};
 
- -				map3_emerg: map3-emerg {
 
- -					trip = <&cpu3_emerg>;
 
- -					cooling-device = <&cpu2 3 3>,
 
- -						<&cpu3 3 3>;
 
- -				};
 
- -			};
 
- -		};
 
- -	};
 
-  };
 
- --- /dev/null
 
- +++ b/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
 
- @@ -0,0 +1,456 @@
 
- +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 
- +/*
 
- + * Copyright (C) 2019 Marvell Technology Group Ltd.
 
- + *
 
- + * Device Tree file for Marvell Armada AP80x.
 
- + */
 
- +
 
- +#include <dt-bindings/interrupt-controller/arm-gic.h>
 
- +#include <dt-bindings/thermal/thermal.h>
 
- +
 
- +/dts-v1/;
 
- +
 
- +/ {
 
- +	#address-cells = <2>;
 
- +	#size-cells = <2>;
 
- +
 
- +	aliases {
 
- +		serial0 = &uart0;
 
- +		serial1 = &uart1;
 
- +		gpio0 = &ap_gpio;
 
- +		spi0 = &spi0;
 
- +	};
 
- +
 
- +	psci {
 
- +		compatible = "arm,psci-0.2";
 
- +		method = "smc";
 
- +	};
 
- +
 
- +	reserved-memory {
 
- +		#address-cells = <2>;
 
- +		#size-cells = <2>;
 
- +		ranges;
 
- +
 
- +		/*
 
- +		 * This area matches the mapping done with a
 
- +		 * mainline U-Boot, and should be updated by the
 
- +		 * bootloader.
 
- +		 */
 
- +
 
- +		psci-area@4000000 {
 
- +			reg = <0x0 0x4000000 0x0 0x200000>;
 
- +			no-map;
 
- +		};
 
- +	};
 
- +
 
- +	AP_NAME {
 
- +		#address-cells = <2>;
 
- +		#size-cells = <2>;
 
- +		compatible = "simple-bus";
 
- +		interrupt-parent = <&gic>;
 
- +		ranges;
 
- +
 
- +		config-space@f0000000 {
 
- +			#address-cells = <1>;
 
- +			#size-cells = <1>;
 
- +			compatible = "simple-bus";
 
- +			ranges = <0x0 0x0 0xf0000000 0x1000000>;
 
- +
 
- +			gic: interrupt-controller@210000 {
 
- +				compatible = "arm,gic-400";
 
- +				#interrupt-cells = <3>;
 
- +				#address-cells = <1>;
 
- +				#size-cells = <1>;
 
- +				ranges;
 
- +				interrupt-controller;
 
- +				interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
 
- +				reg = <0x210000 0x10000>,
 
- +				      <0x220000 0x20000>,
 
- +				      <0x240000 0x20000>,
 
- +				      <0x260000 0x20000>;
 
- +
 
- +				gic_v2m0: v2m@280000 {
 
- +					compatible = "arm,gic-v2m-frame";
 
- +					msi-controller;
 
- +					reg = <0x280000 0x1000>;
 
- +					arm,msi-base-spi = <160>;
 
- +					arm,msi-num-spis = <32>;
 
- +				};
 
- +				gic_v2m1: v2m@290000 {
 
- +					compatible = "arm,gic-v2m-frame";
 
- +					msi-controller;
 
- +					reg = <0x290000 0x1000>;
 
- +					arm,msi-base-spi = <192>;
 
- +					arm,msi-num-spis = <32>;
 
- +				};
 
- +				gic_v2m2: v2m@2a0000 {
 
- +					compatible = "arm,gic-v2m-frame";
 
- +					msi-controller;
 
- +					reg = <0x2a0000 0x1000>;
 
- +					arm,msi-base-spi = <224>;
 
- +					arm,msi-num-spis = <32>;
 
- +				};
 
- +				gic_v2m3: v2m@2b0000 {
 
- +					compatible = "arm,gic-v2m-frame";
 
- +					msi-controller;
 
- +					reg = <0x2b0000 0x1000>;
 
- +					arm,msi-base-spi = <256>;
 
- +					arm,msi-num-spis = <32>;
 
- +				};
 
- +			};
 
- +
 
- +			timer {
 
- +				compatible = "arm,armv8-timer";
 
- +				interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
 
- +					     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
 
- +					     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
 
- +					     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
 
- +			};
 
- +
 
- +			pmu {
 
- +				compatible = "arm,cortex-a72-pmu";
 
- +				interrupt-parent = <&pic>;
 
- +				interrupts = <17>;
 
- +			};
 
- +
 
- +			odmi: odmi@300000 {
 
- +				compatible = "marvell,odmi-controller";
 
- +				interrupt-controller;
 
- +				msi-controller;
 
- +				marvell,odmi-frames = <4>;
 
- +				reg = <0x300000 0x4000>,
 
- +				      <0x304000 0x4000>,
 
- +				      <0x308000 0x4000>,
 
- +				      <0x30C000 0x4000>;
 
- +				marvell,spi-base = <128>, <136>, <144>, <152>;
 
- +			};
 
- +
 
- +			gicp: gicp@3f0040 {
 
- +				compatible = "marvell,ap806-gicp";
 
- +				reg = <0x3f0040 0x10>;
 
- +				marvell,spi-ranges = <64 64>, <288 64>;
 
- +				msi-controller;
 
- +			};
 
- +
 
- +			pic: interrupt-controller@3f0100 {
 
- +				compatible = "marvell,armada-8k-pic";
 
- +				reg = <0x3f0100 0x10>;
 
- +				#interrupt-cells = <1>;
 
- +				interrupt-controller;
 
- +				interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
 
- +			};
 
- +
 
- +			sei: interrupt-controller@3f0200 {
 
- +				compatible = "marvell,ap806-sei";
 
- +				reg = <0x3f0200 0x40>;
 
- +				interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
 
- +				#interrupt-cells = <1>;
 
- +				interrupt-controller;
 
- +				msi-controller;
 
- +			};
 
- +
 
- +			xor@400000 {
 
- +				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 
- +				reg = <0x400000 0x1000>,
 
- +				      <0x410000 0x1000>;
 
- +				msi-parent = <&gic_v2m0>;
 
- +				clocks = <&ap_clk 3>;
 
- +				dma-coherent;
 
- +			};
 
- +
 
- +			xor@420000 {
 
- +				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 
- +				reg = <0x420000 0x1000>,
 
- +				      <0x430000 0x1000>;
 
- +				msi-parent = <&gic_v2m0>;
 
- +				clocks = <&ap_clk 3>;
 
- +				dma-coherent;
 
- +			};
 
- +
 
- +			xor@440000 {
 
- +				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 
- +				reg = <0x440000 0x1000>,
 
- +				      <0x450000 0x1000>;
 
- +				msi-parent = <&gic_v2m0>;
 
- +				clocks = <&ap_clk 3>;
 
- +				dma-coherent;
 
- +			};
 
- +
 
- +			xor@460000 {
 
- +				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 
- +				reg = <0x460000 0x1000>,
 
- +				      <0x470000 0x1000>;
 
- +				msi-parent = <&gic_v2m0>;
 
- +				clocks = <&ap_clk 3>;
 
- +				dma-coherent;
 
- +			};
 
- +
 
- +			spi0: spi@510600 {
 
- +				compatible = "marvell,armada-380-spi";
 
- +				reg = <0x510600 0x50>;
 
- +				#address-cells = <1>;
 
- +				#size-cells = <0>;
 
- +				interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
 
- +				clocks = <&ap_clk 3>;
 
- +				status = "disabled";
 
- +			};
 
- +
 
- +			i2c0: i2c@511000 {
 
- +				compatible = "marvell,mv78230-i2c";
 
- +				reg = <0x511000 0x20>;
 
- +				#address-cells = <1>;
 
- +				#size-cells = <0>;
 
- +				interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
 
- +				timeout-ms = <1000>;
 
- +				clocks = <&ap_clk 3>;
 
- +				status = "disabled";
 
- +			};
 
- +
 
- +			uart0: serial@512000 {
 
- +				compatible = "snps,dw-apb-uart";
 
- +				reg = <0x512000 0x100>;
 
- +				reg-shift = <2>;
 
- +				interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
 
- +				reg-io-width = <1>;
 
- +				clocks = <&ap_clk 3>;
 
- +				status = "disabled";
 
- +			};
 
- +
 
- +			uart1: serial@512100 {
 
- +				compatible = "snps,dw-apb-uart";
 
- +				reg = <0x512100 0x100>;
 
- +				reg-shift = <2>;
 
- +				interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
 
- +				reg-io-width = <1>;
 
- +				clocks = <&ap_clk 3>;
 
- +				status = "disabled";
 
- +
 
- +			};
 
- +
 
- +			watchdog: watchdog@610000 {
 
- +				compatible = "arm,sbsa-gwdt";
 
- +				reg = <0x610000 0x1000>, <0x600000 0x1000>;
 
- +				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
 
- +			};
 
- +
 
- +			ap_sdhci0: sdhci@6e0000 {
 
- +				compatible = "marvell,armada-ap806-sdhci";
 
- +				reg = <0x6e0000 0x300>;
 
- +				interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
 
- +				clock-names = "core";
 
- +				clocks = <&ap_clk 4>;
 
- +				dma-coherent;
 
- +				marvell,xenon-phy-slow-mode;
 
- +				status = "disabled";
 
- +			};
 
- +
 
- +			ap_syscon0: system-controller@6f4000 {
 
- +				compatible = "syscon", "simple-mfd";
 
- +				reg = <0x6f4000 0x2000>;
 
- +
 
- +				ap_clk: clock {
 
- +					compatible = "marvell,ap806-clock";
 
- +					#clock-cells = <1>;
 
- +				};
 
- +
 
- +				ap_pinctrl: pinctrl {
 
- +					compatible = "marvell,ap806-pinctrl";
 
- +
 
- +					uart0_pins: uart0-pins {
 
- +						marvell,pins = "mpp11", "mpp19";
 
- +						marvell,function = "uart0";
 
- +					};
 
- +				};
 
- +
 
- +				ap_gpio: gpio@1040 {
 
- +					compatible = "marvell,armada-8k-gpio";
 
- +					offset = <0x1040>;
 
- +					ngpios = <20>;
 
- +					gpio-controller;
 
- +					#gpio-cells = <2>;
 
- +					gpio-ranges = <&ap_pinctrl 0 0 20>;
 
- +				};
 
- +			};
 
- +
 
- +			ap_syscon1: system-controller@6f8000 {
 
- +				compatible = "syscon", "simple-mfd";
 
- +				reg = <0x6f8000 0x1000>;
 
- +				#address-cells = <1>;
 
- +				#size-cells = <1>;
 
- +
 
- +				cpu_clk: clock-cpu@278 {
 
- +					compatible = "marvell,ap806-cpu-clock";
 
- +					clocks = <&ap_clk 0>, <&ap_clk 1>;
 
- +					#clock-cells = <1>;
 
- +					reg = <0x278 0xa30>;
 
- +				};
 
- +
 
- +				ap_thermal: thermal-sensor@80 {
 
- +					compatible = "marvell,armada-ap806-thermal";
 
- +					reg = <0x80 0x10>;
 
- +					interrupt-parent = <&sei>;
 
- +					interrupts = <18>;
 
- +					#thermal-sensor-cells = <1>;
 
- +				};
 
- +			};
 
- +		};
 
- +	};
 
- +
 
- +	/*
 
- +	 * The thermal IP features one internal sensor plus, if applicable, one
 
- +	 * remote channel wired to one sensor per CPU.
 
- +	 *
 
- +	 * Only one thermal zone per AP/CP may trigger interrupts at a time, the
 
- +	 * first one that will have a critical trip point will be chosen.
 
- +	 */
 
- +	thermal-zones {
 
- +		ap_thermal_ic: ap-thermal-ic {
 
- +			polling-delay-passive = <0>; /* Interrupt driven */
 
- +			polling-delay = <0>; /* Interrupt driven */
 
- +
 
- +			thermal-sensors = <&ap_thermal 0>;
 
- +
 
- +			trips {
 
- +				ap_crit: ap-crit {
 
- +					temperature = <100000>; /* mC degrees */
 
- +					hysteresis = <2000>; /* mC degrees */
 
- +					type = "critical";
 
- +				};
 
- +			};
 
- +
 
- +			cooling-maps { };
 
- +		};
 
- +
 
- +		ap_thermal_cpu0: ap-thermal-cpu0 {
 
- +			polling-delay-passive = <1000>;
 
- +			polling-delay = <1000>;
 
- +
 
- +			thermal-sensors = <&ap_thermal 1>;
 
- +
 
- +			trips {
 
- +				cpu0_hot: cpu0-hot {
 
- +					temperature = <85000>;
 
- +					hysteresis = <2000>;
 
- +					type = "passive";
 
- +				};
 
- +				cpu0_emerg: cpu0-emerg {
 
- +					temperature = <95000>;
 
- +					hysteresis = <2000>;
 
- +					type = "passive";
 
- +				};
 
- +			};
 
- +
 
- +			cooling-maps {
 
- +				map0_hot: map0-hot {
 
- +					trip = <&cpu0_hot>;
 
- +					cooling-device = <&cpu0 1 2>,
 
- +						<&cpu1 1 2>;
 
- +				};
 
- +				map0_emerg: map0-ermerg {
 
- +					trip = <&cpu0_emerg>;
 
- +					cooling-device = <&cpu0 3 3>,
 
- +						<&cpu1 3 3>;
 
- +				};
 
- +			};
 
- +		};
 
- +
 
- +		ap_thermal_cpu1: ap-thermal-cpu1 {
 
- +			polling-delay-passive = <1000>;
 
- +			polling-delay = <1000>;
 
- +
 
- +			thermal-sensors = <&ap_thermal 2>;
 
- +
 
- +			trips {
 
- +				cpu1_hot: cpu1-hot {
 
- +					temperature = <85000>;
 
- +					hysteresis = <2000>;
 
- +					type = "passive";
 
- +				};
 
- +				cpu1_emerg: cpu1-emerg {
 
- +					temperature = <95000>;
 
- +					hysteresis = <2000>;
 
- +					type = "passive";
 
- +				};
 
- +			};
 
- +
 
- +			cooling-maps {
 
- +				map1_hot: map1-hot {
 
- +					trip = <&cpu1_hot>;
 
- +					cooling-device = <&cpu0 1 2>,
 
- +						<&cpu1 1 2>;
 
- +				};
 
- +				map1_emerg: map1-emerg {
 
- +					trip = <&cpu1_emerg>;
 
- +					cooling-device = <&cpu0 3 3>,
 
- +						<&cpu1 3 3>;
 
- +				};
 
- +			};
 
- +		};
 
- +
 
- +		ap_thermal_cpu2: ap-thermal-cpu2 {
 
- +			polling-delay-passive = <1000>;
 
- +			polling-delay = <1000>;
 
- +
 
- +			thermal-sensors = <&ap_thermal 3>;
 
- +
 
- +			trips {
 
- +				cpu2_hot: cpu2-hot {
 
- +					temperature = <85000>;
 
- +					hysteresis = <2000>;
 
- +					type = "passive";
 
- +				};
 
- +				cpu2_emerg: cpu2-emerg {
 
- +					temperature = <95000>;
 
- +					hysteresis = <2000>;
 
- +					type = "passive";
 
- +				};
 
- +			};
 
- +
 
- +			cooling-maps {
 
- +				map2_hot: map2-hot {
 
- +					trip = <&cpu2_hot>;
 
- +					cooling-device = <&cpu2 1 2>,
 
- +						<&cpu3 1 2>;
 
- +				};
 
- +				map2_emerg: map2-emerg {
 
- +					trip = <&cpu2_emerg>;
 
- +					cooling-device = <&cpu2 3 3>,
 
- +						<&cpu3 3 3>;
 
- +				};
 
- +			};
 
- +		};
 
- +
 
- +		ap_thermal_cpu3: ap-thermal-cpu3 {
 
- +			polling-delay-passive = <1000>;
 
- +			polling-delay = <1000>;
 
- +
 
- +			thermal-sensors = <&ap_thermal 4>;
 
- +
 
- +			trips {
 
- +				cpu3_hot: cpu3-hot {
 
- +					temperature = <85000>;
 
- +					hysteresis = <2000>;
 
- +					type = "passive";
 
- +				};
 
- +				cpu3_emerg: cpu3-emerg {
 
- +					temperature = <95000>;
 
- +					hysteresis = <2000>;
 
- +					type = "passive";
 
- +				};
 
- +			};
 
- +
 
- +			cooling-maps {
 
- +				map3_hot: map3-bhot {
 
- +					trip = <&cpu3_hot>;
 
- +					cooling-device = <&cpu2 1 2>,
 
- +						<&cpu3 1 2>;
 
- +				};
 
- +				map3_emerg: map3-emerg {
 
- +					trip = <&cpu3_emerg>;
 
- +					cooling-device = <&cpu2 3 3>,
 
- +						<&cpu3 3 3>;
 
- +				};
 
- +			};
 
- +		};
 
- +	};
 
- +};
 
 
  |