From 0cc7b2907712ac82a67ffd8983fc4264a21235d1 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.com>
Date: Thu, 16 Nov 2023 15:18:29 +0000
Subject: [PATCH 0826/1085] ARM: dts: overlays: Add a bcm2712d0 overlay

The bcm2712d0 overlay encapsulates the differences between BCM2712C0/1
and D0.

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
---
 arch/arm/boot/dts/overlays/Makefile           |  1 +
 arch/arm/boot/dts/overlays/README             |  6 ++
 .../boot/dts/overlays/bcm2712d0-overlay.dts   | 75 +++++++++++++++++++
 3 files changed, 82 insertions(+)
 create mode 100644 arch/arm/boot/dts/overlays/bcm2712d0-overlay.dts

--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -34,6 +34,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
 	audiosense-pi.dtbo \
 	audremap.dtbo \
 	balena-fin.dtbo \
+	bcm2712d0.dtbo \
 	camera-mux-2port.dtbo \
 	camera-mux-4port.dtbo \
 	cap1106.dtbo \
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -826,6 +826,12 @@ Load:   dtoverlay=balena-fin
 Params: <None>
 
 
+Name:   bcm2712d0
+Info:   Overlay encapsulating the BCM2712 C0->D0 differences
+Load:   dtoverlay=bcm2712d0
+Params: <None>
+
+
 Name:   bmp085_i2c-sensor
 Info:   This overlay is now deprecated - see i2c-sensor
 Load:   <Deprecated>
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/bcm2712d0-overlay.dts
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+	compatible = "brcm,bcm2712";
+
+	fragment@0 {
+		target = <&gio>;
+		__overlay__ {
+			brcm,gpio-bank-widths = <32 4>;
+		};
+	};
+
+	fragment@1 {
+		target = <&gio_aon>;
+		__overlay__ {
+			brcm,gpio-bank-widths = <15 6>;
+		};
+	};
+
+	fragment@2 {
+		target = <&pinctrl>;
+		__overlay__ {
+			compatible = "brcm,bcm2712d0-pinctrl";
+			reg = <0x7d504100 0x20>;
+		};
+	};
+
+	fragment@3 {
+		target = <&pinctrl_aon>;
+		__overlay__ {
+			compatible = "brcm,bcm2712d0-aon-pinctrl";
+			reg = <0x7d510700 0x1c>;
+		};
+	};
+
+	fragment@4 {
+		target = <&vc4>;
+		__overlay__ {
+			compatible = "brcm,bcm2712d0-vc6";
+		};
+	};
+
+	fragment@5 {
+		target = <&uart10>;
+		__overlay__ {
+			interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+		};
+	};
+
+	fragment@6 {
+		target = <&spi10>;
+		__overlay__ {
+			dmas = <&dma40 3>, <&dma40 4>;
+		};
+	};
+
+	fragment@7 {
+		target = <&hdmi0>;
+		__overlay__ {
+			dmas = <&dma40 (12|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
+		};
+	};
+
+	fragment@8 {
+		target = <&hdmi1>;
+		__overlay__ {
+			dmas = <&dma40 (13|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
+		};
+	};
+};
