From 488601720d71ca1d5ce5c07509522d9bceabdf07 Mon Sep 17 00:00:00 2001
From: Robert Eckelmann <longnoserob@gmail.com>
Date: Sun, 21 Dec 2025 11:00:55 +0900
Subject: [PATCH 1/3] dts/marvell/mmp3: merge parts from linux-mmp

Signed-off-by: Robert Eckelmann <longnoserob@gmail.com>
---
 arch/arm/boot/dts/marvell/mmp3.dtsi | 220 +++++++++++++++++++++++++++-
 1 file changed, 219 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/marvell/mmp3.dtsi b/arch/arm/boot/dts/marvell/mmp3.dtsi
index a4fb9203ec1f..03f987888c01 100644
--- a/arch/arm/boot/dts/marvell/mmp3.dtsi
+++ b/arch/arm/boot/dts/marvell/mmp3.dtsi
@@ -42,9 +42,41 @@ axi@d4200000 {
 			compatible = "simple-bus";
 			#address-cells = <1>;
 			#size-cells = <1>;
-			reg = <0xd4200000 0x00200000>;
+			reg = <0xd4200000 0x00200000>,
+			      <0xc0ffd000 0x00003000>;
 			ranges;
 
+			lcd0: lcdc@d420b000 {
+				compatible = "marvell,mmp3-lcd", "marvell,armada-lcdc";
+				reg = <0xd420b000 0x1000>;
+				interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&soc_clocks MMP2_CLK_DISP0_LCDC>,
+					 <&soc_clocks MMP2_CLK_VCTCXO>,
+					 <&soc_clocks MMP2_CLK_DISP0>,
+					 <&soc_clocks MMP2_CLK_DISP1>,
+					 <&soc_clocks MMP3_CLK_PLL3>;
+				clock-names = "periph", "vctcxo",
+					      "disp0", "disp1", "pll3";
+				status = "disabled";
+
+				ports {
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					port@0 {
+						reg = <0>;
+						lcd0_out: endpoint {
+						};
+					};
+
+					port@1 {
+						reg = <1>;
+						hdmi0_out: endpoint {
+						};
+					};
+				};
+			};
+
 			interrupt-controller@d4282000 {
 				compatible = "marvell,mmp3-intc";
 				interrupt-controller;
@@ -54,6 +86,16 @@ interrupt-controller@d4282000 {
 				mrvl,intc-nr-irqs = <64>;
 			};
 
+			dma_mux: interrupt-controller@d4282128 {
+				compatible = "mrvl,mmp2-mux-intc";
+				interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+				interrupt-controller;
+				#interrupt-cells = <1>;
+				reg = <0x128 0x04 0x11c 0x04>;
+				reg-names = "mux status", "mux mask";
+				mrvl,intc-nr-irqs = <24>;
+			};
+
 			pmic_mux: interrupt-controller@d4282150 {
 				compatible = "mrvl,mmp2-mux-intc";
 				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
@@ -339,6 +381,71 @@ gpu_2d: gpu@d420f000 {
 				clock-names = "core", "bus";
 				power-domains = <&soc_clocks MMP2_POWER_DOMAIN_GPU>;
 			};
+
+			rng@d4292c00 {
+				compatible = "marvell,mmp2-rng";
+				reg = <0xd4292c00 8>;
+			};
+
+			adma0: dma-controller@c0ffd800 {
+				compatible = "marvell,adma-1.0";
+				reg = <0xc0ffd800 0x100>;
+				interrupt-parent = <&dma_mux>;
+				interrupts = <18 19>;
+				#dma-cells = <1>;
+				asram = <&asram>;
+				iram = <&asram>;
+				status = "disabled";
+			};
+
+			adma1: dma-controller@c0ffd900 {
+				compatible = "marvell,adma-1.0";
+				reg = <0xc0ffd900 0x100>;
+				interrupt-parent = <&dma_mux>;
+				interrupts = <20 21>;
+				#dma-cells = <1>;
+				status = "disabled";
+			};
+
+			audio_clk: clocks@c0ffdc30 {
+				compatible = "marvell,mmp3-audio-clock";
+				reg = <0xc0ffdc30 0x10>;
+				clock-names = "audio", "vctcxo", "i2s0", "i2s1";
+				clocks = <&soc_clocks MMP2_CLK_AUDIO>,
+					 <&soc_clocks MMP2_CLK_VCTCXO>,
+					 <&soc_clocks MMP2_CLK_I2S0>,
+					 <&soc_clocks MMP2_CLK_I2S1>;
+				power-domains = <&soc_clocks MMP2_POWER_DOMAIN_AUDIO>;
+				#clock-cells = <1>;
+				status = "disabled";
+			};
+
+			sspa0: audio-controller@c0ffdc00 {
+				compatible = "marvell,mmp-sspa";
+				reg = <0xc0ffdc00 0x30>,
+				      <0xc0ffdc80 0x30>;
+				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+				clock-names = "audio", "bitclk";
+				clocks = <&soc_clocks MMP2_CLK_AUDIO>,
+					 <&audio_clk 1>;
+				power-domains = <&soc_clocks MMP2_POWER_DOMAIN_AUDIO>;
+				#sound-dai-cells = <0>;
+				status = "disabled";
+			};
+
+			sspa1: audio-controller@c0ffdd00 {
+				compatible = "marvell,mmp-sspa";
+				reg = <0xc0ffdd00 0x30>,
+				      <0xc0ffdd80 0x30>;
+				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+				clock-names = "audio", "bitclk";
+				clocks = <&soc_clocks MMP2_CLK_AUDIO>,
+					 <&audio_clk 2>;
+				power-domains = <&soc_clocks MMP2_POWER_DOMAIN_AUDIO>;
+				#sound-dai-cells = <0>;
+				status = "disabled";
+			};
+			
 		};
 
 		apb@d4000000 {
@@ -348,6 +455,14 @@ apb@d4000000 {
 			reg = <0xd4000000 0x00200000>;
 			ranges;
 
+			dma-controller@d4000000 {
+				compatible = "marvell,pdma-1.0";
+				reg = <0xd4000000 0x10000>;
+				interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+				#dma-channels = <16>;
+				status = "disabled";
+			};
+
 			timer: timer@d4014000 {
 				compatible = "mrvl,mmp-timer";
 				reg = <0xd4014000 0x100>;
@@ -395,6 +510,31 @@ uart4: serial@d4016000 {
 				status = "disabled";
 			};
 
+			pinctrl: pinctrl@d401e000 {
+				compatible = "pinconf-single";
+				reg = <0xd401e000 0x2c4>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				#pinctrl-cells = <1>;
+
+				pinctrl-single,register-width = <32>;
+				pinctrl-single,function-mask = <7>;
+				pinctrl-single,bias-pulldown = <(5 << 13) (5 << 13) 0 (7 << 13)>;
+				pinctrl-single,bias-pullup = <(6 << 13) (6 << 13) 0 (7 << 13)>;
+
+				pinctrl-single,gpio-range = <&pinctrl_gpio_range 0x0 3 1>,
+							    <&pinctrl_gpio_range 0xc 77 0>,
+							    <&pinctrl_gpio_range 0x148 1 0>,
+							    <&pinctrl_gpio_range 0x14c 4 1>,
+							    <&pinctrl_gpio_range 0x170 28 0>,
+							    <&pinctrl_gpio_range 0x1e0 32 1>,
+							    <&pinctrl_gpio_range 0x260 23 0>;
+
+				pinctrl_gpio_range: gpio-range {
+					#pinctrl-single,gpio-range-cells = <3>;
+				};
+			};
+
 			gpio: gpio@d4019000 {
 				compatible = "marvell,mmp2-gpio";
 				#address-cells = <1>;
@@ -410,6 +550,38 @@ gpio: gpio@d4019000 {
 				#interrupt-cells = <2>;
 				ranges;
 
+				gpio-ranges = <&pinctrl 0 21 59>,
+					      <&pinctrl 59 160 15>,
+					      <&pinctrl 74 92 28>,
+					      <&pinctrl 102 0 2>,
+					      <&pinctrl 104 127 1>,
+					      <&pinctrl 105 126 1>,
+					      <&pinctrl 106 125 1>,
+					      <&pinctrl 107 124 1>,
+					      <&pinctrl 108 135 1>,
+					      <&pinctrl 109 134 1>,
+					      <&pinctrl 110 133 1>,
+					      <&pinctrl 111 128 1>,
+					      <&pinctrl 112 145 1>,
+					      <&pinctrl 113 151 1>,
+					      <&pinctrl 115 152 8>,
+					      <&pinctrl 123 82 1>,
+					      <&pinctrl 124 3 18>,
+					      <&pinctrl 142 2 1>,
+					      <&pinctrl 143 136 9>,
+					      <&pinctrl 152 146 2>,
+					      <&pinctrl 154 149 6>,
+					      <&pinctrl 160 148 1>,
+					      <&pinctrl 161 132 1>,
+					      <&pinctrl 162 131 1>,
+					      <&pinctrl 163 130 1>,
+					      <&pinctrl 164 129 1>,
+					      <&pinctrl 165 123 1>,
+					      <&pinctrl 166 122 1>,
+					      <&pinctrl 167 121 1>,
+					      <&pinctrl 168 120 1>;
+
+
 				gcb0: gpio@d4019000 {
 					reg = <0xd4019000 0x4>;
 				};
@@ -558,6 +730,19 @@ ssp4: spi@d4039000 {
 				#size-cells = <0>;
 				status = "disabled";
 			};
+
+			tsc: temperature-sensor@d403b000 {
+				compatible = "marvell,mmp3-thermal";
+				reg = <0xd403b000 0x1000>;
+				clock-names = "thermal0", "thermal1",
+					      "thermal2", "thermal3";
+				clocks = <&soc_clocks MMP2_CLK_THERMAL0>,
+					 <&soc_clocks MMP3_CLK_THERMAL1>,
+					 <&soc_clocks MMP3_CLK_THERMAL2>,
+					 <&soc_clocks MMP3_CLK_THERMAL3>;
+				#thermal-sensor-cells = <0>;
+			};
+			
 		};
 
 		l2: cache-controller@d0020000 {
@@ -567,6 +752,16 @@ l2: cache-controller@d0020000 {
 			cache-level = <2>;
 		};
 
+		asram: sram@d1030000 {
+			compatible = "mmio-sram";
+			reg = <0xd1030000 0x10000>;
+			ranges = <0 0xd1030000 0x10000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			status = "disabled";
+		};
+
+
 		soc_clocks: clocks@d4050000 {
 			compatible = "marvell,mmp3-clock";
 			reg = <0xd4050000 0x2000>,
@@ -605,4 +800,27 @@ watchdog@e0000620 {
 						  IRQ_TYPE_EDGE_RISING)>;
 		};
 	};
+
+	thermal-zones {
+		cpu-thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <0>;
+			thermal-sensors = <&tsc>;
+
+			trips {
+				cpu-crit {
+					temperature	= <100500>;
+					hysteresis	= <0>;
+			/*
+					temperature	= <125000>;
+					hysteresis	= <0>;
+			*/
+					type		= "critical";
+				};
+			};
+
+			cooling-maps {
+			};
+		};
+	};
 };
-- 
2.52.0

