From e5d69c78425c06ad0153d0221a2d00bac468a3c1 Mon Sep 17 00:00:00 2001 From: orangepi-xunlong <258384131@qq.com> Date: Tue, 29 Mar 2022 10:01:06 +0800 Subject: [PATCH] arm64: allwinner: h616: dts: fix overlays --- .../arm64/boot/dts/allwinner/overlay/Makefile | 10 +- .../overlay/sun50i-h616-fixup.scr-cmd | 110 ++++++++++++++++++ .../allwinner/overlay/sun50i-h616-i2c3.dts | 20 ++++ .../allwinner/overlay/sun50i-h616-i2c4.dts | 20 ++++ .../overlay/sun50i-h616-spi-spidev.dts | 42 +++++++ .../allwinner/overlay/sun50i-h616-uart2.dts | 20 ++++ .../allwinner/overlay/sun50i-h616-uart5.dts | 22 ++++ .../sun50i-h616-orangepi-zero2-b.dts | 30 +++-- .../sun50i-h616-orangepi-zero2-lts.dts | 38 ++++-- .../allwinner/sun50i-h616-orangepi-zero2.dts | 22 +++- .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 10 ++ 11 files changed, 318 insertions(+), 26 deletions(-) create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-fixup.scr-cmd create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3.dts create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4.dts create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dts create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2.dts create mode 100644 arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dts mode change 100644 => 100755 arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-b.dts mode change 100644 => 100755 arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-lts.dts diff --git a/arch/arm64/boot/dts/allwinner/overlay/Makefile b/arch/arm64/boot/dts/allwinner/overlay/Makefile index 87f5addeca4c..ba7dec170b77 100644 --- a/arch/arm64/boot/dts/allwinner/overlay/Makefile +++ b/arch/arm64/boot/dts/allwinner/overlay/Makefile @@ -46,12 +46,18 @@ dtbo-$(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-uart2.dtbo \ + sun50i-h616-uart5.dtbo \ + sun50i-h616-i2c3.dtbo \ + sun50i-h616-i2c4.dtbo \ + sun50i-h616-spi-spidev.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 100644 index 000000000000..8bdd79690326 --- /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}" = "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-h616-i2c3.dts b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3.dts new file mode 100644 index 000000000000..1ecef7030e7d --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c3.dts @@ -0,0 +1,20 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "allwinner,sun50i-h616"; + + fragment@0 { + target-path = "/aliases"; + __overlay__ { + i2c3 = "/soc/i2c@5002c00"; + }; + }; + + fragment@1 { + target = <&i2c3>; + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4.dts b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4.dts new file mode 100644 index 000000000000..8f6939ed0a12 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-i2c4.dts @@ -0,0 +1,20 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "allwinner,sun50i-h616"; + + fragment@0 { + target-path = "/aliases"; + __overlay__ { + i2c4 = "/soc/i2c@5003000"; + }; + }; + + fragment@1 { + target = <&i2c4>; + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dts b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dts new file mode 100644 index 000000000000..bf18e7fd3801 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-spi-spidev.dts @@ -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 = "spidev"; + status = "disabled"; + reg = <0>; + spi-max-frequency = <1000000>; + }; + }; + }; + + fragment@2 { + target = <&spi1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + spidev@0 { + compatible = "spidev"; + status = "disabled"; + reg = <0>; + spi-max-frequency = <1000000>; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2.dts b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2.dts new file mode 100644 index 000000000000..f15d27f85e98 --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart2.dts @@ -0,0 +1,20 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "allwinner,sun50i-h616"; + + fragment@0 { + target-path = "/aliases"; + __overlay__ { + serial2 = "/soc/serial@5000800"; + }; + }; + + fragment@1 { + target = <&uart2>; + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dts b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dts new file mode 100644 index 000000000000..cbb53c115d3d --- /dev/null +++ b/arch/arm64/boot/dts/allwinner/overlay/sun50i-h616-uart5.dts @@ -0,0 +1,22 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "allwinner,sun50i-h616"; + + fragment@0 { + target-path = "/aliases"; + __overlay__ { + serial5 = "/soc/serial@5001400"; + }; + }; + + fragment@1 { + target = <&uart5>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&uart5_ph_pins>; + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-b.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-b.dts old mode 100644 new mode 100755 index 087f536d99b8..6e03aac0e34e --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-b.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-b.dts @@ -137,8 +137,8 @@ phy-mode = "rgmii"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_dcdce>; - allwinner,rx-delay-ps = <1500>; - allwinner,tx-delay-ps = <700>; + allwinner,rx-delay-ps = <100>; + allwinner,tx-delay-ps = <500>; status = "okay"; }; @@ -246,7 +246,7 @@ regulator-always-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; - regulator-name = "vcc1v8"; + regulator-name = "vcc-pg"; }; cldo2 { @@ -273,8 +273,8 @@ reg_dcdcd: dcdcd { regulator-always-on; - regulator-min-microvolt = <1100000>; - regulator-max-microvolt = <1100000>; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; regulator-name = "vdd-dram"; }; @@ -334,13 +334,25 @@ &i2c3 { pinctrl-names = "default"; pinctrl-0 = <&i2c3_ph_pins>; - status = "okay"; + status = "disabled"; +}; + +&i2c4 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c4_ph_pins>; + status = "disabled"; +}; + +&uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&uart2_ph_pins>; + status = "disabled"; }; &uart5 { pinctrl-names = "default"; pinctrl-0 = <&uart5_ph_pins>; - status = "okay"; + status = "disabled"; }; &ir { @@ -352,11 +364,11 @@ &spi1 { #address-cells = <1>; #size-cells = <0>; - status = "okay"; + status = "disabled"; spidev@1 { compatible = "spidev"; - status = "okay"; + status = "disabled"; reg = <0>; spi-max-frequency = <1000000>; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-lts.dts old mode 100644 new mode 100755 index c955308f2c77..86ccddfe0b3a --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-lts.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2-lts.dts @@ -137,8 +137,8 @@ phy-mode = "rgmii"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_dcdce>; - allwinner,rx-delay-ps = <3100>; - allwinner,tx-delay-ps = <700>; + allwinner,rx-delay-ps = <100>; + allwinner,tx-delay-ps = <500>; status = "okay"; }; @@ -227,8 +227,11 @@ regulator-name = "vcc1v8"; }; - bldo2 { - /* unused */ + reg_bldo2: bldo2 { + regulator-always-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc1v8"; }; bldo3 { @@ -239,8 +242,11 @@ /* unused */ }; - cldo1 { - /* reserved */ + reg_cldo1: cldo1 { + regulator-always-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc-pg"; }; cldo2 { @@ -328,13 +334,25 @@ &i2c3 { pinctrl-names = "default"; pinctrl-0 = <&i2c3_ph_pins>; - status = "okay"; + status = "disabled"; +}; + +&i2c4 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c4_ph_pins>; + status = "disabled"; +}; + +&uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&uart2_ph_pins>; + status = "disabled"; }; &uart5 { pinctrl-names = "default"; pinctrl-0 = <&uart5_ph_pins>; - status = "okay"; + status = "disabled"; }; &ir { @@ -346,11 +364,11 @@ &spi1 { #address-cells = <1>; #size-cells = <0>; - status = "okay"; + status = "disabled"; spidev@1 { compatible = "spidev"; - status = "okay"; + status = "disabled"; reg = <0>; spi-max-frequency = <1000000>; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts index 76f8c718c05b..543935242efd 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts @@ -287,7 +287,7 @@ }; &spi0 { - status = "okay"; + status = "disabled"; flash@0 { #address-cells = <1>; @@ -328,13 +328,25 @@ &i2c3 { pinctrl-names = "default"; pinctrl-0 = <&i2c3_ph_pins>; - status = "okay"; + status = "disabled"; +}; + +&i2c4 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c4_ph_pins>; + status = "disabled"; +}; + +&uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&uart2_ph_pins>; + status = "disabled"; }; &uart5 { pinctrl-names = "default"; pinctrl-0 = <&uart5_ph_pins>; - status = "okay"; + status = "disabled"; }; &ir { @@ -346,11 +358,11 @@ &spi1 { #address-cells = <1>; #size-cells = <0>; - status = "okay"; + status = "disabled"; spidev@1 { compatible = "spidev"; - status = "okay"; + status = "disabled"; reg = <0>; spi-max-frequency = <1000000>; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi index 1232bab998c3..9bb59bc5c81e 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi @@ -271,6 +271,11 @@ function = "i2c3"; }; + i2c4_ph_pins: i2c4-ph-pins { + pins = "PH6", "PH7"; + function = "i2c4"; + }; + i2s3_pins: i2s3-pins { pins = "PH5", "PH6", "PH7", "PH8", "PH9"; function = "i2s3"; @@ -336,6 +341,11 @@ function = "uart1"; }; + uart2_ph_pins: uart2-ph-pins { + pins = "PH5", "PH6"; + function = "uart2"; + }; + uart5_ph_pins: uart5-ph-pins { pins = "PH2", "PH3"; function = "uart5";