diff --git a/patch/kernel/archive/sunxi-6.18/0000.patching_config.yaml b/patch/kernel/archive/sunxi-6.18/0000.patching_config.yaml index 67c6db63ef..61bf54ea38 100644 --- a/patch/kernel/archive/sunxi-6.18/0000.patching_config.yaml +++ b/patch/kernel/archive/sunxi-6.18/0000.patching_config.yaml @@ -27,5 +27,5 @@ config: - "Documentation/devicetree/bindings/arm/allwinner.yaml" # constant churn, conflicts on every bump, drop it. sorry. do-not-commit-regexes: # Python-style regexes # ignore DT Makefile patches, we've an auto-patcher now - this does NOT ignore overlay Makefile! - - "^arch/([a-zA-Z0-9]+)/boot/dts/([a-zA-Z0-9]+)/Makefile$" - - "^arch/([a-zA-Z0-9]+)/boot/dts/([a-zA-Z0-9-]+)/overlay/.+$" + - "^arch/(arm|arm64)/boot/dts/allwinner/Makefile$" + - "^arch/(arm|arm64)/boot/dts/allwinner/overlay/" \ No newline at end of file diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/Add-BananaPi-BPI-M4-Zero-overlays.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/Add-BananaPi-BPI-M4-Zero-overlays.patch deleted file mode 100644 index a2697ed15e..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/Add-BananaPi-BPI-M4-Zero-overlays.patch +++ /dev/null @@ -1,364 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Patrick Yavitz -Date: Tue, 7 Jan 2025 06:39:30 -0500 -Subject: Add BananaPi BPI-M4-Zero overlays - -Signed-off-by: Patrick Yavitz ---- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 13 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-15-16-i2c4.dtso | 13 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-17-18-i2c3.dtso | 13 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-6-7-uart1.dtso | 13 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-8-9-rts-cts-uart1.dtso | 16 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-ph-2-3-uart5.dtso | 13 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-13-14-uart4.dtso | 13 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-15-16-rts-cts-uart4.dtso | 16 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-5-6-i2c0.dtso | 13 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-7-8-i2c1.dtso | 13 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-sdio-wifi-bt.dtso | 44 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs0-cs1-spidev.dtso | 32 +++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs0-spidev.dtso | 24 +++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs1-spidev.dtso | 13 +++ - 14 files changed, 249 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -48,6 +48,19 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ - sun50i-h6-uart2.dtbo \ - sun50i-h6-uart3.dtbo \ - sun50i-h6-w1-gpio.dtbo \ -+ sun50i-h616-bananapi-m4-pg-6-7-uart1.dtbo \ -+ sun50i-h616-bananapi-m4-pg-8-9-rts-cts-uart1.dtbo \ -+ sun50i-h616-bananapi-m4-pg-15-16-i2c4.dtbo \ -+ sun50i-h616-bananapi-m4-pg-17-18-i2c3.dtbo \ -+ sun50i-h616-bananapi-m4-ph-2-3-uart5.dtbo \ -+ sun50i-h616-bananapi-m4-pi-13-14-uart4.dtbo \ -+ sun50i-h616-bananapi-m4-pi-15-16-rts-cts-uart4.dtbo \ -+ sun50i-h616-bananapi-m4-pi-5-6-i2c0.dtbo \ -+ sun50i-h616-bananapi-m4-pi-7-8-i2c1.dtbo \ -+ sun50i-h616-bananapi-m4-sdio-wifi-bt.dtbo \ -+ sun50i-h616-bananapi-m4-spi1-cs0-cs1-spidev.dtbo \ -+ sun50i-h616-bananapi-m4-spi1-cs0-spidev.dtbo \ -+ sun50i-h616-bananapi-m4-spi1-cs1-spidev.dtbo \ - sun50i-h616-gpu.dtbo \ - sun50i-h616-i2c0-pi.dtbo \ - sun50i-h616-i2c1-pi.dtbo \ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-15-16-i2c4.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-15-16-i2c4.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-15-16-i2c4.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c4>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-17-18-i2c3.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-17-18-i2c3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-17-18-i2c3.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c3>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-6-7-uart1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-6-7-uart1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-6-7-uart1.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-8-9-rts-cts-uart1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-8-9-rts-cts-uart1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pg-8-9-rts-cts-uart1.dtso -@@ -0,0 +1,16 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart1>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; -+ pinctrl-names = "default"; -+ uart-has-rtscts; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-ph-2-3-uart5.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-ph-2-3-uart5.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-ph-2-3-uart5.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart5>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-13-14-uart4.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-13-14-uart4.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-13-14-uart4.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart4>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-15-16-rts-cts-uart4.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-15-16-rts-cts-uart4.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-15-16-rts-cts-uart4.dtso -@@ -0,0 +1,16 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart4>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-0 = <&uart4_pi_pins>, <&uart4_pi_rts_cts_pins>; -+ pinctrl-names = "default"; -+ uart-has-rtscts; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-5-6-i2c0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-5-6-i2c0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-5-6-i2c0.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c0>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-7-8-i2c1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-7-8-i2c1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-pi-7-8-i2c1.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-sdio-wifi-bt.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-sdio-wifi-bt.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-sdio-wifi-bt.dtso -@@ -0,0 +1,44 @@ -+/dts-v1/; -+/plugin/; -+ -+#include -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target-path = "/"; -+ __overlay__ { -+ model = "BananaPi BPI-M4-Zero v2"; -+ }; -+ }; -+ -+ /* SDIO WIFI */ -+ fragment@1 { -+ target = <&mmc1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ /* BLUETOOTH */ -+ fragment@2 { -+ target = <&uart1>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; -+ pinctrl-names = "default"; -+ uart-has-rtscts; -+ -+ bluetooth { -+ compatible = "brcm,bcm43540-bt"; -+ host-wakeup-gpios = <&pio 6 16 GPIO_ACTIVE_HIGH>; -+ device-wakeup-gpios = <&pio 6 17 GPIO_ACTIVE_HIGH>; -+ shutdown-gpios = <&pio 6 19 GPIO_ACTIVE_HIGH>; -+ max-speed = <1500000>; -+ vbat-supply = <®_vcc3v3>; -+ vddio-supply = <®_vcc1v8>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs0-cs1-spidev.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs0-cs1-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs0-cs1-spidev.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>, <&spi1_cs1_pin>; -+ -+ spidev@0 { -+ compatible = "rohm,dh2228fv"; -+ status = "okay"; -+ reg = <0>; -+ spi-max-frequency = <50000000>; -+ }; -+ -+ spidev@1 { -+ compatible = "rohm,dh2228fv"; -+ status = "okay"; -+ reg = <1>; -+ spi-max-frequency = <50000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs0-spidev.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs0-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs0-spidev.dtso -@@ -0,0 +1,24 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>; -+ spidev@0 { -+ compatible = "rohm,dh2228fv"; -+ status = "okay"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs1-spidev.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs1-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-bananapi-m4-spi1-cs1-spidev.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "sinovoip,bpi-m4-zero", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/Compile-the-pwm-overlay.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/Compile-the-pwm-overlay.patch deleted file mode 100644 index 211a6118a1..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/Compile-the-pwm-overlay.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: afaulkner420 -Date: Fri, 25 Mar 2022 19:26:16 +0000 -Subject: Compile the pwm overlay - ---- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -38,6 +38,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ - sun50i-h6-i2c0.dtbo \ - sun50i-h6-i2c1.dtbo \ - sun50i-h6-i2c2.dtbo \ -+ sun50i-h6-pwm.dtbo \ - sun50i-h6-ruart.dtbo \ - sun50i-h6-spi-add-cs1.dtbo \ - sun50i-h6-spi-jedec-nor.dtbo \ --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch deleted file mode 100644 index 98b868234b..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/Move-sun50i-h6-pwm-settings-to-its-own-overlay.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: afaulkner420 -Date: Fri, 25 Mar 2022 19:23:56 +0000 -Subject: Move sun50i-h6-pwm settings to its own overlay - ---- - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd | 14 ------ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso | 25 ++++++++++ - 2 files changed, 25 insertions(+), 14 deletions(-) - -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd -@@ -54,20 +54,6 @@ if test "${param_pps_falling_edge}" = "1"; then - fdt set /pps@0 assert-falling-edge - fi - --for f in ${overlays}; do -- if test "${f}" = "pwm"; then -- setenv bootargs_new "" -- for arg in ${bootargs}; do -- if test "${arg}" = "console=ttyS0,115200"; then -- echo "Warning: Disabling ttyS0 console due to enabled PWM overlay" -- else -- setenv bootargs_new "${bootargs_new} ${arg}" -- fi -- done -- setenv bootargs "${bootargs_new}" -- fi --done -- - if test -n "${param_w1_pin}"; then - setenv tmp_bank "${param_w1_pin}" - setenv tmp_pin "${param_w1_pin}" -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-pwm.dtso -@@ -0,0 +1,25 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6-pwm"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ pwm_pin: pwm-pin { -+ pins = "PD22"; -+ function = "pwm"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm_pin>; -+ status = "okay"; -+ }; -+ }; -+}; --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/add-dtb-overlay-for-zero2w.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/add-dtb-overlay-for-zero2w.patch deleted file mode 100644 index 0d087707b4..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/add-dtb-overlay-for-zero2w.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: chraac -Date: Fri, 5 Apr 2024 10:57:18 +0800 -Subject: add dtb overlay for zero2w - ---- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 4 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-gpu.dtso | 14 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c0-pi.dtso | 23 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c1-pi.dtso | 16 +++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-pi.dtso | 23 ++++++++++ - 5 files changed, 80 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -48,6 +48,10 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ - sun50i-h6-uart2.dtbo \ - sun50i-h6-uart3.dtbo \ - sun50i-h6-w1-gpio.dtbo \ -+ sun50i-h616-gpu.dtbo \ -+ sun50i-h616-i2c0-pi.dtbo \ -+ sun50i-h616-i2c1-pi.dtbo \ -+ sun50i-h616-i2c2-pi.dtbo \ - sun50i-h616-i2c2-ph.dtbo \ - sun50i-h616-i2c3-pg.dtbo \ - sun50i-h616-i2c3-ph.dtbo \ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-gpu.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-gpu.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-gpu.dtso -@@ -0,0 +1,14 @@ -+/dts-v1/; -+/plugin/; -+ -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target = <&gpu>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c0-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c0-pi.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c0-pi.dtso -@@ -0,0 +1,23 @@ -+/dts-v1/; -+/plugin/; -+ -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target = <&i2c0>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins>; -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart2>; -+ __overlay__ { -+ status = "disabled"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c1-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c1-pi.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c1-pi.dtso -@@ -0,0 +1,16 @@ -+/dts-v1/; -+/plugin/; -+ -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target = <&i2c1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pi_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-pi.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-pi.dtso -@@ -0,0 +1,23 @@ -+/dts-v1/; -+/plugin/; -+ -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target = <&i2c2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pi_pins>; -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart3>; -+ __overlay__ { -+ status = "disabled"; -+ }; -+ }; -+}; --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm-dts-overlay-Add-Overlays-for-sunxi.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm-dts-overlay-Add-Overlays-for-sunxi.patch deleted file mode 100644 index f76b6656b8..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm-dts-overlay-Add-Overlays-for-sunxi.patch +++ /dev/null @@ -1,4857 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Wed, 2 Feb 2022 12:54:05 +0300 -Subject: arm:dts:overlay Add Overlays for sunxi - ---- - arch/arm/boot/dts/allwinner/overlay/Makefile | 97 +++ - arch/arm/boot/dts/allwinner/overlay/README.sun4i-a10-overlays | 278 ++++++++ - arch/arm/boot/dts/allwinner/overlay/README.sun5i-a13-overlays | 172 +++++ - arch/arm/boot/dts/allwinner/overlay/README.sun7i-a20-overlays | 348 ++++++++++ - arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays | 250 +++++++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-analog-codec.dtso | 13 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-can.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-fixup.scr-cmd | 124 ++++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-nand.dtso | 103 +++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pps-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pwm.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spdif-out.dtso | 38 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-jedec-nor.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-spidev.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi0.dtso | 23 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi2.dtso | 23 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart2.dtso | 37 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart3.dtso | 47 ++ - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart4.dtso | 37 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart5.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart6.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart7.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun4i-a10-w1-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-analog-codec.dtso | 13 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-fixup.scr-cmd | 48 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-nand.dtso | 60 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-pwm.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-jedec-nor.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-spidev.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi0.dtso | 38 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi1.dtso | 39 ++ - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart0.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart3.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-analog-codec.dtso | 13 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-can.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-fixup.scr-cmd | 143 ++++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c3.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c4.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s0.dtso | 25 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s1.dtso | 25 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-mmc2.dtso | 18 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-nand.dtso | 103 +++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pps-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pwm.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spdif-out.dtso | 38 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-add-cs1.dtso | 16 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-jedec-nor.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-spidev.dtso | 57 ++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi0.dtso | 23 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi2.dtso | 23 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart2.dtso | 32 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart3.dtso | 42 ++ - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart4.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart5.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart6.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart7.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun7i-a20-w1-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-analog-codec.dtso | 17 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cir.dtso | 15 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-fixup.scr-cmd | 110 +++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c0.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c1.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c2.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pps-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pwm.dtso | 39 ++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spdif-out.dtso | 38 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-add-cs1.dtso | 41 ++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-jedec-nor.dtso | 42 ++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-spidev.dtso | 42 ++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart1.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart3.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost0.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost1.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost2.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost3.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-w1-gpio.dtso | 29 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c2.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c3.dtso | 20 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev0.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev1.dtso | 27 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart2.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart4.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart5.dtso | 22 + - arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart7.dtso | 22 + - 96 files changed, 4174 insertions(+) - -diff --git a/arch/arm/boot/dts/allwinner/overlay/Makefile b/arch/arm/boot/dts/allwinner/overlay/Makefile -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/Makefile -@@ -0,0 +1,97 @@ -+# SPDX-License-Identifier: GPL-2.0 -+dtb-$(CONFIG_MACH_SUN4I) += \ -+ sun4i-a10-analog-codec.dtbo \ -+ sun4i-a10-can.dtbo \ -+ sun4i-a10-i2c1.dtbo \ -+ sun4i-a10-i2c2.dtbo \ -+ sun4i-a10-nand.dtbo \ -+ sun4i-a10-pps-gpio.dtbo \ -+ sun4i-a10-pwm.dtbo \ -+ sun4i-a10-spdif-out.dtbo \ -+ sun4i-a10-spi-jedec-nor.dtbo \ -+ sun4i-a10-spi-spidev.dtbo \ -+ sun4i-a10-uart2.dtbo \ -+ sun4i-a10-uart3.dtbo \ -+ sun4i-a10-uart4.dtbo \ -+ sun4i-a10-uart5.dtbo \ -+ sun4i-a10-uart6.dtbo \ -+ sun4i-a10-uart7.dtbo \ -+ sun4i-a10-w1-gpio.dtbo -+ -+dtb-$(CONFIG_MACH_SUN5I) += \ -+ sun5i-a13-analog-codec.dtbo \ -+ sun5i-a13-i2c1.dtbo \ -+ sun5i-a13-i2c2.dtbo \ -+ sun5i-a13-nand.dtbo \ -+ sun5i-a13-pwm.dtbo \ -+ sun5i-a13-spi0.dtbo \ -+ sun5i-a13-spi1.dtbo \ -+ sun5i-a13-spi2.dtbo \ -+ sun5i-a13-spi-jedec-nor.dtbo \ -+ sun5i-a13-spi-spidev.dtbo \ -+ sun5i-a13-uart0.dtbo \ -+ sun5i-a13-uart1.dtbo \ -+ sun5i-a13-uart2.dtbo \ -+ sun5i-a13-uart3.dtbo -+ -+dtb-$(CONFIG_MACH_SUN7I) += \ -+ sun7i-a20-analog-codec.dtbo \ -+ sun7i-a20-can.dtbo \ -+ sun7i-a20-i2c1.dtbo \ -+ sun7i-a20-i2c2.dtbo \ -+ sun7i-a20-i2c3.dtbo \ -+ sun7i-a20-i2c4.dtbo \ -+ sun7i-a20-mmc2.dtbo \ -+ sun7i-a20-nand.dtbo \ -+ sun7i-a20-pps-gpio.dtbo \ -+ sun7i-a20-pwm.dtbo \ -+ sun7i-a20-spdif-out.dtbo \ -+ sun7i-a20-spi-add-cs1.dtbo \ -+ sun7i-a20-spi-jedec-nor.dtbo \ -+ sun7i-a20-spi-spidev.dtbo \ -+ sun7i-a20-uart2.dtbo \ -+ sun7i-a20-uart3.dtbo \ -+ sun7i-a20-uart4.dtbo \ -+ sun7i-a20-uart5.dtbo \ -+ sun7i-a20-uart6.dtbo \ -+ sun7i-a20-uart7.dtbo \ -+ sun7i-a20-w1-gpio.dtbo -+ -+dtb-$(CONFIG_MACH_SUN8I) += \ -+ sun8i-h3-analog-codec.dtbo \ -+ sun8i-h3-cir.dtbo \ -+ sun8i-h3-i2c0.dtbo \ -+ sun8i-h3-i2c1.dtbo \ -+ sun8i-h3-i2c2.dtbo \ -+ sun8i-h3-pps-gpio.dtbo \ -+ sun8i-h3-pwm.dtbo \ -+ sun8i-h3-spdif-out.dtbo \ -+ sun8i-h3-spi-add-cs1.dtbo \ -+ sun8i-h3-spi-jedec-nor.dtbo \ -+ sun8i-h3-spi-spidev.dtbo \ -+ sun8i-h3-uart1.dtbo \ -+ sun8i-h3-uart2.dtbo \ -+ sun8i-h3-uart3.dtbo \ -+ sun8i-h3-usbhost0.dtbo \ -+ sun8i-h3-usbhost1.dtbo \ -+ sun8i-h3-usbhost2.dtbo \ -+ sun8i-h3-usbhost3.dtbo \ -+ sun8i-h3-w1-gpio.dtbo \ -+ sun8i-r40-i2c2.dtbo \ -+ sun8i-r40-i2c3.dtbo \ -+ sun8i-r40-spi-spidev0.dtbo \ -+ sun8i-r40-spi-spidev1.dtbo \ -+ sun8i-r40-uart2.dtbo \ -+ sun8i-r40-uart4.dtbo \ -+ sun8i-r40-uart5.dtbo \ -+ sun8i-r40-uart7.dtbo -+ -+scr-$(CONFIG_MACH_SUN4I) += sun4i-a10-fixup.scr -+scr-$(CONFIG_MACH_SUN5I) += sun5i-a13-fixup.scr -+scr-$(CONFIG_MACH_SUN7I) += sun7i-a20-fixup.scr -+scr-$(CONFIG_MACH_SUN8I) += sun8i-h3-fixup.scr -+ -+dtbotxt-$(CONFIG_MACH_SUN4I) += README.sun4i-a10-overlays -+dtbotxt-$(CONFIG_MACH_SUN5I) += README.sun5i-a13-overlays -+dtbotxt-$(CONFIG_MACH_SUN7I) += README.sun7i-a20-overlays -+dtbotxt-$(CONFIG_MACH_SUN8I) += README.sun8i-h3-overlays -diff --git a/arch/arm/boot/dts/allwinner/overlay/README.sun4i-a10-overlays b/arch/arm/boot/dts/allwinner/overlay/README.sun4i-a10-overlays -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/README.sun4i-a10-overlays -@@ -0,0 +1,278 @@ -+This document describes overlays provided in the kernel packages -+For generic Armbian overlays documentation please see -+https://docs.armbian.com/User-Guide_Armbian_overlays/ -+ -+### Platform: -+ -+sun4i-a10 (Allwinner A10) -+ -+### Platform details: -+ -+Supported pin banks: PB, PC, PD, PE, PG, PH, PI -+ -+SPI controller 0 have 2 exposed hardware CS, -+other SPI controllers have only one hardware CS -+Reference: A10 User manual section 17.4.13, A10 datasheet section 5.2 -+ -+I2C bus 0 is used for the AXP209 PMIC -+ -+### Provided overlays: -+ -+- analog-codec -+- can -+- i2c1 -+- i2c2 -+- nand -+- pps-gpio -+- pwm -+- spdif-out -+- spi0 -+- spi1 -+- spi2 -+- spi-jedec-nor -+- spi-spidev -+- uart1 -+- uart2 -+- uart3 -+- uart4 -+- uart5 -+- uart6 -+- uart7 -+- w1-gpio -+ -+### Overlay details: -+ -+### analog-codec -+ -+Activates SoC analog codec driver that provides Line Out and Mic In -+functionality -+ -+## can -+ -+Activates SoC CAN controller -+ -+CAN pins (TX, RX): PH20, PH21 -+ -+### i2c1 -+ -+Activates TWI/I2C bus 1 -+ -+I2C1 pins (SCL, SDA): PB18, PB19 -+ -+### i2c2 -+ -+Activates TWI/I2C bus 2 -+ -+I2C2 pins (SCL, SDA): PB20, PB21 -+ -+### nand -+ -+Activates NAND controller -+ -+This overlay should not be used until mainline MLC NAND support -+allows using NAND storage reliably -+ -+### pps-gpio -+ -+Activates pulse-per-second GPIO client -+ -+Parameters: -+ -+param_pps_pin (pin) -+ Pin PPS source is connected to -+ Optional -+ Default: PI15 -+ -+param_pps_falling_edge (bool) -+ Assert by falling edge -+ Optional -+ Default: 0 -+ When set (to 1), assert is indicated by a falling edge -+ (instead of by a rising edge) -+ -+### pwm -+ -+Activates hardware PWM controller -+ -+PWM pins (PWM0, PWM1): PB2, PI3 -+ -+Parameters: -+ -+param_pwm_pins (string) -+ PWM pins activated with this overlay -+ Optional -+ Default: both -+ Supported values: 0, 1, both -+ If set to 0 only PWM0 can be used, -+ if set to 1 then only PWM1 can be used, -+ if set to both (default), both PWM0 and PWM1 can be used -+ -+### spdif-out -+ -+Activates SPDIF/Toslink audio output -+ -+SPDIF pin: PB13 -+ -+### spi0 -+ -+Activates SPI controller 0 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0, CS1): PI12, PI13, PI11, PI10, PI14 -+ -+### spi1 -+ -+Activates SPI controller 1 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 1 pins (MOSI, MISO, SCK, CS0): PI18, PI19, PI17, PI16 -+ -+### spi2 -+ -+Activates SPI controller 2 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 2 pins a (MOSI, MISO, SCK, CS0): PC21, PC22, PC20, PC19 -+SPI 2 pins b (MOSI, MISO, SCK, CS0): PB16, PB17, PB15, PB14 -+ -+Parameters: -+ -+param_spi2_bus_pins (char) -+ SPI bus 2 pinmux variant -+ Optional -+ Default: a -+ Supported values: a, b -+ Determines what pins SPI bus 2 is exposed on if SPI 2 is used -+ -+ -+### spi-jedec-nor -+ -+Activates MTD support for JEDEC compatible SPI NOR flash chips on SPI bus -+supported by the kernel SPI NOR driver -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0, CS1): PI12, PI13, PI11, PI10, PI14 -+SPI 1 pins (MOSI, MISO, SCK, CS0): PI18, PI19, PI17, PI16 -+SPI 2 pins a (MOSI, MISO, SCK, CS0): PC21, PC22, PC20, PC19 -+SPI 2 pins b (MOSI, MISO, SCK, CS0): PB16, PB17, PB15, PB14 -+ -+Parameters: -+ -+param_spinor_spi_bus (int) -+ SPI bus to activate SPI NOR flash support on -+ Required -+ Supported values: 0, 1, 2 -+ -+param_spinor_max_freq (int) -+ Maximum SPI frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### spi-spidev -+ -+Activates SPIdev device node (/dev/spidevX.Y) for userspace SPI access, -+where X is the bus number and Y is the CS number -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0, CS1): PI12, PI13, PI11, PI10, PI14 -+SPI 1 pins (MOSI, MISO, SCK, CS0): PI18, PI19, PI17, PI16 -+SPI 2 pins a (MOSI, MISO, SCK, CS0): PC21, PC22, PC20, PC19 -+SPI 2 pins b (MOSI, MISO, SCK, CS0): PB16, PB17, PB15, PB14 -+ -+Parameters: -+ -+param_spidev_spi_bus (int) -+ SPI bus to activate mcp2515 support on -+ Required -+ Supported values: 0, 1, 2 -+ -+param_spidev_max_freq (int) -+ Maximum SPIdev frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### uart2 -+ -+Activates serial port 2 (/dev/ttyS2) -+ -+UART 2 pins (TX, RX, RTS, CTS): PI18, PI19, PI16, PI17 -+ -+Parameters: -+ -+param_uart2_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### uart3 -+ -+Activates serial port 3 (/dev/ttyS3) -+ -+UART 3 pins a (TX, RX, RTS, CTS): PG6, PG7, PG8, PG9 -+UART 3 pins b (TX, RX, RTS, CTS): PH0, PH1, PH2, PH3 -+ -+Parameters: -+ -+param_uart3_pins (char) -+ Determines what pins UART 3 is exposed on -+ Optional -+ Default: a -+ Supported values: a, b -+ -+param_uart3_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### uart4 -+ -+Activates serial port 4 (/dev/ttyS4) -+ -+UART 4 pins a (TX, RX): PG10, PG11 -+UART 4 pins b (TX, RX): PH4, PH5 -+ -+Parameters: -+ -+param_uart4_pins (char) -+ Determines what pins UART 4 is exposed on -+ Optional -+ Default: a -+ Supported values: a, b -+ -+### uart 5 -+ -+Activates serial port 5 (/dev/ttyS5) -+ -+UART 5 pins (TX, RX): PH6, PH7 -+ -+### uart 6 -+ -+Activates serial port 6 (/dev/ttyS6) -+ -+UART 6 pins (TX, RX): PI12, PI13 -+ -+### uart 7 -+ -+Activates serial port 7 (/dev/ttyS7) -+ -+UART 7 pins (TX, RX): PI20, PI21 -+ -+### w1-gpio -+ -+Activates 1-Wire GPIO master -+Requires an external pull-up resistor on the data pin -+or enabling the internal pull-up -+ -+Parameters: -+ -+param_w1_pin (pin) -+ Data pin for 1-Wire master -+ Optional -+ Default: PI15 -+ -+param_w1_pin_int_pullup (bool) -+ Enable internal pull-up for the data pin -+ Optional -+ Default: 0 -+ Set to 1 to enable the pull-up -+ This option should not be used with multiple sensors or long wires - -+ please use external pull-up resistor instead -diff --git a/arch/arm/boot/dts/allwinner/overlay/README.sun5i-a13-overlays b/arch/arm/boot/dts/allwinner/overlay/README.sun5i-a13-overlays -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/README.sun5i-a13-overlays -@@ -0,0 +1,172 @@ -+This document describes overlays provided in the kernel packages -+For generic Armbian overlays documentation please see -+https://docs.armbian.com/User-Guide_Armbian_overlays/ -+ -+### Platform: -+ -+sun5i-a13 (Allwinner A13) -+ -+### Platform details: -+ -+I2C bus 0 is used for the AXP209 PMIC -+ -+### Provided overlays: -+ -+- analog-codec -+- i2c1 -+- i2c2 -+- nand -+- pwm -+- spi0 -+- spi1 -+- spi2 -+- spi-jedec-nor -+- spi-spidev -+- uart0 -+- uart1 -+- uart2 -+- uart3 -+ -+### Overlay details: -+ -+### analog-codec -+ -+Activates SoC analog codec driver that provides HP Out and Mic In -+functionality -+ -+### i2c1 -+ -+Activates TWI/I2C bus 1 -+ -+I2C1 pins (SCL, SDA): PB15, PB16 -+ -+### i2c2 -+ -+Activates TWI/I2C bus 2 -+ -+I2C2 pins (SCL, SDA): PB17, PB18 -+ -+### nand -+ -+Activates NAND controller -+ -+This overlay should not be used until mainline MLC NAND support -+allows using NAND storage reliably -+ -+### pwm -+ -+Activates hardware PWM controller -+ -+PWM pins (PWM0): PB2 -+ -+### spi0 -+ -+Activates SPI controller 0 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0): PC0, PC1, PC2, PC3 -+ -+### spi1 -+ -+Activates SPI controller 1 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 1 pins (MOSI, MISO, SCK, CS0): PG11, PG12, PG10, PG9 -+ -+### spi2 -+ -+Activates SPI controller 2 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 2 pins (MOSI, MISO, SCK, CS0): PE2, PE3, PE1, PE0 -+ -+### spi-jedec-nor -+ -+Activates MTD support for JEDEC compatible SPI NOR flash chips on SPI bus -+supported by the kernel SPI NOR driver -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0): PC0, PC1, PC2, PC3 -+SPI 1 pins (MOSI, MISO, SCK, CS0): PG11, PG12, PG10, PG9 -+SPI 2 pins (MOSI, MISO, SCK, CS0): PE2, PE3, PE1, PE0 -+ -+Parameters: -+ -+param_spinor_spi_bus (int) -+ SPI bus to activate SPI NOR flash support on -+ Required -+ Supported values: 0, 1, 2 -+ -+param_spinor_max_freq (int) -+ Maximum SPI frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### spi-spidev -+ -+Activates SPIdev device node (/dev/spidevX.Y) for userspace SPI access, -+where X is the bus number and Y is the CS number -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0): PC0, PC1, PC2, PC3 -+SPI 1 pins (MOSI, MISO, SCK, CS0): PG11, PG12, PG10, PG9 -+SPI 2 pins (MOSI, MISO, SCK, CS0): PE2, PE3, PE1, PE0 -+ -+Parameters: -+ -+param_spidev_spi_bus (int) -+ SPI bus to activate mcp2515 support on -+ Required -+ Supported values: 0, 1, 2 -+ -+param_spidev_max_freq (int) -+ Maximum SPIdev frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### uart 0 -+ -+Activates serial port 0 (/dev/ttyS0) -+ -+UART 0 pins (TX, RX): PF2, PF4 -+ -+### uart 1 -+ -+Activates serial port 1 (/dev/ttyS1) -+ -+UART 1 pins a (TX, RX): PE10, PE11 -+UART 1 pins b (TX, RX): PG3, PG4 -+ -+Parameters: -+ -+param_uart1_pins (char) -+ UART 1 pinmux variant -+ Optional -+ Default: a -+ Supported values: a, b -+ Determines what pins UART 1 is exposed on if UART 1 is used -+ -+### uart2 -+ -+Activates serial port 2 (/dev/ttyS2) -+ -+UART 2 pins (TX, RX, RTS, CTS): PD2, PD3, PD4, PD5 -+ -+Parameters: -+ -+param_uart2_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### uart3 -+ -+Activates serial port 3 (/dev/ttyS3) -+ -+UART 3 pins (TX, RX, RTS, CTS): PG9, PG10, PG12, PG11 -+ -+Parameters: -+ -+param_uart3_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -diff --git a/arch/arm/boot/dts/allwinner/overlay/README.sun7i-a20-overlays b/arch/arm/boot/dts/allwinner/overlay/README.sun7i-a20-overlays -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/README.sun7i-a20-overlays -@@ -0,0 +1,348 @@ -+This document describes overlays provided in the kernel packages -+For generic Armbian overlays documentation please see -+https://docs.armbian.com/User-Guide_Armbian_overlays/ -+ -+### Platform: -+ -+sun7i-a20 (Allwinner A20) -+ -+### Platform details: -+ -+Supported pin banks: PB, PC, PD, PE, PG, PH, PI -+ -+SPI controller 0 have 2 exposed hardware CS, -+other SPI controllers have only one hardware CS -+Reference: A20 Datasheet sections 6.3.5.1, 1.19.2 -+ -+I2C bus 0 is used for the AXP209 PMIC -+ -+### Provided overlays: -+ -+- analog-codec -+- can -+- i2c1 -+- i2c2 -+- i2c3 -+- i2c4 -+- i2s0 -+- i2s1 -+- mmc2 -+- nand -+- pps-gpio -+- pwm -+- spdif-out -+- spi0 -+- spi1 -+- spi2 -+- spi-add-cs1 -+- spi-jedec-nor -+- spi-spidev -+- uart1 -+- uart2 -+- uart3 -+- uart4 -+- uart5 -+- uart6 -+- uart7 -+- w1-gpio -+ -+### Overlay details: -+ -+### analog-codec -+ -+Activates SoC analog codec driver that provides Line Out and Mic In -+functionality -+ -+## can -+ -+Activates SoC CAN controller -+ -+CAN pins (TX, RX): PH20, PH21 -+ -+### i2c1 -+ -+Activates TWI/I2C bus 1 -+ -+I2C1 pins (SCL, SDA): PB18, PB19 -+ -+### i2c2 -+ -+Activates TWI/I2C bus 2 -+ -+I2C2 pins (SCL, SDA): PB20, PB21 -+ -+### i2c3 -+ -+Activates TWI/I2C bus 3 -+ -+I2C3 pins (SCL, SDA): PI0, PI1 -+ -+### i2c4 -+ -+Activates TWI/I2C bus 4 -+ -+I2C4 pins (SCL, SDA): PI2, PI3 -+ -+### i2s0 -+ -+Activates SoC I2S controller 0 -+ -+I2S0 pins (MCLK, BCLK, LRCK, DO0, DO1, DO2, DO3, DI): PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12 -+ -+### i2s1 -+ -+Activates SoC I2S controller 1 -+ -+I2S1 pins (MCLK, BCLK, LRCK, DO, DI): PA9, PA14, PA15, PA16, PA17 -+ -+### mmc2 -+ -+Activates SD/MMC controller 2. To be used on boards with second SD slot, eMMC -+or tSD instead of NAND storage. -+ -+MMC2 pins: PC6, PC7, PC8, PC9, PC10, PC11 -+ -+Parameters: -+ -+param_mmc2_cd_pin (pin) -+ SD/MMC 2 card detect pin -+ Optional -+ Default: PH0 -+ -+param_mmc2_non_removable (bool) -+ Option for non-removable storage options on MMC 2 controller (eMMC or tSD) -+ Optional -+ Default: 0 -+ Set to 1 to use this option -+ -+### nand -+ -+Activates NAND controller -+ -+This overlay should not be used until mainline MLC NAND support -+allows using NAND storage reliably -+ -+### pps-gpio -+ -+Activates pulse-per-second GPIO client -+ -+Parameters: -+ -+param_pps_pin (pin) -+ Pin PPS source is connected to -+ Optional -+ Default: PI15 -+ -+param_pps_falling_edge (bool) -+ Assert by falling edge -+ Optional -+ Default: 0 -+ When set (to 1), assert is indicated by a falling edge -+ (instead of by a rising edge) -+ -+### pwm -+ -+Activates hardware PWM controller -+ -+PWM pins (PWM0, PWM1): PB2, PI3 -+ -+Parameters: -+ -+param_pwm_pins (string) -+ PWM pins activated with this overlay -+ Optional -+ Default: both -+ Supported values: 0, 1, both -+ If set to 0 only PWM0 can be used, -+ if set to 1 then only PWM1 can be used, -+ if set to both (default), both PWM0 and PWM1 can be used -+ -+### spdif-out -+ -+Activates SPDIF/Toslink audio output -+ -+SPDIF pin: PB13 -+ -+### spi0 -+ -+Activates SPI controller 0 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0, CS1): PI12, PI13, PI11, PI10, PI14 -+ -+### spi1 -+ -+Activates SPI controller 1 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 1 pins (MOSI, MISO, SCK, CS0): PI18, PI19, PI17, PI16 -+ -+### spi2 -+ -+Activates SPI controller 2 to use it with other overlays and sets up the pin multiplexing for it -+ -+SPI 2 pins a (MOSI, MISO, SCK, CS0): PC21, PC22, PC20, PC19 -+SPI 2 pins b (MOSI, MISO, SCK, CS0): PB16, PB17, PB15, PB14 -+ -+Parameters: -+ -+param_spi2_bus_pins (char) -+ SPI bus 2 pinmux variant -+ Optional -+ Default: a -+ Supported values: a, b -+ Determines what pins SPI bus 2 is exposed on if SPI 2 is used -+ -+### spi-add-cs1 -+ -+Activates SPI chip select 1 on SPI controller 0 -+This overlay is required for using chip select 1 with other SPI overlays -+ -+SPI 0 CS1 pin: PI14 -+ -+### spi-jedec-nor -+ -+Activates MTD support for JEDEC compatible SPI NOR flash chips on SPI bus -+supported by the kernel SPI NOR driver -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0, CS1): PI12, PI13, PI11, PI10, PI14 -+SPI 1 pins (MOSI, MISO, SCK, CS0): PI18, PI19, PI17, PI16 -+SPI 2 pins a (MOSI, MISO, SCK, CS0): PC21, PC22, PC20, PC19 -+SPI 2 pins b (MOSI, MISO, SCK, CS0): PB16, PB17, PB15, PB14 -+ -+Parameters: -+ -+param_spinor_spi_bus (int) -+ SPI bus to activate SPI NOR flash support on -+ Required -+ Supported values: 0, 1, 2 -+ -+param_spinor_spi_cs (int) -+ SPI chip select number for SPI NOR connected to SPI bus 0 -+ Optional -+ Default: 0 -+ Supported values: 0, 1 -+ Using chip select 1 on SPI 0 requires using "spi-add-cs1" overlay -+ -+param_spinor_max_freq (int) -+ Maximum SPI frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### spi-spidev -+ -+Activates SPIdev device node (/dev/spidevX.Y) for userspace SPI access, -+where X is the bus number and Y is the CS number -+ -+SPI 0 pins (MOSI, MISO, SCK, CS0, CS1): PI12, PI13, PI11, PI10, PI14 -+SPI 1 pins (MOSI, MISO, SCK, CS0): PI18, PI19, PI17, PI16 -+SPI 2 pins a (MOSI, MISO, SCK, CS0): PC21, PC22, PC20, PC19 -+SPI 2 pins b (MOSI, MISO, SCK, CS0): PB16, PB17, PB15, PB14 -+ -+Parameters: -+ -+param_spidev_spi_bus (int) -+ SPI bus to activate mcp2515 support on -+ Required -+ Supported values: 0, 1, 2 -+ -+param_spidev_spi_cs (int) -+ SPI chip select number for SPIdev on SPI bus 0 -+ Optional -+ Default: 0 -+ Supported values: 0, 1 -+ Using chip select 1 on SPI 0 requires using "spi-add-cs1" overlay -+ -+param_spidev_max_freq (int) -+ Maximum SPIdev frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### uart2 -+ -+Activates serial port 2 (/dev/ttyS2) -+ -+UART 2 pins (TX, RX, RTS, CTS): PI18, PI19, PI16, PI17 -+ -+Parameters: -+ -+param_uart2_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### uart3 -+ -+Activates serial port 3 (/dev/ttyS3) -+ -+UART 3 pins a (TX, RX, RTS, CTS): PG6, PG7, PG8, PG9 -+UART 3 pins b (TX, RX, RTS, CTS): PH0, PH1, PH2, PH3 -+ -+Parameters: -+ -+param_uart3_pins (char) -+ Determines what pins UART 3 is exposed on -+ Optional -+ Default: a -+ Supported values: a, b -+ -+param_uart3_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### uart4 -+ -+Activates serial port 4 (/dev/ttyS4) -+ -+UART 4 pins a (TX, RX): PG10, PG11 -+UART 4 pins b (TX, RX): PH4, PH5 -+ -+Parameters: -+ -+param_uart4_pins (char) -+ Determines what pins UART 4 is exposed on -+ Optional -+ Default: a -+ Supported values: a, b -+ -+### uart 5 -+ -+Activates serial port 5 (/dev/ttyS5) -+ -+UART 5 pins (TX, RX): PH6, PH7 -+ -+### uart 6 -+ -+Activates serial port 6 (/dev/ttyS6) -+ -+UART 6 pins (TX, RX): PI12, PI13 -+ -+### uart 7 -+ -+Activates serial port 7 (/dev/ttyS7) -+ -+UART 7 pins (TX, RX): PI20, PI21 -+ -+### w1-gpio -+ -+Activates 1-Wire GPIO master -+Requires an external pull-up resistor on the data pin -+or enabling the internal pull-up -+ -+Parameters: -+ -+param_w1_pin (pin) -+ Data pin for 1-Wire master -+ Optional -+ Default: PI15 -+ -+param_w1_pin_int_pullup (bool) -+ Enable internal pull-up for the data pin -+ Optional -+ Default: 0 -+ Set to 1 to enable the pull-up -+ This option should not be used with multiple sensors or long wires - -+ please use external pull-up resistor instead -diff --git a/arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays b/arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/README.sun8i-h3-overlays -@@ -0,0 +1,250 @@ -+This document describes overlays provided in the kernel packages -+For generic Armbian overlays documentation please see -+https://docs.armbian.com/User-Guide_Armbian_overlays/ -+ -+### Platform: -+ -+sun8i-h3 (Allwinner H3) -+ -+### Platform details: -+ -+Supported pin banks: PA, PC, PD, PG -+ -+Both SPI controllers have only one hardware CS pin exposed, -+adding fixed software (GPIO) chip selects is possible with a separate overlay -+ -+### Provided overlays: -+ -+- analog-codec -+- cir -+- i2c0 -+- i2c1 -+- i2c2 -+- pps-gpio -+- pwm -+- spdif-out -+- spi-add-cs1 -+- spi-jedec-nor -+- spi-spidev -+- uart1 -+- uart2 -+- uart3 -+- usbhost0 -+- usbhost1 -+- usbhost2 -+- usbhost3 -+- w1-gpio -+ -+### Overlay details: -+ -+### analog-codec -+ -+Activates SoC analog codec driver that provides Line Out and Mic In -+functionality -+ -+### cir -+ -+Activates CIR (Infrared remote) receiver -+ -+CIR pin: PL11 -+ -+### i2c0 -+ -+Activates TWI/I2C bus 0 -+ -+I2C0 pins (SCL, SDA): PA11, PA12 -+ -+### i2c1 -+ -+Activates TWI/I2C bus 1 -+ -+I2C1 pins (SCL, SDA): PA18, PA19 -+ -+### i2c2 -+ -+Activates TWI/I2C bus 2 -+ -+I2C2 pins (SCL, SDA): PE12, PE13 -+ -+On most board this bus is wired to Camera (CSI) socket -+ -+### pps-gpio -+ -+Activates pulse-per-second GPIO client -+ -+Parameters: -+ -+param_pps_pin (pin) -+ Pin PPS source is connected to -+ Optional -+ Default: PD14 -+ -+param_pps_falling_edge (bool) -+ Assert by falling edge -+ Optional -+ Default: 0 -+ When set (to 1), assert is indicated by a falling edge -+ (instead of by a rising edge) -+ -+### pwm -+ -+Activates hardware PWM controller -+ -+PWM pin: PA5 -+ -+Pin PA5 is used as UART0 RX by default, so if this overlay is activated, -+UART0 and kernel console on ttyS0 will be disabled -+ -+### spdif-out -+ -+Activates SPDIF/Toslink audio output -+ -+SPDIF pin: PA17 -+ -+### spi-add-cs1 -+ -+Adds support for using SPI chip select 1 with GPIO for both SPI controllers -+Respective GPIO will be claimed only if controller is enabled by another -+overlay -+This overlay is required for using chip select 1 with other SPI overlays -+Due to the u-boot limitations CS1 pin can't be customized by a parameter, but -+it can be changed by using an edited copy of this overlay -+A total of 4 chip selects can be used with custom overlays (1 HW + 3 GPIO) -+ -+SPI 0 pins (CS1): PA21 -+SPI 1 pins (CS1): PA10 -+ -+### spi-jedec-nor -+ -+Activates MTD support for JEDEC compatible SPI NOR flash chips on SPI bus -+supported by the kernel SPI NOR driver -+ -+SPI 0 pins (MOSI, MISO, SCK, CS): PC0, PC1, PC2, PC3 -+SPI 1 pins (MOSI, MISO, SCK, CS): PA15, PA16, PA14, PA13 -+ -+Parameters: -+ -+param_spinor_spi_bus (int) -+ SPI bus to activate SPI NOR flash support on -+ Required -+ Supported values: 0, 1 -+ -+param_spinor_spi_cs (int) -+ SPI chip select number -+ Optional -+ Default: 0 -+ Supported values: 0, 1 -+ Using chip select 1 requires using "spi-add-cs1" overlay -+ -+param_spinor_max_freq (int) -+ Maximum SPI frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### spi-spidev -+ -+Activates SPIdev device node (/dev/spidevX.Y) for userspace SPI access, -+where X is the bus number and Y is the CS number -+ -+SPI 0 pins (MOSI, MISO, SCK, CS): PC0, PC1, PC2, PC3 -+SPI 1 pins (MOSI, MISO, SCK, CS): PA15, PA16, PA14, PA13 -+ -+Parameters: -+ -+param_spidev_spi_bus (int) -+ SPI bus to activate SPIdev support on -+ Required -+ Supported values: 0, 1 -+ -+param_spidev_spi_cs (int) -+ SPI chip select number -+ Optional -+ Default: 0 -+ Supported values: 0, 1 -+ Using chip select 1 requires using "spi-add-cs1" overlay -+ -+param_spidev_max_freq (int) -+ Maximum SPIdev frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### uart1 -+ -+Activates serial port 1 (/dev/ttyS1) -+ -+UART 1 pins (TX, RX, RTS, CTS): PG6, PG7, PG8, PG9 -+ -+Parameters: -+ -+param_uart1_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable -+ -+### uart2 -+ -+Activates serial port 2 (/dev/ttyS2) -+ -+UART 2 pins (TX, RX, RTS, CTS): PA0, PA1, PA2, PA3 -+ -+Parameters: -+ -+param_uart2_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### uart3 -+ -+Activates serial port 3 (/dev/ttyS3) -+ -+UART 3 pins (TX, RX, RTS, CTS): PA13, PA14, PA15, PA16 -+ -+Parameters: -+ -+param_uart3_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### usbhost0 -+ -+Activates USB host controller 0 -+ -+### usbhost1 -+ -+Activates USB host controller 1 -+ -+### usbhost2 -+ -+Activates USB host controller 2 -+ -+### usbhost3 -+ -+Activates USB host controller 3 -+ -+### w1-gpio -+ -+Activates 1-Wire GPIO master -+Requires an external pull-up resistor on the data pin -+or enabling the internal pull-up -+ -+Parameters: -+ -+param_w1_pin (pin) -+ Data pin for 1-Wire master -+ Optional -+ Default: PD14 -+ -+param_w1_pin_int_pullup (bool) -+ Enable internal pull-up for the data pin -+ Optional -+ Default: 0 -+ Set to 1 to enable the pull-up -+ This option should not be used with multiple devices, parasite power setup -+ or long wires - please use external pull-up resistor instead -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-analog-codec.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-analog-codec.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-analog-codec.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target = <&codec>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-can.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-can.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-can.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target = <&can0>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&can0_ph_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-fixup.scr-cmd b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-fixup.scr-cmd -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-fixup.scr-cmd -@@ -0,0 +1,124 @@ -+# overlays fixup script -+# implements (or rather substitutes) overlay arguments functionality -+# using u-boot scripting, environment variables and "fdt" command -+ -+# setexpr test_var ${tmp_bank} - A -+# works only for hex numbers (A-F) -+ -+setenv decompose_pin 'setexpr tmp_bank sub "P(B|C|D|E|G|H|I)\\d+" "\\1"; -+setexpr tmp_pin sub "P\\S(\\d+)" "\\1"; -+test "${tmp_bank}" = "B" && setenv tmp_bank 1; -+test "${tmp_bank}" = "C" && setenv tmp_bank 2; -+test "${tmp_bank}" = "D" && setenv tmp_bank 3; -+test "${tmp_bank}" = "E" && setenv tmp_bank 4; -+test "${tmp_bank}" = "G" && setenv tmp_bank 6; -+test "${tmp_bank}" = "H" && setenv tmp_bank 7; -+test "${tmp_bank}" = "I" && setenv tmp_bank 8' -+ -+if test -n "${param_spinor_spi_bus}"; then -+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c05000" -+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c06000" -+ test "${param_spinor_spi_bus}" = "2" && setenv tmp_spi_path "spi@1c17000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spiflash status "okay" -+ if test -n "${param_spinor_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spiflash spi-max-frequency "<${param_spinor_max_freq}>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_spidev_spi_bus}"; then -+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c05000" -+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c06000" -+ test "${param_spidev_spi_bus}" = "2" && setenv tmp_spi_path "spi@1c17000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spidev status "okay" -+ if test -n "${param_spidev_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test "${param_spi2_bus_pins}" = "b"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/spi2@1 phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/spi2_cs0@1 phandle -+ fdt set /soc/spi@1c17000 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/spi@1c17000 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test -n "${param_pps_pin}"; then -+ setenv tmp_bank "${param_pps_pin}" -+ setenv tmp_pin "${param_pps_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/pps_pins pins "${param_pps_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /pps@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_pps_falling_edge}" = "1"; then -+ fdt set /pps@0 assert-falling-edge -+fi -+ -+if test "${param_pwm_pins}" = "0"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/pwm0@0 -+ fdt set /soc/pwm@1c20e00 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -+ -+if test "${param_pwm_pins}" = "1"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/pwm1@0 -+ fdt set /soc/pwm@1c20e00 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -+ -+if test -n "${param_w1_pin}"; then -+ setenv tmp_bank "${param_w1_pin}" -+ setenv tmp_pin "${param_w1_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/w1_pins pins "${param_w1_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /onewire@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_w1_pin_int_pullup}" = "1"; then -+ fdt set /soc/pinctrl@1c20800/w1_pins bias-pull-up -+fi -+ -+if test "${param_uart2_rtscts}" = "1"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/uart2@0 phandle -+ fdt set /soc/serial@1c28800 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -+ -+if test "${param_uart3_pins}" = "b"; then -+ if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart3_pins_b phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart3_pins_b_rts_cts phandle -+ fdt set /soc/serial@1c28c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28c00 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+ else -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/uart3_pins_b phandle -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+ fi -+else -+ if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart3_pins_a phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart3_pins_a_rts_cts phandle -+ fdt set /soc/serial@1c28c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28c00 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+ fi -+fi -+ -+if test "${param_uart4_pins}" = "b"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/uart4@1 phandle -+ fdt set /soc/serial@1c29000 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c1 = "/soc@1c00000/i2c@1c2b000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-i2c2.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c2 = "/soc@1c00000/i2c@1c2b400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-nand.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-nand.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-nand.dtso -@@ -0,0 +1,103 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ nand_pins_a: nand_pins@0 { -+ pins = "PC0", "PC1", "PC2", -+ "PC5", "PC8", "PC9", "PC10", -+ "PC11", "PC12", "PC13", "PC14", -+ "PC15", "PC16"; -+ function = "nand0"; -+ }; -+ -+ nand_cs0_pins_a: nand_cs@0 { -+ pins = "PC4"; -+ function = "nand0"; -+ }; -+ -+ nand_cs1_pins_a: nand_cs@1 { -+ pins = "PC3"; -+ function = "nand0"; -+ }; -+ -+ nand_cs2_pins_a: nand_cs@2 { -+ pins = "PC17"; -+ function = "nand0"; -+ }; -+ -+ nand_cs3_pins_a: nand_cs@3 { -+ pins = "PC18"; -+ function = "nand0"; -+ }; -+ -+ nand_rb0_pins_a: nand_rb@0 { -+ pins = "PC6"; -+ function = "nand0"; -+ }; -+ -+ nand_rb1_pins_a: nand_rb@1 { -+ pins = "PC7"; -+ function = "nand0"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&nfc>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>; -+ status = "okay"; -+ -+ nand@0 { -+ reg = <0>; -+ allwinner,rb = <0>; -+ nand-ecc-mode = "hw"; -+ nand-on-flash-bbt; -+ -+ partitions { -+ compatible = "fixed-partitions"; -+ #address-cells = <2>; -+ #size-cells = <2>; -+ -+ partition@0 { -+ label = "SPL"; -+ reg = <0x0 0x0 0x0 0x400000>; -+ }; -+ -+ partition@400000 { -+ label = "SPL.backup"; -+ reg = <0x0 0x400000 0x0 0x400000>; -+ }; -+ -+ partition@800000 { -+ label = "U-Boot"; -+ reg = <0x0 0x800000 0x0 0x400000>; -+ }; -+ -+ partition@c00000 { -+ label = "U-Boot.backup"; -+ reg = <0x0 0xc00000 0x0 0x400000>; -+ }; -+ -+ partition@1000000 { -+ label = "env"; -+ reg = <0x0 0x1000000 0x0 0x400000>; -+ }; -+ -+ partition@1400000 { -+ label = "rootfs"; -+ reg = <0x0 0xa00000 0x01 0xff000000>; -+ }; -+ }; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pps-gpio.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pps-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pps-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ pps_pins: pps_pins { -+ pins = "PI15"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ pps@0 { -+ compatible = "pps-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pps_pins>; -+ gpios = <&pio 8 15 0>; /* PI15 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pwm.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pwm.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-pwm.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pin>, <&pwm1_pin>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spdif-out.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spdif-out.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spdif-out.dtso -@@ -0,0 +1,38 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target = <&spdif>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spdif_tx_pin>; -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ sound { -+ compatible = "simple-audio-card"; -+ simple-audio-card,name = "On-board SPDIF"; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&spdif>; -+ }; -+ -+ simple-audio-card,codec { -+ sound-dai = <&spdif_out>; -+ }; -+ }; -+ -+ spdif_out: spdif-out { -+ #sound-dai-cells = <0>; -+ compatible = "linux,spdif-dit"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-jedec-nor.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-jedec-nor.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-jedec-nor.dtso -@@ -0,0 +1,57 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc@1c00000/spi@1c05000"; -+ spi1 = "/soc@1c00000/spi@1c06000"; -+ spi2 = "/soc@1c00000/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&spi2>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-spidev.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi-spidev.dtso -@@ -0,0 +1,57 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc@1c00000/spi@1c05000"; -+ spi1 = "/soc@1c00000/spi@1c06000"; -+ spi2 = "/soc@1c00000/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&spi2>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi0.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi0.dtso -@@ -0,0 +1,23 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc@1c00000/spi@1c05000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default", "default"; -+ pinctrl-0 = <&spi0_pi_pins>; -+ pinctrl-1 = <&spi0_cs0_pi_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi1 = "/soc@1c00000/spi@1c06000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-spi2.dtso -@@ -0,0 +1,23 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi2 = "/soc@1c00000/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi2>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default", "default"; -+ pinctrl-0 = <&spi2_pins_a>; -+ pinctrl-1 = <&spi2_cs0_pins_a>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart2.dtso -@@ -0,0 +1,37 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial2 = "/soc@1c00000/serial@1c28800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart2_pins_a: uart2@0 { -+ pins = "PI16", "PI17", "PI18", "PI19"; -+ function = "uart2"; -+ }; -+ -+ uart2_pins_a_2: uart2@1 { -+ pins = "PI18", "PI19"; -+ function = "uart2"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins_a_2>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart3.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart3.dtso -@@ -0,0 +1,47 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial3 = "/soc@1c00000/serial@1c28c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart3_pins_a: uart3@0 { -+ pins = "PG6", "PG7"; -+ function = "uart3"; -+ }; -+ -+ uart3_pins_a_rts_cts: uart3@1 { -+ pins = "PG8", "PG9"; -+ function = "uart3"; -+ }; -+ -+ uart3_pins_b: uart3@2 { -+ pins = "PH0", "PH1"; -+ function = "uart3"; -+ }; -+ -+ uart3_pins_b_rts_cts: uart3@3 { -+ pins = "PH2", "PH3"; -+ function = "uart3"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pins_a>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart4.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart4.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart4.dtso -@@ -0,0 +1,37 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial4 = "/soc@1c00000/serial@1c29000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart4_pins_a: uart4@0 { -+ pins = "PG10", "PG11"; -+ function = "uart4"; -+ }; -+ -+ uart4_pins_b: uart4@1 { -+ pins = "PH4", "PH5"; -+ function = "uart4"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart4>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart4_pins_a>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart5.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart5.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart5.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial5 = "/soc@1c00000/serial@1c29400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart5_pins_a: uart5@0 { -+ pins = "PH6", "PH7"; -+ function = "uart5"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart5>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart5_pins_a>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart6.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart6.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart6.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial6 = "/soc@1c00000/serial@1c29800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart6_pins_a: uart6@0 { -+ pins = "PI12", "PI13"; -+ function = "uart6"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart6>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart6_pins_a>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart7.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart7.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-uart7.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial7 = "/soc@1c00000/serial@1c29c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart7_pins_a: uart7@0 { -+ pins = "PI20", "PI21"; -+ function = "uart7"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart7>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart7_pins_a>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-w1-gpio.dtso b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-w1-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun4i-a10-w1-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a10"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ w1_pins: w1_pins { -+ pins = "PI15"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ onewire@0 { -+ compatible = "w1-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&w1_pins>; -+ gpios = <&pio 8 15 0>; /* PI15 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-analog-codec.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-analog-codec.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-analog-codec.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun4i-a13"; -+ -+ fragment@0 { -+ target = <&codec>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-fixup.scr-cmd b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-fixup.scr-cmd -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-fixup.scr-cmd -@@ -0,0 +1,48 @@ -+# overlays fixup script -+# implements (or rather substitutes) overlay arguments functionality -+# using u-boot scripting, environment variables and "fdt" command -+ -+if test -n "${param_spinor_spi_bus}"; then -+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c05000" -+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c06000" -+ test "${param_spinor_spi_bus}" = "2" && setenv tmp_spi_path "spi@1c17000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spiflash status "okay" -+ if test -n "${param_spinor_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spiflash spi-max-frequency "<${param_spinor_max_freq}>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_spidev_spi_bus}"; then -+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c05000" -+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c06000" -+ test "${param_spidev_spi_bus}" = "2" && setenv tmp_spi_path "spi@1c17000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spidev status "okay" -+ if test -n "${param_spidev_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test "${param_uart1_pins}" = "b"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c28400/uart1@1 phandle -+ fdt set /soc/serial@1c28400 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -+ -+if test "${param_uart2_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart2@0 phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart2-cts-rts@0 phandle -+ fdt set /soc/serial@1c28800 pinctrl-0 "<${tmp_phandle1}>, <${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart3@0 phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart3-cts-rts@0 phandle -+ fdt set /soc/serial@1c28c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle1}>, <${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c1 = "/soc@1c00000/i2c@1c2b000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-i2c2.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c2 = "/soc@1c00000/i2c@1c2b400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-nand.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-nand.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-nand.dtso -@@ -0,0 +1,60 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target = <&nfc>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&nand_pins>, <&nand_cs0_pin>, <&nand_rb0_pin>; -+ status = "okay"; -+ -+ nand@0 { -+ reg = <0>; -+ allwinner,rb = <0>; -+ nand-ecc-mode = "hw"; -+ nand-on-flash-bbt; -+ -+ partitions { -+ compatible = "fixed-partitions"; -+ #address-cells = <2>; -+ #size-cells = <2>; -+ -+ partition@0 { -+ label = "SPL"; -+ reg = <0x0 0x0 0x0 0x400000>; -+ }; -+ -+ partition@400000 { -+ label = "SPL.backup"; -+ reg = <0x0 0x400000 0x0 0x400000>; -+ }; -+ -+ partition@800000 { -+ label = "U-Boot"; -+ reg = <0x0 0x800000 0x0 0x400000>; -+ }; -+ -+ partition@c00000 { -+ label = "U-Boot.backup"; -+ reg = <0x0 0xc00000 0x0 0x400000>; -+ }; -+ -+ partition@1000000 { -+ label = "env"; -+ reg = <0x0 0x1000000 0x0 0x400000>; -+ }; -+ -+ partition@1400000 { -+ label = "rootfs"; -+ reg = <0x0 0xa00000 0x01 0xff000000>; -+ }; -+ }; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-pwm.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-pwm.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-pwm.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pin>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-jedec-nor.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-jedec-nor.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-jedec-nor.dtso -@@ -0,0 +1,57 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c05000"; -+ spi1 = "/soc/spi@1c06000"; -+ spi2 = "/soc/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&spi2>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-spidev.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi-spidev.dtso -@@ -0,0 +1,57 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a10"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c05000"; -+ spi1 = "/soc/spi@1c06000"; -+ spi2 = "/soc/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&spi2>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi0.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi0.dtso -@@ -0,0 +1,38 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c05000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ spi0_pins_a: spi0@0 { -+ pins = "PC0", "PC1", "PC2"; -+ function = "spi0"; -+ }; -+ -+ spi0_cs0_pins_a: spi0-cs0@0 { -+ pins = "PC3"; -+ function = "spi0"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi0>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default", "default"; -+ pinctrl-0 = <&spi0_pins_a>; -+ pinctrl-1 = <&spi0_cs0_pins_a>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi1.dtso -@@ -0,0 +1,39 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi1 = "/soc/spi@1c06000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ spi1_pins_a: spi1@0 { -+ pins = "PG10", "PG11", "PG12"; -+ function = "spi1"; -+ }; -+ -+ spi1_cs0_pins_a: spi1-cs0@0 { -+ pins = "PG9"; -+ function = "spi1"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi1_pins_a>, <&spi1_cs0_pins_a>; -+ }; -+ }; -+ -+ -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-spi2.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi2 = "/soc/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi2>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi2_pe_pins>, <&spi2_cs0_pe_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart0.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart0.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ uart0 = "/soc@1c00000/serial@1c28000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart0_pa_pins: uart0@0 { -+ pins = "PF2", "PF4"; -+ function = "uart0"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart0>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pa_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ uart1 = "/soc@1c00000/serial@1c28400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pe_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart2.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ uart2 = "/soc@1c00000/serial@1c28800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pd_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart3.dtso b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun5i-a13-uart3.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun5i-a13"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ uart3 = "/soc@1c00000/serial@1c28c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pg_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-analog-codec.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-analog-codec.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-analog-codec.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&codec>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-can.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-can.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-can.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&can0>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&can0_pins_a>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-fixup.scr-cmd b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-fixup.scr-cmd -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-fixup.scr-cmd -@@ -0,0 +1,143 @@ -+# overlays fixup script -+# implements (or rather substitutes) overlay arguments functionality -+# using u-boot scripting, environment variables and "fdt" command -+ -+# setexpr test_var ${tmp_bank} - A -+# works only for hex numbers (A-F) -+ -+setenv decompose_pin 'setexpr tmp_bank sub "P(B|C|D|E|G|H|I)\\d+" "\\1"; -+setexpr tmp_pin sub "P\\S(\\d+)" "\\1"; -+test "${tmp_bank}" = "B" && setenv tmp_bank 1; -+test "${tmp_bank}" = "C" && setenv tmp_bank 2; -+test "${tmp_bank}" = "D" && setenv tmp_bank 3; -+test "${tmp_bank}" = "E" && setenv tmp_bank 4; -+test "${tmp_bank}" = "G" && setenv tmp_bank 6; -+test "${tmp_bank}" = "H" && setenv tmp_bank 7; -+test "${tmp_bank}" = "I" && setenv tmp_bank 8' -+ -+if test -n "${param_spinor_spi_bus}"; then -+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c05000" -+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c06000" -+ test "${param_spinor_spi_bus}" = "2" && setenv tmp_spi_path "spi@1c17000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spiflash status "okay" -+ if test -n "${param_spinor_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spiflash spi-max-frequency "<${param_spinor_max_freq}>" -+ fi -+ if test "${param_spinor_spi_bus}" = "0" && test "${param_spinor_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spiflash reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_spidev_spi_bus}"; then -+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c05000" -+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c06000" -+ test "${param_spidev_spi_bus}" = "2" && setenv tmp_spi_path "spi@1c17000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spidev status "okay" -+ if test -n "${param_spidev_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" -+ fi -+ if test "${param_spidev_spi_bus}" = "0" && test "${param_spidev_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spidev reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test "${param_spi2_bus_pins}" = "b"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/spi2@1 phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/spi2_cs0@1 phandle -+ fdt set /soc/spi@1c17000 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/spi@1c17000 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test -n "${param_pps_pin}"; then -+ setenv tmp_bank "${param_pps_pin}" -+ setenv tmp_pin "${param_pps_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/pps_pins pins "${param_pps_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /pps@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_pps_falling_edge}" = "1"; then -+ fdt set /pps@0 assert-falling-edge -+fi -+ -+if test "${param_pwm_pins}" = "0"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/pwm0@0 -+ fdt set /soc/pwm@1c20e00 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -+ -+if test "${param_pwm_pins}" = "1"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/pwm1@0 -+ fdt set /soc/pwm@1c20e00 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -+ -+if test -n "${param_w1_pin}"; then -+ setenv tmp_bank "${param_w1_pin}" -+ setenv tmp_pin "${param_w1_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/w1_pins pins "${param_w1_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /onewire@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test -n "${param_mmc2_cd_pin}"; then -+ setenv tmp_bank "${param_mmc2_cd_pin}" -+ setenv tmp_pin "${param_mmc2_cd_pin}" -+ run decompose_pin -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /soc/mmc@1c11000 cd-gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 1>" -+fi -+ -+if test "${param_mmc2_non_removable}" = "1"; then -+ fdt rm /soc/mmc@1c11000 cd-gpios -+ fdt set /soc/mmc@1c11000 non-removable -+fi -+ -+if test "${param_w1_pin_int_pullup}" = "1"; then -+ fdt set /soc/pinctrl@1c20800/w1_pins bias-pull-up -+fi -+ -+if test "${param_uart2_rtscts}" = "1"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/uart2-pi-pins phandle -+ fdt set /soc/serial@1c28800 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -+ -+if test "${param_uart3_pins}" = "b"; then -+ if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart3-ph-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart3-cts-rts-ph-pins phandle -+ fdt set /soc/serial@1c28c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28c00 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+ else -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/uart3-ph-pins phandle -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+ fi -+else -+ if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart3-pg-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart3-cts-rts-pg-pins phandle -+ fdt set /soc/serial@1c28c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28c00 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+ fi -+fi -+ -+if test "${param_uart4_pins}" = "b"; then -+ fdt get value tmp_phandle /soc/pinctrl@1c20800/uart4-pg-pins phandle -+ fdt set /soc/serial@1c29000 pinctrl-0 "<${tmp_phandle}>" -+ env delete tmp_phandle -+fi -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c1 = "/soc@1c00000/i2c@1c2b000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c2.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c2 = "/soc@1c00000/i2c@1c2b400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c3.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c3.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c3 = "/soc@1c00000/i2c@1c2b800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c3_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c4.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c4.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2c4.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c4 = "/soc@1c00000/i2c@1c2c000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ i2c4_pins_a: i2c4@0 { -+ pins = "PI2", "PI3"; -+ function = "i2c4"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&i2c4>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c4_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s0.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s0.dtso -@@ -0,0 +1,25 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ i2s0_pins: i2s0 { -+ pins = "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12"; -+ function = "i2s0"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2s0>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s0_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-i2s1.dtso -@@ -0,0 +1,25 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ i2s1_pins: i2s1 { -+ pins = "PA9", "PA14", "PA15", "PA16", "PA17"; -+ function = "i2s1"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2s1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-mmc2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-mmc2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-mmc2.dtso -@@ -0,0 +1,18 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&mmc2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc2_pins>; -+ vmmc-supply = <®_vcc3v3>; -+ bus-width = <4>; -+ cd-gpios = <&pio 7 0 1>; /* PH0, active low */ -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-nand.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-nand.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-nand.dtso -@@ -0,0 +1,103 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ nand_pins_a: nand_pins@0 { -+ pins = "PC0", "PC1", "PC2", -+ "PC5", "PC8", "PC9", "PC10", -+ "PC11", "PC12", "PC13", "PC14", -+ "PC15", "PC16"; -+ function = "nand0"; -+ }; -+ -+ nand_cs0_pins_a: nand_cs@0 { -+ pins = "PC4"; -+ function = "nand0"; -+ }; -+ -+ nand_cs1_pins_a: nand_cs@1 { -+ pins = "PC3"; -+ function = "nand0"; -+ }; -+ -+ nand_cs2_pins_a: nand_cs@2 { -+ pins = "PC17"; -+ function = "nand0"; -+ }; -+ -+ nand_cs3_pins_a: nand_cs@3 { -+ pins = "PC18"; -+ function = "nand0"; -+ }; -+ -+ nand_rb0_pins_a: nand_rb@0 { -+ pins = "PC6"; -+ function = "nand0"; -+ }; -+ -+ nand_rb1_pins_a: nand_rb@1 { -+ pins = "PC7"; -+ function = "nand0"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&nfc>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>; -+ status = "okay"; -+ -+ nand@0 { -+ reg = <0>; -+ allwinner,rb = <0>; -+ nand-ecc-mode = "hw"; -+ nand-on-flash-bbt; -+ -+ partitions { -+ compatible = "fixed-partitions"; -+ #address-cells = <2>; -+ #size-cells = <2>; -+ -+ partition@0 { -+ label = "SPL"; -+ reg = <0x0 0x0 0x0 0x400000>; -+ }; -+ -+ partition@400000 { -+ label = "SPL.backup"; -+ reg = <0x0 0x400000 0x0 0x400000>; -+ }; -+ -+ partition@800000 { -+ label = "U-Boot"; -+ reg = <0x0 0x800000 0x0 0x400000>; -+ }; -+ -+ partition@c00000 { -+ label = "U-Boot.backup"; -+ reg = <0x0 0xc00000 0x0 0x400000>; -+ }; -+ -+ partition@1000000 { -+ label = "env"; -+ reg = <0x0 0x1000000 0x0 0x400000>; -+ }; -+ -+ partition@1400000 { -+ label = "rootfs"; -+ reg = <0x0 0xa00000 0x01 0xff000000>; -+ }; -+ }; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pps-gpio.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pps-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pps-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ pps_pins: pps_pins { -+ pins = "PI15"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ pps@0 { -+ compatible = "pps-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pps_pins>; -+ gpios = <&pio 8 15 0>; /* PI15 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pwm.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pwm.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-pwm.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pin>, <&pwm1_pin>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spdif-out.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spdif-out.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spdif-out.dtso -@@ -0,0 +1,38 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&spdif>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spdif_tx_pin>; -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ sound { -+ compatible = "simple-audio-card"; -+ simple-audio-card,name = "On-board SPDIF"; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&spdif>; -+ }; -+ -+ simple-audio-card,codec { -+ sound-dai = <&spdif_out>; -+ }; -+ }; -+ -+ spdif_out: spdif-out { -+ #sound-dai-cells = <0>; -+ compatible = "linux,spdif-dit"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-add-cs1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-add-cs1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-add-cs1.dtso -@@ -0,0 +1,16 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&spi0>; -+ __overlay__ { -+ pinctrl-names = "default", "default", "default"; -+ pinctrl-0 = <&spi0_pi_pins>; -+ pinctrl-1 = <&spi0_cs0_pi_pin>; -+ pinctrl-2 = <&spi0_cs1_pi_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-jedec-nor.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-jedec-nor.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-jedec-nor.dtso -@@ -0,0 +1,57 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc@1c00000/spi@1c05000"; -+ spi1 = "/soc@1c00000/spi@1c06000"; -+ spi2 = "/soc@1c00000/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&spi2>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-spidev.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi-spidev.dtso -@@ -0,0 +1,57 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc@1c00000/spi@1c05000"; -+ spi1 = "/soc@1c00000/spi@1c06000"; -+ spi2 = "/soc@1c00000/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&spi2>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi0.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi0.dtso -@@ -0,0 +1,23 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc@1c00000/spi@1c05000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default", "default"; -+ pinctrl-0 = <&spi0_pi_pins>; -+ pinctrl-1 = <&spi0_cs0_pi_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi1 = "/soc@1c00000/spi@1c06000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi1_pi_pins>, <&spi1_cs0_pi_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-spi2.dtso -@@ -0,0 +1,23 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi2 = "/soc@1c00000/spi@1c17000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi2>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default", "default"; -+ pinctrl-0 = <&spi2_pb_pins>; -+ pinctrl-1 = <&spi2_pb_cs0_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart2.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial2 = "/soc@1c00000/serial@1c28800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart2_pins_a_2: uart2@1 { -+ pins = "PI18", "PI19"; -+ function = "uart2"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins_a_2>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart3.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart3.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial3 = "/soc@1c00000/serial@1c28c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart3_pins_a_2: uart3@2 { -+ pins = "PG6", "PG7"; -+ function = "uart3"; -+ }; -+ -+ uart3_pins_a_rts_cts: uart3@1 { -+ pins = "PG8", "PG9"; -+ function = "uart3"; -+ }; -+ -+ uart3_pins_b_rts_cts: uart3@3 { -+ pins = "PH2", "PH3"; -+ function = "uart3"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pins_a_2>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart4.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart4.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart4.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial4 = "/soc@1c00000/serial@1c29000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart4>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart4_pg_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart5.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart5.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart5.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial5 = "/soc@1c00000/serial@1c29400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart5>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart5_pi_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart6.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart6.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart6.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial6 = "/soc@1c00000/serial@1c29800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart6>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart6_pi_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart7.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart7.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-uart7.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial7 = "/soc@1c00000/serial@1c29c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart7>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart7_pi_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-w1-gpio.dtso b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-w1-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun7i-a20-w1-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun7i-a20"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ w1_pins: w1_pins { -+ pins = "PI15"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ onewire@0 { -+ compatible = "w1-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&w1_pins>; -+ gpios = <&pio 8 15 0>; /* PI15 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-analog-codec.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-analog-codec.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-analog-codec.dtso -@@ -0,0 +1,17 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&codec>; -+ __overlay__ { -+ allwinner,audio-routing = -+ "Line Out", "LINEOUT", -+ "MIC1", "Mic", -+ "Mic", "MBIAS"; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cir.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cir.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cir.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&ir>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&r_ir_rx_pin>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-fixup.scr-cmd b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-fixup.scr-cmd -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-fixup.scr-cmd -@@ -0,0 +1,110 @@ -+# overlays fixup script -+# implements (or rather substitutes) overlay arguments functionality -+# using u-boot scripting, environment variables and "fdt" command -+ -+# setexpr test_var ${tmp_bank} - A -+# works only for hex numbers (A-F) -+ -+setenv decompose_pin 'setexpr tmp_bank sub "P(A|C|D|G)\\d+" "\\1"; -+setexpr tmp_pin sub "P\\S(\\d+)" "\\1"; -+test "${tmp_bank}" = "A" && setenv tmp_bank 0; -+test "${tmp_bank}" = "C" && setenv tmp_bank 2; -+test "${tmp_bank}" = "D" && setenv tmp_bank 3; -+test "${tmp_bank}" = "G" && setenv tmp_bank 6' -+ -+if test -n "${param_spinor_spi_bus}"; then -+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c68000" -+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c69000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spiflash status "okay" -+ if test -n "${param_spinor_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spiflash spi-max-frequency "<${param_spinor_max_freq}>" -+ fi -+ if test "${param_spinor_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spiflash reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_spidev_spi_bus}"; then -+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c68000" -+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c69000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spidev status "okay" -+ if test -n "${param_spidev_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" -+ fi -+ if test "${param_spidev_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spidev reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_pps_pin}"; then -+ setenv tmp_bank "${param_pps_pin}" -+ setenv tmp_pin "${param_pps_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/pps_pins pins "${param_pps_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /pps@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_pps_falling_edge}" = "1"; then -+ fdt set /pps@0 assert-falling-edge -+fi -+ -+for f in ${overlays}; do -+ if test "${f}" = "pwm"; then -+ setenv bootargs_new "" -+ for arg in ${bootargs}; do -+ if test "${arg}" = "console=ttyS0,115200"; then -+ echo "Warning: Disabling ttyS0 console due to enabled PWM overlay" -+ else -+ setenv bootargs_new "${bootargs_new} ${arg}" -+ fi -+ done -+ setenv bootargs "${bootargs_new}" -+ fi -+done -+ -+if test -n "${param_w1_pin}"; then -+ setenv tmp_bank "${param_w1_pin}" -+ setenv tmp_pin "${param_w1_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/w1_pins pins "${param_w1_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /onewire@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_w1_pin_int_pullup}" = "1"; then -+ fdt set /soc/pinctrl@1c20800/w1_pins bias-pull-up -+fi -+ -+if test "${param_uart1_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart1-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart1-rts-cts-pins phandle -+ fdt set /soc/serial@1c28400 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28400 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28400 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart2_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart2-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart2-rts-cts-pins phandle -+ fdt set /soc/serial@1c28800 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28800 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28800 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart3-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart3-rts-cts-pins phandle -+ fdt set /soc/serial@1c28c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28c00 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c0.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c0.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c0 = "/soc/i2c@1c2ac00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c0>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c1.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c1 = "/soc/i2c@1c2b000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-i2c2.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c2 = "/soc/i2c@1c2b400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c2>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pps-gpio.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pps-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pps-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ pps_pins: pps_pins { -+ pins = "PD14"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ pps@0 { -+ compatible = "pps-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pps_pins>; -+ gpios = <&pio 3 14 0>; /* PD14 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pwm.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pwm.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-pwm.dtso -@@ -0,0 +1,39 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/chosen"; -+ __overlay__ { -+ /delete-property/ stdout-path; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart0>; -+ __overlay__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&pio>; -+ __overlay__ { -+ pwm0_pin: pwm0 { -+ pins = "PA5"; -+ function = "pwm0"; -+ }; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&pwm>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pin>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spdif-out.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spdif-out.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spdif-out.dtso -@@ -0,0 +1,38 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&spdif>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spdif_tx_pin>; -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ sound { -+ compatible = "simple-audio-card"; -+ simple-audio-card,name = "On-board SPDIF"; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&spdif>; -+ }; -+ -+ simple-audio-card,codec { -+ sound-dai = <&spdif_out>; -+ }; -+ }; -+ -+ spdif_out: spdif-out { -+ #sound-dai-cells = <0>; -+ compatible = "linux,spdif-dit"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-add-cs1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-add-cs1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-add-cs1.dtso -@@ -0,0 +1,41 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ spi0_cs1: spi0_cs1 { -+ pins = "PA21"; -+ function = "gpio_out"; -+ output-high; -+ }; -+ -+ spi1_cs1: spi1_cs1 { -+ pins = "PA10"; -+ function = "gpio_out"; -+ output-high; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ pinctrl-names = "default", "default"; -+ pinctrl-1 = <&spi0_cs1>; -+ cs-gpios = <0>, <&pio 0 21 0>; /* PA21 */ -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ pinctrl-names = "default", "default"; -+ pinctrl-1 = <&spi1_cs1>; -+ cs-gpios = <0>, <&pio 0 10 0>; /* PA10 */ -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-jedec-nor.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-jedec-nor.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-jedec-nor.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c68000"; -+ spi1 = "/soc/spi@1c69000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ status = "disabled"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ status = "disabled"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-spidev.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-spi-spidev.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c68000"; -+ spi1 = "/soc/spi@1c69000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial1 = "/soc/serial@1c28400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart2.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial2 = "/soc/serial@1c28800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart3.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-uart3.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial3 = "/soc/serial@1c28c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost0.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost0.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&ehci0>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&ohci0>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&usbphy>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost1.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&ehci1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&ohci1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&usbphy>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost2.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&ehci2>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&ohci2>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&usbphy>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost3.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-usbhost3.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&ehci3>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&ohci3>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&usbphy>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-w1-gpio.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-w1-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-w1-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ w1_pins: w1_pins { -+ pins = "PD14"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ onewire@0 { -+ compatible = "w1-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&w1_pins>; -+ gpios = <&pio 3 14 0>; /* PD14 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c2.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c2 = "/soc/i2c@1c2b400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c2>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c3.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-i2c3.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c3 = "/soc/i2c@1c2b800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c3>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev0.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev0.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/ { -+ compatible = "allwinner,sun8i-r40"; -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c05000"; -+ }; -+ }; -+ fragment@1 { -+ target = <0xffffffff>; -+ __overlay__ { -+ #address-cells = <0x00000001>; -+ #size-cells = <0x00000000>; -+ status = "okay"; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "okay"; -+ reg = <0x00000000>; -+ spi-max-frequency = <0x000f4240>; -+ }; -+ }; -+ }; -+ __fixups__ { -+ spi0 = "/fragment@1:target:0"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev1.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-spi-spidev1.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/ { -+ compatible = "allwinner,sun8i-r40"; -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi1 = "/soc/spi@1c06000"; -+ }; -+ }; -+ fragment@1 { -+ target = <0xffffffff>; -+ __overlay__ { -+ #address-cells = <0x00000001>; -+ #size-cells = <0x00000000>; -+ status = "okay"; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "okay"; -+ reg = <0x00000000>; -+ spi-max-frequency = <0x000f4240>; -+ }; -+ }; -+ }; -+ __fixups__ { -+ spi1 = "/fragment@1:target:0"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart2.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart2.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/ { -+ compatible = "allwinner,sun8i-r40"; -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial2 = "/soc/serial@1c28800"; -+ }; -+ }; -+ fragment@1 { -+ target = <0xffffffff>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <0xffffffff>; -+ status = "okay"; -+ }; -+ }; -+ __fixups__ { -+ uart2 = "/fragment@1:target:0"; -+ uart2_pi_pins = "/fragment@1/__overlay__:pinctrl-0:0"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart4.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart4.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart4.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/ { -+ compatible = "allwinner,sun8i-r40"; -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial4 = "/soc/serial@1c29000"; -+ }; -+ }; -+ fragment@1 { -+ target = <0xffffffff>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <0xffffffff>; -+ status = "okay"; -+ }; -+ }; -+ __fixups__ { -+ uart4 = "/fragment@1:target:0"; -+ uart4_ph_pins = "/fragment@1/__overlay__:pinctrl-0:0"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart5.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart5.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart5.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/ { -+ compatible = "allwinner,sun8i-r40"; -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial5 = "/soc/serial@1c29400"; -+ }; -+ }; -+ fragment@1 { -+ target = <0xffffffff>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <0xffffffff>; -+ status = "okay"; -+ }; -+ }; -+ __fixups__ { -+ uart5 = "/fragment@1:target:0"; -+ uart5_ph_pins = "/fragment@1/__overlay__:pinctrl-0:0"; -+ }; -+}; -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart7.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart7.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-r40-uart7.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/ { -+ compatible = "allwinner,sun8i-r40"; -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial7 = "/soc/serial@1c29c00"; -+ }; -+ }; -+ fragment@1 { -+ target = <0xffffffff>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <0xffffffff>; -+ status = "okay"; -+ }; -+ }; -+ __fixups__ { -+ uart7 = "/fragment@1:target:0"; -+ uart7_pi_pins = "/fragment@1/__overlay__:pinctrl-0:0"; -+ }; -+}; --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm-dts-overlay-sun8i-h3-cpu-clock-add-overclock.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm-dts-overlay-sun8i-h3-cpu-clock-add-overclock.patch deleted file mode 100644 index ad4e5451ec..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm-dts-overlay-sun8i-h3-cpu-clock-add-overclock.patch +++ /dev/null @@ -1,206 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Wed, 2 Feb 2022 21:29:16 +0300 -Subject: arm:dts:overlay: sun8i-h3-cpu-clock add overclock - ---- - arch/arm/boot/dts/allwinner/overlay/Makefile | 3 + - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso | 31 +++++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso | 67 ++++++++++ - arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso | 61 +++++++++ - 4 files changed, 162 insertions(+) - -diff --git a/arch/arm/boot/dts/allwinner/overlay/Makefile b/arch/arm/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm/boot/dts/allwinner/overlay/Makefile -@@ -60,6 +60,9 @@ dtb-$(CONFIG_MACH_SUN7I) += \ - dtb-$(CONFIG_MACH_SUN8I) += \ - sun8i-h3-analog-codec.dtbo \ - sun8i-h3-cir.dtbo \ -+ sun8i-h3-cpu-clock-1.2GHz-1.3v.dtbo \ -+ sun8i-h3-cpu-clock-1.368GHz-1.3v.dtbo \ -+ sun8i-h3-cpu-clock-1.3GHz-1.3v.dtbo \ - sun8i-h3-i2c0.dtbo \ - sun8i-h3-i2c1.dtbo \ - sun8i-h3-i2c2.dtbo \ -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.2GHz-1.3v.dtso -@@ -0,0 +1,31 @@ -+// DT overlay for CPU frequency operating points to up to 1.2GHz at a maximum CPU voltage of 1.3v -+ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&cpu0_opp_table>; -+ -+ __overlay__ { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ // in order to match the existing DT cooling-maps, update the existing OP table in-place -+ // with the new voltages -+ -+ opp-1104000000 { -+ opp-hz = /bits/ 64 <1104000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1200000000 { -+ opp-hz = /bits/ 64 <1200000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+ }; -+}; -+ -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.368GHz-1.3v.dtso -@@ -0,0 +1,67 @@ -+// DT overlay for CPU frequency operating points to 1.3GHz at a maximum CPU voltage of 1.3v -+ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&cpu0_opp_table>; -+ -+ __overlay__ { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ // in order to match the DT cooling-maps, update the existing OP table in-place -+ // with the new voltages -+ -+ opp-1056000000 { -+ opp-hz = /bits/ 64 <1056000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1104000000 { -+ opp-hz = /bits/ 64 <1104000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1152000000 { -+ opp-hz = /bits/ 64 <1152000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1200000000 { -+ opp-hz = /bits/ 64 <1200000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1224000000 { -+ opp-hz = /bits/ 64 <1224000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1248000000 { -+ opp-hz = /bits/ 64 <1248000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1296000000 { -+ opp-hz = /bits/ 64 <1296000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1368000000 { -+ opp-hz = /bits/ 64 <1368000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+ }; -+}; -+ -diff --git a/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm/boot/dts/allwinner/overlay/sun8i-h3-cpu-clock-1.3GHz-1.3v.dtso -@@ -0,0 +1,61 @@ -+// DT overlay for CPU frequency operating points to 1.3GHz at a maximum CPU voltage of 1.3v -+ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&cpu0_opp_table>; -+ -+ __overlay__ { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ // in order to match the DT cooling-maps, update the existing OP table in-place -+ // with the new voltages -+ -+ opp-1056000000 { -+ opp-hz = /bits/ 64 <1056000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1104000000 { -+ opp-hz = /bits/ 64 <1104000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1152000000 { -+ opp-hz = /bits/ 64 <1152000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1200000000 { -+ opp-hz = /bits/ 64 <1200000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1224000000 { -+ opp-hz = /bits/ 64 <1224000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1248000000 { -+ opp-hz = /bits/ 64 <1248000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1296000000 { -+ opp-hz = /bits/ 64 <1296000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+ }; -+}; -+ --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-allwinner-overlay-Add-Overlays-for-sunxi64.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-allwinner-overlay-Add-Overlays-for-sunxi64.patch deleted file mode 100644 index 0b94b19583..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-allwinner-overlay-Add-Overlays-for-sunxi64.patch +++ /dev/null @@ -1,2412 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Wed, 2 Feb 2022 13:02:10 +0300 -Subject: arm64:dts:allwinner:overlay: Add Overlays for sunxi64 - ---- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 58 +++ - arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays | 196 ++++++++ - arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays | 250 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-fixup.scr-cmd | 95 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c0.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c1.dtso | 22 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pps-gpio.dtso | 29 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-add-cs1.dtso | 41 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-jedec-nor.dtso | 34 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-spidev.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart1.dtso | 22 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart2.dtso | 37 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart3.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart4.dtso | 37 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-w1-gpio.dtso | 29 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-analog-codec.dtso | 17 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cir.dtso | 15 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-fixup.scr-cmd | 110 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c0.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c1.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c2.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pps-gpio.dtso | 29 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pwm.dtso | 39 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spdif-out.dtso | 38 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-add-cs1.dtso | 41 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-jedec-nor.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-spidev.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart1.dtso | 22 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart2.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart3.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost0.dtso | 27 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost1.dtso | 27 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost2.dtso | 27 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost3.dtso | 27 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-w1-gpio.dtso | 29 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd | 110 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c0.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c1.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c2.dtso | 20 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-ruart.dtso | 13 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-add-cs1.dtso | 41 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-jedec-nor.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev.dtso | 42 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev1.dtso | 30 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart1.dtso | 22 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart2.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart3.dtso | 32 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-w1-gpio.dtso | 29 ++ - 48 files changed, 2065 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -0,0 +1,58 @@ -+# SPDX-License-Identifier: GPL-2.0 -+dtb-$(CONFIG_ARCH_SUNXI) += \ -+ sun50i-a64-i2c0.dtbo \ -+ sun50i-a64-i2c1.dtbo \ -+ sun50i-a64-pps-gpio.dtbo \ -+ sun50i-a64-spi-add-cs1.dtbo \ -+ sun50i-a64-spi-jedec-nor.dtbo \ -+ sun50i-a64-spi-spidev.dtbo \ -+ sun50i-a64-uart1.dtbo \ -+ sun50i-a64-uart2.dtbo \ -+ sun50i-a64-uart3.dtbo \ -+ sun50i-a64-uart4.dtbo \ -+ sun50i-a64-w1-gpio.dtbo \ -+ sun50i-h5-analog-codec.dtbo \ -+ sun50i-h5-cir.dtbo \ -+ sun50i-h5-i2c0.dtbo \ -+ sun50i-h5-i2c1.dtbo \ -+ sun50i-h5-i2c2.dtbo \ -+ sun50i-h5-pps-gpio.dtbo \ -+ sun50i-h5-pwm.dtbo \ -+ sun50i-h5-spdif-out.dtbo \ -+ sun50i-h5-spi-add-cs1.dtbo \ -+ sun50i-h5-spi-jedec-nor.dtbo \ -+ sun50i-h5-spi-spidev.dtbo \ -+ sun50i-h5-uart1.dtbo \ -+ sun50i-h5-uart2.dtbo \ -+ sun50i-h5-uart3.dtbo \ -+ sun50i-h5-usbhost0.dtbo \ -+ sun50i-h5-usbhost1.dtbo \ -+ sun50i-h5-usbhost2.dtbo \ -+ sun50i-h5-usbhost3.dtbo \ -+ sun50i-h5-w1-gpio.dtbo \ -+ sun50i-h6-i2c0.dtbo \ -+ sun50i-h6-i2c1.dtbo \ -+ sun50i-h6-i2c2.dtbo \ -+ sun50i-h6-ruart.dtbo \ -+ sun50i-h6-spi-add-cs1.dtbo \ -+ sun50i-h6-spi-jedec-nor.dtbo \ -+ sun50i-h6-spi-spidev.dtbo \ -+ sun50i-h6-spi-spidev1.dtbo \ -+ sun50i-h6-uart1.dtbo \ -+ sun50i-h6-uart2.dtbo \ -+ sun50i-h6-uart3.dtbo \ -+ sun50i-h6-w1-gpio.dtbo -+ -+scr-$(CONFIG_ARCH_SUNXI) += \ -+ sun50i-a64-fixup.scr \ -+ sun50i-h5-fixup.scr \ -+ sun50i-h6-fixup.scr -+ -+dtbotxt-$(CONFIG_ARCH_SUNXI) += \ -+ README.sun50i-a64-overlays \ -+ README.sun50i-h5-overlays -+ -+targets += $(dtb-y) $(scr-y) $(dtbotxt-y) -+ -+always := $(dtb-y) $(scr-y) $(dtbotxt-y) -+clean-files := *.dtbo *.scr -diff --git a/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays -@@ -0,0 +1,196 @@ -+This document describes overlays provided in the kernel packages -+For generic Armbian overlays documentation please see -+https://docs.armbian.com/Hardware_Allwinner_overlays/ -+ -+### Platform: -+ -+sun50i-a64 (Allwinner A64) -+ -+### Platform details: -+ -+Supported pin banks: PB, PC, PD, PH -+ -+Both SPI controllers have only one hardware CS pin exposed, -+adding fixed software (GPIO) chip selects is possible with a separate overlay -+ -+I2C controller 2 (PE14, PE15) pins are used for non-I2C CSI functions or are not available -+on supported boards, so this controller is not supported in provided overlays -+ -+### Provided overlays: -+ -+- i2c0 -+- i2c1 -+- pps-gpio -+- spi-add-cs1 -+- spi-jedec-nor -+- spi-spidev -+- uart1 -+- uart2 -+- uart3 -+- uart4 -+- w1-gpio -+ -+### Overlay details: -+ -+### i2c0 -+ -+Activates TWI/I2C bus 0 -+ -+I2C0 pins (SCL, SDA): PH0, PH1 -+ -+### i2c1 -+ -+Activates TWI/I2C bus 1 -+ -+I2C1 pins (SCL, SDA): PH2, PH3 -+ -+### pps-gpio -+ -+Activates pulse-per-second GPIO client -+ -+Parameters: -+ -+param_pps_pin (pin) -+ Pin PPS source is connected to -+ Optional -+ Default: PD4 -+ -+param_pps_falling_edge (bool) -+ Assert by falling edge -+ Optional -+ Default: 0 -+ When set (to 1), assert is indicated by a falling edge -+ (instead of by a rising edge) -+ -+### spi-add-cs1 -+ -+Adds support for using SPI chip select 1 with GPIO for both SPI controllers -+Respective GPIO will be claimed only if controller is enabled by another overlay -+This overlay is required for using chip select 1 with other SPI overlays -+ -+SPI 0 pins (CS1): PB6 -+SPI 1 pins (CS1): PD6 -+ -+### spi-jedec-nor -+ -+Activates MTD support for JEDEC compatible SPI NOR flash chips on SPI bus -+supported by the kernel SPI NOR driver -+ -+SPI 0 pins (MOSI, MISO, SCK, CS): PC0, PC1, PC2, PC3 -+SPI 1 pins (MOSI, MISO, SCK, CS): PD2, PD3, PD1, PD0 -+ -+Parameters: -+ -+param_spinor_spi_bus (int) -+ SPI bus to activate SPI NOR flash support on -+ Required -+ Supported values: 0, 1 -+ -+param_spinor_spi_cs (int) -+ SPI chip select number -+ Optional -+ Default: 0 -+ Supported values: 0, 1 -+ Using chip select 1 requires using "spi-add-cs1" overlay -+ -+param_spinor_max_freq (int) -+ Maximum SPI frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### spi-spidev -+ -+Activates SPIdev device node (/dev/spidevX.Y) for userspace SPI access, -+where X is the bus number and Y is the CS number -+ -+SPI 0 pins (MOSI, MISO, SCK, CS): PC0, PC1, PC2, PC3 -+SPI 1 pins (MOSI, MISO, SCK, CS): PD2, PD3, PD1, PD0 -+ -+Parameters: -+ -+param_spidev_spi_bus (int) -+ SPI bus to activate SPIdev support on -+ Required -+ Supported values: 0, 1 -+ -+param_spidev_spi_cs (int) -+ SPI chip select number -+ Optional -+ Default: 0 -+ Supported values: 0, 1 -+ Using chip select 1 requires using "spi-add-cs1" overlay -+ -+param_spidev_max_freq (int) -+ Maximum SPIdev frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### uart1 -+ -+Activates serial port 1 (/dev/ttyS1) -+ -+UART 1 pins (TX, RX, RTS, CTS): PG6, PG7, PG8, PG9 -+ -+Parameters: -+ -+param_uart1_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable -+ -+### uart2 -+ -+Activates serial port 2 (/dev/ttyS2) -+ -+UART 2 pins (TX, RX, RTS, CTS): PB0, PB1, PB2, PB3 -+ -+Parameters: -+ -+param_uart2_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### uart3 -+ -+Activates serial port 3 (/dev/ttyS3) -+ -+UART 3 pins (TX, RX): PD0, PD1 -+ -+### uart4 -+ -+Activates serial port 4 (/dev/ttyS4) -+ -+UART 4 pins (TX, RX, RTS, CTS): PD2, PD3, PD4, PD5 -+ -+Parameters: -+ -+param_uart2_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### w1-gpio -+ -+Activates 1-Wire GPIO master -+Requires external pull-up resistor on data pin -+ -+Parameters: -+ -+param_w1_pin (pin) -+ Data pin for 1-Wire master -+ Optional -+ Default: PD4 -+ -+param_w1_pin_int_pullup (bool) -+ Enable internal pull-up for the data pin -+ Optional -+ Default: 0 -+ Set to 1 to enable the pull-up -+ This option should not be used with multiple devices, parasite power setup -+ or long wires - please use external pull-up resistor instead -diff --git a/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-h5-overlays -@@ -0,0 +1,250 @@ -+This document describes overlays provided in the kernel packages -+For generic Armbian overlays documentation please see -+https://docs.armbian.com/User-Guide_Armbian_overlays/ -+ -+### Platform: -+ -+sun50i-h5 (Allwinner H5) -+ -+### Platform details: -+ -+Supported pin banks: PA, PC, PD, PG -+ -+Both SPI controllers have only one hardware CS pin exposed, -+adding fixed software (GPIO) chip selects is possible with a separate overlay -+ -+### Provided overlays: -+ -+- analog-codec -+- cir -+- i2c0 -+- i2c1 -+- i2c2 -+- pps-gpio -+- pwm -+- spdif-out -+- spi-add-cs1 -+- spi-jedec-nor -+- spi-spidev -+- uart1 -+- uart2 -+- uart3 -+- usbhost0 -+- usbhost1 -+- usbhost2 -+- usbhost3 -+- w1-gpio -+ -+### Overlay details: -+ -+### analog-codec -+ -+Activates SoC analog codec driver that provides Line Out and Mic In -+functionality -+ -+### cir -+ -+Activates CIR (Infrared remote) receiver -+ -+CIR pin: PL11 -+ -+### i2c0 -+ -+Activates TWI/I2C bus 0 -+ -+I2C0 pins (SCL, SDA): PA11, PA12 -+ -+### i2c1 -+ -+Activates TWI/I2C bus 1 -+ -+I2C1 pins (SCL, SDA): PA18, PA19 -+ -+### i2c2 -+ -+Activates TWI/I2C bus 2 -+ -+I2C2 pins (SCL, SDA): PE12, PE13 -+ -+On most board this bus is wired to Camera (CSI) socket -+ -+### pps-gpio -+ -+Activates pulse-per-second GPIO client -+ -+Parameters: -+ -+param_pps_pin (pin) -+ Pin PPS source is connected to -+ Optional -+ Default: PD14 -+ -+param_pps_falling_edge (bool) -+ Assert by falling edge -+ Optional -+ Default: 0 -+ When set (to 1), assert is indicated by a falling edge -+ (instead of by a rising edge) -+ -+### pwm -+ -+Activates hardware PWM controller -+ -+PWM pin: PA5 -+ -+Pin PA5 is used as UART0 RX by default, so if this overlay is activated, -+UART0 and kernel console on ttyS0 will be disabled -+ -+### spdif-out -+ -+Activates SPDIF/Toslink audio output -+ -+SPDIF pin: PA17 -+ -+### spi-add-cs1 -+ -+Adds support for using SPI chip select 1 with GPIO for both SPI controllers -+Respective GPIO will be claimed only if controller is enabled by another -+overlay -+This overlay is required for using chip select 1 with other SPI overlays -+Due to the u-boot limitations CS1 pin can't be customized by a parameter, but -+it can be changed by using an edited copy of this overlay -+A total of 4 chip selects can be used with custom overlays (1 HW + 3 GPIO) -+ -+SPI 0 pins (CS1): PA21 -+SPI 1 pins (CS1): PA10 -+ -+### spi-jedec-nor -+ -+Activates MTD support for JEDEC compatible SPI NOR flash chips on SPI bus -+supported by the kernel SPI NOR driver -+ -+SPI 0 pins (MOSI, MISO, SCK, CS): PC0, PC1, PC2, PC3 -+SPI 1 pins (MOSI, MISO, SCK, CS): PA15, PA16, PA14, PA13 -+ -+Parameters: -+ -+param_spinor_spi_bus (int) -+ SPI bus to activate SPI NOR flash support on -+ Required -+ Supported values: 0, 1 -+ -+param_spinor_spi_cs (int) -+ SPI chip select number -+ Optional -+ Default: 0 -+ Supported values: 0, 1 -+ Using chip select 1 requires using "spi-add-cs1" overlay -+ -+param_spinor_max_freq (int) -+ Maximum SPI frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### spi-spidev -+ -+Activates SPIdev device node (/dev/spidevX.Y) for userspace SPI access, -+where X is the bus number and Y is the CS number -+ -+SPI 0 pins (MOSI, MISO, SCK, CS): PC0, PC1, PC2, PC3 -+SPI 1 pins (MOSI, MISO, SCK, CS): PA15, PA16, PA14, PA13 -+ -+Parameters: -+ -+param_spidev_spi_bus (int) -+ SPI bus to activate SPIdev support on -+ Required -+ Supported values: 0, 1 -+ -+param_spidev_spi_cs (int) -+ SPI chip select number -+ Optional -+ Default: 0 -+ Supported values: 0, 1 -+ Using chip select 1 requires using "spi-add-cs1" overlay -+ -+param_spidev_max_freq (int) -+ Maximum SPIdev frequency -+ Optional -+ Default: 1000000 -+ Range: 3000 - 100000000 -+ -+### uart1 -+ -+Activates serial port 1 (/dev/ttyS1) -+ -+UART 1 pins (TX, RX, RTS, CTS): PG6, PG7, PG8, PG9 -+ -+Parameters: -+ -+param_uart1_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable -+ -+### uart2 -+ -+Activates serial port 2 (/dev/ttyS2) -+ -+UART 2 pins (TX, RX, RTS, CTS): PA0, PA1, PA2, PA3 -+ -+Parameters: -+ -+param_uart2_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### uart3 -+ -+Activates serial port 3 (/dev/ttyS3) -+ -+UART 3 pins (TX, RX, RTS, CTS): PA13, PA14, PA15, PA16 -+ -+Parameters: -+ -+param_uart3_rtscts (bool) -+ Enable RTS and CTS pins -+ Optional -+ Default: 0 -+ Set to 1 to enable CTS and RTS pins -+ -+### usbhost0 -+ -+Activates USB host controller 0 -+ -+### usbhost1 -+ -+Activates USB host controller 1 -+ -+### usbhost2 -+ -+Activates USB host controller 2 -+ -+### usbhost3 -+ -+Activates USB host controller 3 -+ -+### w1-gpio -+ -+Activates 1-Wire GPIO master -+Requires an external pull-up resistor on the data pin -+or enabling the internal pull-up -+ -+Parameters: -+ -+param_w1_pin (pin) -+ Data pin for 1-Wire master -+ Optional -+ Default: PD14 -+ -+param_w1_pin_int_pullup (bool) -+ Enable internal pull-up for the data pin -+ Optional -+ Default: 0 -+ Set to 1 to enable the pull-up -+ This option should not be used with multiple devices, parasite power setup -+ or long wires - please use external pull-up resistor instead -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-fixup.scr-cmd b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-fixup.scr-cmd -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-fixup.scr-cmd -@@ -0,0 +1,95 @@ -+# overlays fixup script -+# implements (or rather substitutes) overlay arguments functionality -+# using u-boot scripting, environment variables and "fdt" command -+ -+# setexpr test_var ${tmp_bank} - A -+# works only for hex numbers (A-F) -+ -+setenv decompose_pin 'setexpr tmp_bank sub "P(B|C|D|H)\\d+" "\\1"; -+setexpr tmp_pin sub "P\\S(\\d+)" "\\1"; -+test "${tmp_bank}" = "B" && setenv tmp_bank 1; -+test "${tmp_bank}" = "C" && setenv tmp_bank 2; -+test "${tmp_bank}" = "D" && setenv tmp_bank 3; -+test "${tmp_bank}" = "H" && setenv tmp_bank 7' -+ -+if test -n "${param_spinor_spi_bus}"; then -+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c68000" -+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c69000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spiflash@0 status "okay" -+ if test -n "${param_spinor_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spiflash@0 spi-max-frequency "<${param_spinor_max_freq}>" -+ fi -+ if test "${param_spinor_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spiflash@0 reg "<1>"; -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_spidev_spi_bus}"; then -+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c68000" -+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c69000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spidev status "okay" -+ if test -n "${param_spidev_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" -+ fi -+ if test "${param_spidev_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spidev reg "<1>"; -+ fi -+fi -+ -+if test -n "${param_pps_pin}"; then -+ setenv tmp_bank "${param_pps_pin}" -+ setenv tmp_pin "${param_pps_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/pps_pins pins "${param_pps_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /pps@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_pps_falling_edge}" = "1"; then -+ fdt set /pps@0 assert-falling-edge -+fi -+ -+if test -n "${param_w1_pin}"; then -+ setenv tmp_bank "${param_w1_pin}" -+ setenv tmp_pin "${param_w1_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/w1_pins pins "${param_w1_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /onewire@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_w1_pin_int_pullup}" = "1"; then -+ fdt set /soc/pinctrl@1c20800/w1_pins bias-pull-up -+fi -+ -+if test "${param_uart1_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart1-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart1-rts-cts-pins phandle -+ fdt set /soc/serial@1c28400 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28400 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28400 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart2_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart2-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart2-rts-cts-pins phandle -+ fdt set /soc/serial@1c28800 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28800 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28800 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart4_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart4-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart4-rts-cts-pins phandle -+ fdt set /soc/serial@1c29000 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c29000 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c29000 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c0.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c0 = "/soc/i2c@1c2ac00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ i2c0_pins: i2c0_pins { -+ pins = "PH0", "PH1"; -+ function = "i2c0"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&i2c0>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-i2c1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c1 = "/soc/i2c@1c2b000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pps-gpio.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pps-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pps-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ pps_pins: pps_pins { -+ pins = "PD4"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ pps@0 { -+ compatible = "pps-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pps_pins>; -+ gpios = <&pio 3 4 0>; /* PD4 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-add-cs1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-add-cs1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-add-cs1.dtso -@@ -0,0 +1,41 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ spi0_cs1: spi0_cs1 { -+ pins = "PB6"; -+ function = "gpio_out"; -+ output-high; -+ }; -+ -+ spi1_cs1: spi1_cs1 { -+ pins = "PD6"; -+ function = "gpio_out"; -+ output-high; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ pinctrl-names = "default", "default"; -+ pinctrl-1 = <&spi0_cs1>; -+ cs-gpios = <0>, <&pio 1 6 0>; /* PB6 */ -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ pinctrl-names = "default", "default"; -+ pinctrl-1 = <&spi1_cs1>; -+ cs-gpios = <0>, <&pio 3 6 0>; /* PD6 */ -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-jedec-nor.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-jedec-nor.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-jedec-nor.dtso -@@ -0,0 +1,34 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ status = "disabled"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ status = "disabled"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-spidev.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-spi-spidev.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c68000"; -+ spi1 = "/soc/spi@1c69000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial1 = "/soc/serial@1c28800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart2.dtso -@@ -0,0 +1,37 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial2 = "/soc/serial@1c28800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart2_pins: uart2-pins { -+ pins = "PB0", "PB1"; -+ function = "uart2"; -+ }; -+ -+ uart2_rts_cts_pins: uart2-rts-cts-pins { -+ pins = "PB2", "PB3"; -+ function = "uart2"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart3.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart3.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial3 = "/soc/serial@1c28c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart3_pins: uart3-pins { -+ pins = "PD0", "PD1"; -+ function = "uart3"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart4.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart4.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-uart4.dtso -@@ -0,0 +1,37 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial4 = "/soc/serial@1c29000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart4_pins: uart4-pins { -+ pins = "PD2", "PD3"; -+ function = "uart4"; -+ }; -+ -+ uart4_rts_cts_pins: uart4-rts-cts-pins { -+ pins = "PD4", "PD5"; -+ function = "uart4"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart4>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart4_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-w1-gpio.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-w1-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-w1-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ w1_pins: w1_pins { -+ pins = "PD4"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ onewire@0 { -+ compatible = "w1-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&w1_pins>; -+ gpios = <&pio 3 4 0>; /* PD4 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-analog-codec.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-analog-codec.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-analog-codec.dtso -@@ -0,0 +1,17 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&codec>; -+ __overlay__ { -+ allwinner,audio-routing = -+ "Line Out", "LINEOUT", -+ "MIC1", "Mic", -+ "Mic", "MBIAS"; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cir.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cir.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cir.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&ir>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&r_ir_rx_pin>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-fixup.scr-cmd b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-fixup.scr-cmd -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-fixup.scr-cmd -@@ -0,0 +1,110 @@ -+# overlays fixup script -+# implements (or rather substitutes) overlay arguments functionality -+# using u-boot scripting, environment variables and "fdt" command -+ -+# setexpr test_var ${tmp_bank} - A -+# works only for hex numbers (A-F) -+ -+setenv decompose_pin 'setexpr tmp_bank sub "P(A|C|D|G)\\d+" "\\1"; -+setexpr tmp_pin sub "P\\S(\\d+)" "\\1"; -+test "${tmp_bank}" = "A" && setenv tmp_bank 0; -+test "${tmp_bank}" = "C" && setenv tmp_bank 2; -+test "${tmp_bank}" = "D" && setenv tmp_bank 3; -+test "${tmp_bank}" = "G" && setenv tmp_bank 6' -+ -+if test -n "${param_spinor_spi_bus}"; then -+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c68000" -+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c69000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spiflash@0 status "okay" -+ if test -n "${param_spinor_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spiflash@0 spi-max-frequency "<${param_spinor_max_freq}>" -+ fi -+ if test "${param_spinor_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spiflash@0 reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_spidev_spi_bus}"; then -+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@1c68000" -+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@1c69000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spidev status "okay" -+ if test -n "${param_spidev_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" -+ fi -+ if test "${param_spidev_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spidev reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_pps_pin}"; then -+ setenv tmp_bank "${param_pps_pin}" -+ setenv tmp_pin "${param_pps_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/pps_pins pins "${param_pps_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /pps@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_pps_falling_edge}" = "1"; then -+ fdt set /pps@0 assert-falling-edge -+fi -+ -+for f in ${overlays}; do -+ if test "${f}" = "pwm"; then -+ setenv bootargs_new "" -+ for arg in ${bootargs}; do -+ if test "${arg}" = "console=ttyS0,115200"; then -+ echo "Warning: Disabling ttyS0 console due to enabled PWM overlay" -+ else -+ setenv bootargs_new "${bootargs_new} ${arg}" -+ fi -+ done -+ setenv bootargs "${bootargs_new}" -+ fi -+done -+ -+if test -n "${param_w1_pin}"; then -+ setenv tmp_bank "${param_w1_pin}" -+ setenv tmp_pin "${param_w1_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@1c20800/w1_pins pins "${param_w1_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@1c20800 phandle -+ fdt set /onewire@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_w1_pin_int_pullup}" = "1"; then -+ fdt set /soc/pinctrl@1c20800/w1_pins bias-pull-up -+fi -+ -+if test "${param_uart1_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart1-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart1-rts-cts-pins phandle -+ fdt set /soc/serial@1c28400 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28400 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28400 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart2_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart2-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart2-rts-cts-pins phandle -+ fdt set /soc/serial@1c28800 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28800 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28800 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@1c20800/uart3-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@1c20800/uart3-rts-cts-pins phandle -+ fdt set /soc/serial@1c28c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@1c28c00 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@1c28c00 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c0.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c0 = "/soc/i2c@1c2ac00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c0>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c1.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c1 = "/soc/i2c@1c2b000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-i2c2.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c2 = "/soc/i2c@1c2b400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c2>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pps-gpio.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pps-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pps-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ pps_pins: pps_pins { -+ pins = "PD14"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ pps@0 { -+ compatible = "pps-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pps_pins>; -+ gpios = <&pio 3 14 0>; /* PD14 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pwm.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pwm.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-pwm.dtso -@@ -0,0 +1,39 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/chosen"; -+ __overlay__ { -+ /delete-property/ stdout-path; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart0>; -+ __overlay__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&pio>; -+ __overlay__ { -+ pwm0_pin: pwm0 { -+ pins = "PA5"; -+ function = "pwm0"; -+ }; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&pwm>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pin>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spdif-out.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spdif-out.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spdif-out.dtso -@@ -0,0 +1,38 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&spdif>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spdif_tx_pin>; -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ sound { -+ compatible = "simple-audio-card"; -+ simple-audio-card,name = "On-board SPDIF"; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&spdif>; -+ }; -+ -+ simple-audio-card,codec { -+ sound-dai = <&spdif_out>; -+ }; -+ }; -+ -+ spdif_out: spdif-out { -+ #sound-dai-cells = <0>; -+ compatible = "linux,spdif-dit"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-add-cs1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-add-cs1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-add-cs1.dtso -@@ -0,0 +1,41 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ spi0_cs1: spi0_cs1 { -+ pins = "PA21"; -+ function = "gpio_out"; -+ output-high; -+ }; -+ -+ spi1_cs1: spi1_cs1 { -+ pins = "PA10"; -+ function = "gpio_out"; -+ output-high; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ pinctrl-names = "default", "default"; -+ pinctrl-1 = <&spi0_cs1>; -+ cs-gpios = <0>, <&pio 0 21 0>; /* PA21 */ -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ pinctrl-names = "default", "default"; -+ pinctrl-1 = <&spi1_cs1>; -+ cs-gpios = <0>, <&pio 0 10 0>; /* PA10 */ -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-jedec-nor.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-jedec-nor.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-jedec-nor.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c68000"; -+ spi1 = "/soc/spi@1c69000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ status = "disabled"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ status = "disabled"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-spidev.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-spi-spidev.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@1c68000"; -+ spi1 = "/soc/spi@1c69000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial1 = "/soc/serial@1c28400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart2.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial2 = "/soc/serial@1c28800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart2_rts_cts: uart2-rts-cts-pins { -+ pins = "PA2", "PA3"; -+ function = "uart2"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart3.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-uart3.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial3 = "/soc/serial@1c28c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart3_rts_cts: uart3-rts-cts-pins { -+ pins = "PA15", "PA16"; -+ function = "uart3"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost0.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&ehci0>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&ohci0>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&usbphy>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost1.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&ehci1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&ohci1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&usbphy>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost2.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&ehci2>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&ohci2>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&usbphy>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost3.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-usbhost3.dtso -@@ -0,0 +1,27 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&ehci3>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&ohci3>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&usbphy>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-w1-gpio.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-w1-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-w1-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ w1_pins: w1_pins { -+ pins = "PD14"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ onewire@0 { -+ compatible = "w1-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&w1_pins>; -+ gpios = <&pio 3 14 0>; /* PD14 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-fixup.scr-cmd -@@ -0,0 +1,110 @@ -+# overlays fixup script -+# implements (or rather substitutes) overlay arguments functionality -+# using u-boot scripting, environment variables and "fdt" command -+ -+# setexpr test_var ${tmp_bank} - A -+# works only for hex numbers (A-F) -+ -+setenv decompose_pin 'setexpr tmp_bank sub "P(A|C|D|G)\\d+" "\\1"; -+setexpr tmp_pin sub "P\\S(\\d+)" "\\1"; -+test "${tmp_bank}" = "A" && setenv tmp_bank 0; -+test "${tmp_bank}" = "C" && setenv tmp_bank 2; -+test "${tmp_bank}" = "D" && setenv tmp_bank 3; -+test "${tmp_bank}" = "G" && setenv tmp_bank 6' -+ -+if test -n "${param_spinor_spi_bus}"; then -+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@5010000" -+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@5011000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spiflash@0 status "okay" -+ if test -n "${param_spinor_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spiflash@0 spi-max-frequency "<${param_spinor_max_freq}>" -+ fi -+ if test "${param_spinor_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spiflash@0 reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_spidev_spi_bus}"; then -+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@5010000" -+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@5011000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spidev status "okay" -+ if test -n "${param_spidev_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" -+ fi -+ if test "${param_spidev_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spidev reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_pps_pin}"; then -+ setenv tmp_bank "${param_pps_pin}" -+ setenv tmp_pin "${param_pps_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@300b000/pps_pins pins "${param_pps_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@300b000 phandle -+ fdt set /pps@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_pps_falling_edge}" = "1"; then -+ fdt set /pps@0 assert-falling-edge -+fi -+ -+for f in ${overlays}; do -+ if test "${f}" = "pwm"; then -+ setenv bootargs_new "" -+ for arg in ${bootargs}; do -+ if test "${arg}" = "console=ttyS0,115200"; then -+ echo "Warning: Disabling ttyS0 console due to enabled PWM overlay" -+ else -+ setenv bootargs_new "${bootargs_new} ${arg}" -+ fi -+ done -+ setenv bootargs "${bootargs_new}" -+ fi -+done -+ -+if test -n "${param_w1_pin}"; then -+ setenv tmp_bank "${param_w1_pin}" -+ setenv tmp_pin "${param_w1_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@300b000/w1_pins pins "${param_w1_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@300b000 phandle -+ fdt set /onewire@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_w1_pin_int_pullup}" = "1"; then -+ fdt set /soc/pinctrl@300b000/w1_pins bias-pull-up -+fi -+ -+if test "${param_uart1_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart1-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart1-rts-cts-pins phandle -+ fdt set /soc/serial@5000400 pinctrl-names "default" "default" -+ fdt set /soc/serial@5000400 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@5000400 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart2_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart2-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart2-rts-cts-pins phandle -+ fdt set /soc/serial@5000800 pinctrl-names "default" "default" -+ fdt set /soc/serial@5000800 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@5000800 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart3-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart3-rts-cts-pins phandle -+ fdt set /soc/serial@5000c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@5000c00 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@5000c00 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c0.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c0 = "/soc/i2c@5002000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c0>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c1.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c1 = "/soc/i2c@5002400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-i2c2.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ i2c2 = "/soc/i2c@5002800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c2>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-ruart.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-ruart.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-ruart.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target = <&r_uart>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-add-cs1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-add-cs1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-add-cs1.dtso -@@ -0,0 +1,41 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ spi0_cs1: spi0_cs1 { -+ pins = "PA10"; -+ function = "gpio_out"; -+ output-high; -+ }; -+ -+ spi1_cs1: spi1_cs1 { -+ pins = "PA21"; -+ function = "gpio_out"; -+ output-high; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ pinctrl-names = "default", "default"; -+ pinctrl-1 = <&spi0_cs1>; -+ cs-gpios = <0>, <&pio 0 10 0>; /* PA10 */ -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ pinctrl-names = "default", "default"; -+ pinctrl-1 = <&spi1_cs1>; -+ cs-gpios = <0>, <&pio 0 21 0>; /* PA21 */ -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-jedec-nor.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-jedec-nor.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-jedec-nor.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@5010000"; -+ spi1 = "/soc/spi@5011000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ status = "disabled"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spiflash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ status = "disabled"; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3-spi"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@5010000"; -+ spi1 = "/soc/spi@5011000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-spi-spidev1.dtso -@@ -0,0 +1,30 @@ -+// Enable the spidev interface -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun8i-h3-spi"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ /* Path to the SPI controller nodes */ -+ spi1 = "/soc/spi@5011000"; -+ }; -+ }; -+ fragment@1 { -+ target = <&spi1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi1_pins>; -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "armbian,spi-dev"; -+ reg = <0x0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart1.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial1 = "/soc/serial@5000400"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart1>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart2.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial2 = "/soc/serial@5000800"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart2_rts_cts: uart2-rts-cts-pins { -+ pins = "PD21", "PD22"; -+ function = "uart2"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart3.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-uart3.dtso -@@ -0,0 +1,32 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ serial3 = "/soc/serial@5000c00"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pio>; -+ __overlay__ { -+ uart3_rts_cts: uart3-rts-cts-pins { -+ pins = "PD25", "PD26"; -+ function = "uart3"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-w1-gpio.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-w1-gpio.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h6-w1-gpio.dtso -@@ -0,0 +1,29 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h6"; -+ -+ fragment@0 { -+ target = <&pio>; -+ __overlay__ { -+ w1_pins: w1_pins { -+ pins = "PC9"; -+ function = "gpio_in"; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target-path = "/"; -+ __overlay__ { -+ onewire@0 { -+ compatible = "w1-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&w1_pins>; -+ gpios = <&pio 2 9 0>; /* PC9 */ -+ status = "okay"; -+ }; -+ }; -+ }; -+}; --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-h616-8-Add-overlays-i2c-pwm-uart.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-h616-8-Add-overlays-i2c-pwm-uart.patch deleted file mode 100644 index c001c1fe36..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-h616-8-Add-overlays-i2c-pwm-uart.patch +++ /dev/null @@ -1,629 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Thu, 10 Apr 2025 21:46:22 +0300 -Subject: arm64: dts: h616(8): Add overlays i2c, pwm, uart - -Signed-off-by: The-going <48602507+The-going@users.noreply.github.com> -Signed-off-by: Exodus ---- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 24 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-ph.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3-pg.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3-ph.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4-pg.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4-ph.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm1-ph3.dtso | 22 +++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm1-pi11.dtso | 22 +++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm2-ph2.dtso | 22 +++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm2-pi12.dtso | 22 +++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm3-ph0.dtso | 22 +++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm3-pi13.dtso | 22 +++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm4-ph1.dtso | 20 ++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm4-pi14.dtso | 20 ++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pg-rts-cts.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pg.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-ph-rts-cts.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-ph.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pi-rts-cts.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pi.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart3-pi-rts-cts.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart3-pi.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart4-pi-rts-cts.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart4-pi.dtso | 15 ++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dtso | 15 ++++++ - 25 files changed, 436 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -48,6 +48,30 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ - sun50i-h6-uart2.dtbo \ - sun50i-h6-uart3.dtbo \ - sun50i-h6-w1-gpio.dtbo \ -+ sun50i-h616-i2c2-ph.dtbo \ -+ sun50i-h616-i2c3-pg.dtbo \ -+ sun50i-h616-i2c3-ph.dtbo \ -+ sun50i-h616-i2c4-pg.dtbo \ -+ sun50i-h616-i2c4-ph.dtbo \ -+ sun50i-h616-pwm1-ph3.dtbo \ -+ sun50i-h616-pwm1-pi11.dtbo \ -+ sun50i-h616-pwm2-ph2.dtbo \ -+ sun50i-h616-pwm2-pi12.dtbo \ -+ sun50i-h616-pwm3-ph0.dtbo \ -+ sun50i-h616-pwm3-pi13.dtbo \ -+ sun50i-h616-pwm4-ph1.dtbo \ -+ sun50i-h616-pwm4-pi14.dtbo \ -+ sun50i-h616-uart2-pg.dtbo \ -+ sun50i-h616-uart2-pg-rts-cts.dtbo \ -+ sun50i-h616-uart2-ph.dtbo \ -+ sun50i-h616-uart2-ph-rts-cts.dtbo \ -+ sun50i-h616-uart2-pi.dtbo \ -+ sun50i-h616-uart2-pi-rts-cts.dtbo \ -+ sun50i-h616-uart3-pi.dtbo \ -+ sun50i-h616-uart3-pi-rts-cts.dtbo \ -+ sun50i-h616-uart4-pi.dtbo \ -+ sun50i-h616-uart4-pi-rts-cts.dtbo \ -+ sun50i-h616-uart5.dtbo \ - sun50i-h616-spi-spidev.dtbo \ - sun50i-h616-spidev0_0.dtbo \ - sun50i-h616-spidev1_0.dtbo \ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-ph.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-ph.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c2-ph.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_ph_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3-pg.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3-pg.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3-pg.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c3_pg_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3-ph.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3-ph.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3-ph.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c3_ph_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4-pg.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4-pg.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4-pg.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c4>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c4_pg_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4-ph.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4-ph.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4-ph.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&i2c4>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c4_ph_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm1-ph3.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm1-ph3.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm1-ph3.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm1>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm1_ph_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm1-pi11.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm1-pi11.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm1-pi11.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm1>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm1_pi_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm2-ph2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm2-ph2.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm2-ph2.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm2>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm2_ph_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm2-pi12.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm2-pi12.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm2-pi12.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm2>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm2_pi_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm3-ph0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm3-ph0.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm3-ph0.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm3>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm3_ph_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm3-pi13.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm3-pi13.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm3-pi13.dtso -@@ -0,0 +1,22 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm3>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm3_pi_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm4-ph1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm4-ph1.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm4-ph1.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm4>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm4_ph_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm4-pi14.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm4-pi14.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-pwm4-pi14.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&pwm>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&pwm4>; -+ __overlay__ { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm4_pi_pin>; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pg-rts-cts.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pg-rts-cts.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pg-rts-cts.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pg_pins>, <&uart2_pg_rts_cts_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pg.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pg.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pg.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pg_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-ph-rts-cts.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-ph-rts-cts.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-ph-rts-cts.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_ph_pins>, <&uart2_ph_rts_cts_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-ph.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-ph.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-ph.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_ph_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pi-rts-cts.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pi-rts-cts.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pi-rts-cts.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pi_pins>, <&uart2_pi_rts_cts_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pi.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2-pi.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart2>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pi_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart3-pi-rts-cts.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart3-pi-rts-cts.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart3-pi-rts-cts.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pi_pins>, <&uart3_pi_rts_cts_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart3-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart3-pi.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart3-pi.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pi_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart4-pi-rts-cts.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart4-pi-rts-cts.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart4-pi-rts-cts.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart4_pi_pins>, <&uart4_pi_rts_cts_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart4-pi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart4-pi.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart4-pi.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart3>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart4_pi_pins>; -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dtso -@@ -0,0 +1,15 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&uart5>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart5_pins>; -+ status = "okay"; -+ }; -+ }; -+}; --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-overlay-sun50i-a64-pine64-7inch-lcd.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-overlay-sun50i-a64-pine64-7inch-lcd.patch deleted file mode 100644 index f7858145c7..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-overlay-sun50i-a64-pine64-7inch-lcd.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Wed, 2 Feb 2022 20:27:02 +0300 -Subject: arm64:dts:overlay: sun50i-a64-pine64-7inch-lcd - -Added to orange-pi-5.9 2020-11-30 ---- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 1 + - arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays | 5 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso | 87 ++++++++++ - 3 files changed, 93 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -2,6 +2,7 @@ - dtb-$(CONFIG_ARCH_SUNXI) += \ - sun50i-a64-i2c0.dtbo \ - sun50i-a64-i2c1.dtbo \ -+ sun50i-a64-pine64-7inch-lcd.dtbo \ - sun50i-a64-pps-gpio.dtbo \ - sun50i-a64-spi-add-cs1.dtbo \ - sun50i-a64-spi-jedec-nor.dtbo \ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays -+++ b/arch/arm64/boot/dts/allwinner/overlay/README.sun50i-a64-overlays -@@ -20,6 +20,7 @@ on supported boards, so this controller is not supported in provided overlays - - - i2c0 - - i2c1 -+- pine64-7inch-lcd - - pps-gpio - - spi-add-cs1 - - spi-jedec-nor -@@ -44,6 +45,10 @@ Activates TWI/I2C bus 1 - - I2C1 pins (SCL, SDA): PH2, PH3 - -+### pine64-7inch-lcd -+ -+Activates the Pine64 7" LCD on pine64/pine64so boards -+ - ### pps-gpio - - Activates pulse-per-second GPIO client -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-a64-pine64-7inch-lcd.dtso -@@ -0,0 +1,87 @@ -+/dts-v1/; -+/plugin/; -+ -+#include -+#include -+#include -+ -+/ { -+ compatible = "allwinner,sun50i-a64"; -+ -+ fragment@0 { -+ target = <®_ldo_io0>; -+ -+ __overlay__ { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-ctp"; -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c0>; -+ -+ __overlay__ { -+ status = "okay"; -+ -+ gt911: touchscreen@5d { -+ compatible = "goodix,gt911"; -+ reg = <0x5d>; -+ -+ interrupt-parent = <&pio>; -+ interrupts = <7 4 IRQ_TYPE_EDGE_RISING>; /* PH4 */ -+ reset-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ -+ AVDD28-supply = <®_ldo_io0>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&r_pwm>; -+ -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@3 { -+ target-path = "/"; -+ -+ __overlay__ { -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <1 2 4 8 16 32 64 128 512>; -+ default-brightness-level = <8>; -+ enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */ -+ }; -+ }; -+ }; -+ -+ fragment@4 { -+ target = <&dsi>; -+ -+ __overlay__ { -+ vcc-dsi-supply = <®_dldo1>; -+ status = "okay"; -+ -+ panel@0 { -+ compatible = "feiyang,fy07024di26a30d"; -+ reg = <0>; -+ avdd-supply = <®_dc1sw>; -+ dvdd-supply = <®_dldo2>; -+ reset-gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */ -+ backlight = <&backlight>; -+ }; -+ }; -+ }; -+ -+ fragment@5 { -+ target = <&dphy>; -+ -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch deleted file mode 100644 index 657fa8283e..0000000000 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-overlay-sun50i-h5-add-gpio-regulator-overclock.patch +++ /dev/null @@ -1,216 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: The-going <48602507+The-going@users.noreply.github.com> -Date: Wed, 2 Feb 2022 21:01:10 +0300 -Subject: arm64:dts:overlay sun50i-h5 add gpio regulator overclock - ---- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 4 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso | 31 +++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso | 31 +++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso | 61 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso | 38 ++++++ - 5 files changed, 165 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -14,6 +14,10 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ - sun50i-a64-w1-gpio.dtbo \ - sun50i-h5-analog-codec.dtbo \ - sun50i-h5-cir.dtbo \ -+ sun50i-h5-cpu-clock-1.0GHz-1.1v.dtbo \ -+ sun50i-h5-cpu-clock-1.2GHz-1.3v.dtbo \ -+ sun50i-h5-cpu-clock-1.3GHz-1.3v.dtbo \ -+ sun50i-h5-gpio-regulator-1.3v.dtbo \ - sun50i-h5-i2c0.dtbo \ - sun50i-h5-i2c1.dtbo \ - sun50i-h5-i2c2.dtbo \ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.0GHz-1.1v.dtso -@@ -0,0 +1,31 @@ -+// DT overlay for CPU frequency operating points to up to 1.0GHz at a maximum CPU voltage of 1.1v -+ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&cpu_opp_table>; -+ -+ __overlay__ { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ // in order to match the H5 DT cooling-maps, update the existing OP table in-place -+ // with the new voltages -+ -+ opp-960000000 { -+ opp-hz = /bits/ 64 <960000000>; -+ opp-microvolt = <1100000 1100000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1008000000 { -+ opp-hz = /bits/ 64 <1008000000>; -+ opp-microvolt = <1100000 1100000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+ }; -+}; -+ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.2GHz-1.3v.dtso -@@ -0,0 +1,31 @@ -+// DT overlay for CPU frequency operating points to up to 1.2GHz at a maximum CPU voltage of 1.3v -+ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&cpu_opp_table>; -+ -+ __overlay__ { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ // in order to match the H5 DT cooling-maps, update the existing OP table in-place -+ // with the new voltages -+ -+ opp-1104000000 { -+ opp-hz = /bits/ 64 <1104000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1200000000 { -+ opp-hz = /bits/ 64 <1200000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+ }; -+}; -+ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-cpu-clock-1.3GHz-1.3v.dtso -@@ -0,0 +1,61 @@ -+// DT overlay for CPU frequency operating points to 1.3GHz at a maximum CPU voltage of 1.3v -+ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&cpu_opp_table>; -+ -+ __overlay__ { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ // in order to match the H5 DT cooling-maps, update the existing OP table in-place -+ // with the new voltages -+ -+ opp-1056000000 { -+ opp-hz = /bits/ 64 <1056000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1104000000 { -+ opp-hz = /bits/ 64 <1104000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1152000000 { -+ opp-hz = /bits/ 64 <1152000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1200000000 { -+ opp-hz = /bits/ 64 <1200000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1224000000 { -+ opp-hz = /bits/ 64 <1224000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1248000000 { -+ opp-hz = /bits/ 64 <1248000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1296000000 { -+ opp-hz = /bits/ 64 <1296000000>; -+ opp-microvolt = <1300000 1300000 1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+ }; -+}; -+ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h5-gpio-regulator-1.3v.dtso -@@ -0,0 +1,38 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h5"; -+ -+ fragment@0 { -+ target-path = "/"; -+ -+ __overlay__ { -+ reg_vdd_cpux: gpio-regulator { -+ compatible = "regulator-gpio"; -+ regulator-name = "vdd-cpux"; -+ regulator-type = "voltage"; -+ regulator-boot-on; -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1300000>; -+ regulator-ramp-delay = <50>; /* 4ms */ -+ -+ gpios = <&r_pio 0 6 0>; /* PL6 */ -+ enable-active-high; -+ gpios-states = <0x1>; -+ states = <1100000 0x0 -+ 1300000 0x1>; -+ }; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&cpu0>; -+ -+ __overlay__ { -+ cpu-supply = <®_vdd_cpux>; -+ }; -+ }; -+}; -+ --- -Armbian - diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-add-overlays.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-add-overlays.patch index befca57ffa..2396ef2016 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-add-overlays.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-add-overlays.patch @@ -6,478 +6,9 @@ Subject: sun50i-h616: add overlays and fixup Author: unknown Signed-off-by: Werner --- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 15 +- - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd | 110 ++++++++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso | 13 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso | 20 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso | 18 ++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso | 42 ++++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso | 28 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso | 28 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso | 28 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso | 28 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso | 33 +++ - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso | 13 ++ - scripts/Makefile.lib | 11 + - 13 files changed, 385 insertions(+), 2 deletions(-) + scripts/Makefile.lib | 11 ++++++++++ + 1 file changed, 11 insertions(+) -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -47,12 +47,23 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ - sun50i-h6-uart1.dtbo \ - sun50i-h6-uart2.dtbo \ - sun50i-h6-uart3.dtbo \ -- sun50i-h6-w1-gpio.dtbo -+ sun50i-h6-w1-gpio.dtbo \ -+ sun50i-h616-spi-spidev.dtbo \ -+ sun50i-h616-spidev0_0.dtbo \ -+ sun50i-h616-spidev1_0.dtbo \ -+ sun50i-h616-spidev1_1.dtbo \ -+ sun50i-h616-spidev1_2.dtbo \ -+ sun50i-h616-ir.dtbo \ -+ sun50i-h616-tft35_spi.dtbo \ -+ sun50i-h616-mcp2515.dtbo \ -+ sun50i-h616-ws2812.dtbo \ -+ sun50i-h616-light.dtbo - - scr-$(CONFIG_ARCH_SUNXI) += \ - sun50i-a64-fixup.scr \ - sun50i-h5-fixup.scr \ -- sun50i-h6-fixup.scr -+ sun50i-h6-fixup.scr \ -+ sun50i-h616-fixup.scr - - dtbotxt-$(CONFIG_ARCH_SUNXI) += \ - README.sun50i-a64-overlays \ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd -@@ -0,0 +1,110 @@ -+# overlays fixup script -+# implements (or rather substitutes) overlay arguments functionality -+# using u-boot scripting, environment variables and "fdt" command -+ -+# setexpr test_var ${tmp_bank} - A -+# works only for hex numbers (A-F) -+ -+setenv decompose_pin 'setexpr tmp_bank sub "P(C|G|H|I)\\d+" "\\1"; -+setexpr tmp_pin sub "P\\S(\\d+)" "\\1"; -+test "${tmp_bank}" = "C" && setenv tmp_bank 2; -+test "${tmp_bank}" = "G" && setenv tmp_bank 6; -+test "${tmp_bank}" = "H" && setenv tmp_bank 7; -+test "${tmp_bank}" = "I" && setenv tmp_bank 8' -+ -+if test -n "${param_spinor_spi_bus}"; then -+ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@5010000" -+ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@5011000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spiflash@0 status "okay" -+ if test -n "${param_spinor_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spiflash@0 spi-max-frequency "<${param_spinor_max_freq}>" -+ fi -+ if test "${param_spinor_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spiflash@0 reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_spidev_spi_bus}"; then -+ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@5010000" -+ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@5011000" -+ fdt set /soc/${tmp_spi_path} status "okay" -+ fdt set /soc/${tmp_spi_path}/spidev status "okay" -+ if test -n "${param_spidev_max_freq}"; then -+ fdt set /soc/${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" -+ fi -+ if test "${param_spidev_spi_cs}" = "1"; then -+ fdt set /soc/${tmp_spi_path}/spidev reg "<1>" -+ fi -+ env delete tmp_spi_path -+fi -+ -+if test -n "${param_pps_pin}"; then -+ setenv tmp_bank "${param_pps_pin}" -+ setenv tmp_pin "${param_pps_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@300b000/pps_pins pins "${param_pps_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@300b000 phandle -+ fdt set /pps@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_pps_falling_edge}" = "1"; then -+ fdt set /pps@0 assert-falling-edge -+fi -+ -+for f in ${overlays}; do -+ if test "${f}" = "pwm34"; then -+ setenv bootargs_new "" -+ for arg in ${bootargs}; do -+ if test "${arg}" = "console=ttyS0,115200"; then -+ echo "Warning: Disabling ttyS0 console due to enabled PWM3 and PWM4 overlay" -+ else -+ setenv bootargs_new "${bootargs_new} ${arg}" -+ fi -+ done -+ setenv bootargs "${bootargs_new}" -+ fi -+done -+ -+if test -n "${param_w1_pin}"; then -+ setenv tmp_bank "${param_w1_pin}" -+ setenv tmp_pin "${param_w1_pin}" -+ run decompose_pin -+ fdt set /soc/pinctrl@300b000/w1_pins pins "${param_w1_pin}" -+ fdt get value tmp_phandle /soc/pinctrl@300b000 phandle -+ fdt set /onewire@0 gpios "<${tmp_phandle} ${tmp_bank} ${tmp_pin} 0>" -+ env delete tmp_pin tmp_bank tmp_phandle -+fi -+ -+if test "${param_w1_pin_int_pullup}" = "1"; then -+ fdt set /soc/pinctrl@300b000/w1_pins bias-pull-up -+fi -+ -+if test "${param_uart1_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart1-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart1-rts-cts-pins phandle -+ fdt set /soc/serial@5000400 pinctrl-names "default" "default" -+ fdt set /soc/serial@5000400 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@5000400 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart2_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart2-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart2-rts-cts-pins phandle -+ fdt set /soc/serial@5000800 pinctrl-names "default" "default" -+ fdt set /soc/serial@5000800 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@5000800 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -+ -+if test "${param_uart3_rtscts}" = "1"; then -+ fdt get value tmp_phandle1 /soc/pinctrl@300b000/uart3-pins phandle -+ fdt get value tmp_phandle2 /soc/pinctrl@300b000/uart3-rts-cts-pins phandle -+ fdt set /soc/serial@5000c00 pinctrl-names "default" "default" -+ fdt set /soc/serial@5000c00 pinctrl-0 "<${tmp_phandle1}>" -+ fdt set /soc/serial@5000c00 pinctrl-1 "<${tmp_phandle2}>" -+ env delete tmp_phandle1 tmp_phandle2 -+fi -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ir.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target = <&ir>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-light.dtso -@@ -0,0 +1,20 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target = <&i2c_gpio>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&uart0>; -+ __overlay__ { -+ status = "disabled"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-mcp2515.dtso -@@ -0,0 +1,18 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&can>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dtso -@@ -0,0 +1,42 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@5010000"; -+ spi1 = "/soc/spi@5011000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "rohm,dh2228fv"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&spi1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev@0 { -+ compatible = "rohm,dh2228fv"; -+ status = "disabled"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev0_0.dtso -@@ -0,0 +1,28 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi0 = "/soc/spi@5010000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi0>; -+ __overlay__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev0_0: spidev@0 { -+ compatible = "rohm,dh2228fv"; -+ status = "okay"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_0.dtso -@@ -0,0 +1,28 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi1 = "/soc/spi@5011000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev1_0: spidev@0 { -+ compatible = "rohm,dh2228fv"; -+ status = "okay"; -+ reg = <0>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_1.dtso -@@ -0,0 +1,28 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi1 = "/soc/spi@5011000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev1_1: spidev@1 { -+ compatible = "rohm,dh2228fv"; -+ status = "okay"; -+ reg = <1>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spidev1_2.dtso -@@ -0,0 +1,28 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target-path = "/aliases"; -+ __overlay__ { -+ spi1 = "/soc/spi@5011000"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spidev1_2: spidev@2 { -+ compatible = "rohm,dh2228fv"; -+ status = "okay"; -+ reg = <2>; -+ spi-max-frequency = <1000000>; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-tft35_spi.dtso -@@ -0,0 +1,33 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ fragment@0 { -+ target = <&i2c_gpio>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&spi1>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&tft_35>; -+ __overlay__ { -+ status = "okay"; -+ spi-max-frequency = <12500000>; -+ }; -+ }; -+ -+ fragment@3 { -+ target = <&tft_tp>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso -new file mode 100755 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-ws2812.dtso -@@ -0,0 +1,13 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "allwinner,sun50i-h616"; -+ -+ fragment@0 { -+ target = <&ws2812>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+}; diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 111111111111..222222222222 100644 --- a/scripts/Makefile.lib diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/h616-add-keys.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/h616-add-keys.patch index ee7da5e08a..ebdf068788 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/h616-add-keys.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/h616-add-keys.patch @@ -5,58 +5,10 @@ Subject: h616: add keys KEY1 and KEY2 VOL +/- --- - arch/arm64/boot/dts/allwinner/overlay/Makefile | 1 + - arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-keys.dtso | 28 ++++++++++ - arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 1 + - drivers/input/keyboard/sun4i-lradc-keys.c | 8 +++ - 4 files changed, 38 insertions(+) + arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 1 + + drivers/input/keyboard/sun4i-lradc-keys.c | 8 ++++++++ + 2 files changed, 9 insertions(+) -diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile -index 111111111111..222222222222 100644 ---- a/arch/arm64/boot/dts/allwinner/overlay/Makefile -+++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile -@@ -70,6 +70,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ - sun50i-h616-i2c3-ph.dtbo \ - sun50i-h616-i2c4-pg.dtbo \ - sun50i-h616-i2c4-ph.dtbo \ -+ sun50i-h616-keys.dtbo \ - sun50i-h616-pwm1-ph3.dtbo \ - sun50i-h616-pwm1-pi11.dtbo \ - sun50i-h616-pwm2-ph2.dtbo \ -diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-keys.dtso b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-keys.dtso -new file mode 100644 -index 000000000000..111111111111 ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-keys.dtso -@@ -0,0 +1,28 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "xunlong,orangepi-zero2w", "allwinner,sun50i-h616", "allwinner,sun50i-h618"; -+ -+ fragment@0 { -+ target = <&lradc>; -+ __overlay__ { -+ vref-supply = <®_aldo1>; -+ status = "okay"; -+ -+ button-500 { -+ label = "KEY_VOLUMEUP"; -+ linux,code = <115>; // KEY_VOLUMEUP -+ channel = <0>; -+ voltage = <500000>; -+ }; -+ -+ button-800 { -+ label = "KEY_VOLUMEDOWN"; -+ linux,code = <114>; // KEY_VOLUMEDOWN -+ channel = <0>; -+ voltage = <800000>; -+ }; -+ }; -+ }; -+}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi