From 58c5526eb1798e61e4e76d37140cf10c8d325bc7 Mon Sep 17 00:00:00 2001
From: Zhang Ning <832666+zhangn1985@users.noreply.github.com>
Date: Thu, 19 Sep 2019 16:20:31 +0800
Subject: [PATCH] general: meson64 overlays

Signed-off-by: Zhang Ning <832666+zhangn1985@users.noreply.github.com>
---
 arch/arm64/boot/dts/amlogic/Makefile          |  2 ++
  arch/arm64/boot/dts/amlogic/overlay/Makefile  | 20 ++++++++++++
 .../dts/amlogic/overlay/README.meson-overlays | 20 ++++++++++++
 .../dts/amlogic/overlay/meson-fixup.scr-cmd   |  4 +++
 .../boot/dts/amlogic/overlay/meson-i2cA.dts   | 17 ++++++++++
 .../boot/dts/amlogic/overlay/meson-i2cB.dts   | 17 ++++++++++
 .../boot/dts/amlogic/overlay/meson-uartA.dts  | 11 +++++++
 .../boot/dts/amlogic/overlay/meson-uartC.dts  | 11 +++++++
 .../dts/amlogic/overlay/meson-w1-gpio.dts     | 20 ++++++++++++
 .../dts/amlogic/overlay/meson-w1AB-gpio.dts   | 32 +++++++++++++++++++
 scripts/Makefile.lib                          |  3 ++
 12 files changed, 165 insertions(+)
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/Makefile
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/README.meson-overlays
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/meson-fixup.scr-cmd
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/meson-i2cA.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/meson-i2cB.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/meson-uartA.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/meson-uartC.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/meson-w1-gpio.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/overlay/meson-w1AB-gpio.dts

diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 07b861f..9d12b15 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -32,3 +32,5 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q200.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-a1-ad401.dtb
+
+subdir-y       := $(dts-dirs) overlay
diff --git a/arch/arm64/boot/dts/amlogic/overlay/Makefile b/arch/arm64/boot/dts/amlogic/overlay/Makefile
new file mode 100644
index 000000000000..8630fd1a182d
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/Makefile
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: GPL-2.0
+dtbo-$(CONFIG_ARCH_MESON) += \
+	meson-i2cA.dtbo \
+	meson-i2cB.dtbo \
+	meson-uartA.dtbo \
+	meson-uartC.dtbo \
+	meson-w1-gpio.dtbo \
+	meson-w1AB-gpio.dtbo
+
+scr-$(CONFIG_ARCH_MESON) += \
+       meson-fixup.scr
+
+dtbotxt-$(CONFIG_ARCH_MESON) += \
+       README.meson-overlays
+
+targets += $(dtbo-y) $(scr-y) $(dtbotxt-y)
+
+always         := $(dtbo-y) $(scr-y) $(dtbotxt-y)
+clean-files    := *.dtbo *.scr
+
diff --git a/arch/arm64/boot/dts/amlogic/overlay/README.meson-overlays b/arch/arm64/boot/dts/amlogic/overlay/README.meson-overlays
new file mode 100644
index 000000000000..1b169a7a1525
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/README.meson-overlays
@@ -0,0 +1,20 @@
+This document describes overlays provided in the kernel packages
+For generic Armbian overlays documentation please see
+https://docs.armbian.com/User-Guide_Allwinner_overlays/
+
+### Platform:
+
+meson (Amlogic)
+
+### Provided overlays:
+
+- i2c8
+
+### Overlay details:
+
+### i2c8
+
+Activates TWI/I2C bus 8
+
+I2C8 pins (SCL, SDA): GPIO1-C4, GPIO1-C5
+
diff --git a/arch/arm64/boot/dts/amlogic/overlay/meson-fixup.scr-cmd b/arch/arm64/boot/dts/amlogic/overlay/meson-fixup.scr-cmd
new file mode 100644
index 000000000000..d4c39e20a3a2
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/meson-fixup.scr-cmd
@@ -0,0 +1,4 @@
+# overlays fixup script
+# implements (or rather substitutes) overlay arguments functionality
+# using u-boot scripting, environment variables and "fdt" command
+
diff --git a/arch/arm64/boot/dts/amlogic/overlay/meson-i2cA.dts b/arch/arm64/boot/dts/amlogic/overlay/meson-i2cA.dts
new file mode 100644
index 000000000000..bfb72feb7e36
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/meson-i2cA.dts
@@ -0,0 +1,17 @@
+/dts-v1/;
+
+/ {
+    compatible = "amlogic,meson-gxbb";
+    fragment@0 {
+        target-path = "/aliases";
+        __overlay__ {
+            i2cA = "/soc/bus@c1100000/i2c@8500";
+        };
+    };
+    fragment@1 {
+	target-path = "/soc/bus@c1100000/i2c@8500";
+        __overlay__ {
+            status = "okay";
+        };
+    };
+};
diff --git a/arch/arm64/boot/dts/amlogic/overlay/meson-i2cB.dts b/arch/arm64/boot/dts/amlogic/overlay/meson-i2cB.dts
new file mode 100644
index 000000000000..d75867bce99b
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/meson-i2cB.dts
@@ -0,0 +1,17 @@
+/dts-v1/;
+
+/ {
+    compatible = "amlogic,meson-gxbb";
+    fragment@0 {
+        target-path = "/aliases";
+        __overlay__ {
+            i2cA = "/soc/bus@c1100000/i2c@87c0";
+        };
+    };
+    fragment@1 {
+	target-path = "/soc/bus@c1100000/i2c@87c0";
+        __overlay__ {
+            status = "okay";
+        };
+    };
+};
diff --git a/arch/arm64/boot/dts/amlogic/overlay/meson-uartA.dts b/arch/arm64/boot/dts/amlogic/overlay/meson-uartA.dts
new file mode 100644
index 000000000000..3aecd60aaf64
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/meson-uartA.dts
@@ -0,0 +1,11 @@
+/dts-v1/;
+
+/ {
+    compatible = "amlogic,meson-gxbb";
+    fragment@0 {
+	target-path = "/soc/bus@c1100000/serial@84c0";
+        __overlay__ {
+            status = "okay";
+        };
+    };
+};
diff --git a/arch/arm64/boot/dts/amlogic/overlay/meson-uartC.dts b/arch/arm64/boot/dts/amlogic/overlay/meson-uartC.dts
new file mode 100644
index 000000000000..2b40ee4c02d3
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/meson-uartC.dts
@@ -0,0 +1,11 @@
+/dts-v1/;
+
+/ {
+    compatible = "amlogic,meson-gxbb";
+    fragment@0 {
+	target-path = "/soc/bus@c1100000/serial@8700";
+        __overlay__ {
+            status = "okay";
+        };
+    };
+};
diff --git a/arch/arm64/boot/dts/amlogic/overlay/meson-w1-gpio.dts b/arch/arm64/boot/dts/amlogic/overlay/meson-w1-gpio.dts
new file mode 100644
index 000000000000..ac76a4f20ab7
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/meson-w1-gpio.dts
@@ -0,0 +1,20 @@
+// Definitions for w1-gpio module (without external pullup)
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "amlogic,meson-gxbb";
+
+	fragment@0 {
+		target-path = "/";
+		__overlay__ {
+
+			w1: onewire@0 {
+				compatible = "w1-gpio";
+				pinctrl-names = "default";
+				gpios = <&gpio 91 6>; // GPIOY_16
+				status = "okay";
+			};
+		};
+	};
+};
diff --git a/arch/arm64/boot/dts/amlogic/overlay/meson-w1AB-gpio.dts b/arch/arm64/boot/dts/amlogic/overlay/meson-w1AB-gpio.dts
new file mode 100644
index 000000000000..f6b0d7eff158
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/overlay/meson-w1AB-gpio.dts
@@ -0,0 +1,32 @@
+// Definitions for w1-gpio module (without external pullup)
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "amlogic,meson-gxbb";
+
+	fragment@0 {
+		target-path = "/";
+		__overlay__ {
+
+			w1a: onewire@0 {
+				compatible = "w1-gpio";
+				pinctrl-names = "default";
+				gpios = <&gpio 91 6>; // GPIOY_16
+				status = "okay";
+			};
+		};
+	};
+	fragment@1 {
+		target-path = "/";
+		__overlay__ {
+
+			w1b: onewire@1 {
+				compatible = "w1-gpio";
+				pinctrl-names = "default";
+				gpios = <&gpio 90 6>; // GPIOY_15
+				status = "okay";
+			};
+		};
+	};
+};
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 41c50f9461e5..387659d5b252 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -79,6 +79,9 @@ header-test-y	+= $(filter-out $(header-test-), \
 
 extra-$(CONFIG_HEADER_TEST) += $(addsuffix .s, $(header-test-y) $(header-test-m))
 
+# Overlay targets
+extra-y				+= $(dtbo-y) $(scr-y) $(dtbotxt-y)
+
 # Add subdir path
 
 extra-y		:= $(addprefix $(obj)/,$(extra-y))
-- 
2.20.1

