From 1dc9fcdd33e78598687d74d4dbf9e2bb61050464 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Sat, 15 Mar 2025 10:30:58 +0100 Subject: [PATCH] Allwinner: linux: Switch PMIC connection to I2C --- ...-allwinner-h6-Use-RSB-for-AXP805-PMI.patch | 160 ++++++++++++++++++ .../linux/0035-WIP-OPi3-DT-fixes.patch | 39 ++--- 2 files changed, 180 insertions(+), 19 deletions(-) create mode 100644 projects/Allwinner/patches/linux/0000-Revert-arm64-dts-allwinner-h6-Use-RSB-for-AXP805-PMI.patch diff --git a/projects/Allwinner/patches/linux/0000-Revert-arm64-dts-allwinner-h6-Use-RSB-for-AXP805-PMI.patch b/projects/Allwinner/patches/linux/0000-Revert-arm64-dts-allwinner-h6-Use-RSB-for-AXP805-PMI.patch new file mode 100644 index 0000000000..2e6bc06289 --- /dev/null +++ b/projects/Allwinner/patches/linux/0000-Revert-arm64-dts-allwinner-h6-Use-RSB-for-AXP805-PMI.patch @@ -0,0 +1,160 @@ +From af06c77bfb2e552ab8815aae7856bed29cf8424d Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Sat, 15 Mar 2025 09:57:57 +0100 +Subject: [PATCH] Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC + connection" + +This reverts commit 531fdbeedeb89bd32018a35c6e137765c9cc9e97. + +Hardware that uses I2C wasn't designed with high speeds in mind, so +communication with PMIC via RSB can intermittently fail. Go back to I2C +as higher speed and efficiency isn't worth the trouble. + +Fixes: 531fdbeedeb8 ("arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection") +Signed-off-by: Jernej Skrabec +--- + .../dts/allwinner/sun50i-h6-beelink-gs1.dts | 38 +++++++++---------- + .../dts/allwinner/sun50i-h6-orangepi-3.dts | 14 +++---- + .../dts/allwinner/sun50i-h6-orangepi.dtsi | 22 +++++------ + 3 files changed, 37 insertions(+), 37 deletions(-) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts +index 13a0e63afeaf..2c64d834a2c4 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts +@@ -152,28 +152,12 @@ &pio { + vcc-pg-supply = <®_aldo1>; + }; + +-&r_ir { +- linux,rc-map-name = "rc-beelink-gs1"; ++&r_i2c { + status = "okay"; +-}; + +-&r_pio { +- /* +- * FIXME: We can't add that supply for now since it would +- * create a circular dependency between pinctrl, the regulator +- * and the RSB Bus. +- * +- * vcc-pl-supply = <®_aldo1>; +- */ +- vcc-pm-supply = <®_aldo1>; +-}; +- +-&r_rsb { +- status = "okay"; +- +- axp805: pmic@745 { ++ axp805: pmic@36 { + compatible = "x-powers,axp805", "x-powers,axp806"; +- reg = <0x745>; ++ reg = <0x36>; + interrupt-parent = <&r_intc>; + interrupts = ; + interrupt-controller; +@@ -291,6 +275,22 @@ sw { + }; + }; + ++&r_ir { ++ linux,rc-map-name = "rc-beelink-gs1"; ++ status = "okay"; ++}; ++ ++&r_pio { ++ /* ++ * PL0 and PL1 are used for PMIC I2C ++ * don't enable the pl-supply else ++ * it will fail at boot ++ * ++ * vcc-pl-supply = <®_aldo1>; ++ */ ++ vcc-pm-supply = <®_aldo1>; ++}; ++ + &spdif { + pinctrl-names = "default"; + pinctrl-0 = <&spdif_tx_pin>; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts +index ab87c3447cd7..f005072c68a1 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts +@@ -176,16 +176,12 @@ &pio { + vcc-pg-supply = <®_vcc_wifi_io>; + }; + +-&r_ir { ++&r_i2c { + status = "okay"; +-}; + +-&r_rsb { +- status = "okay"; +- +- axp805: pmic@745 { ++ axp805: pmic@36 { + compatible = "x-powers,axp805", "x-powers,axp806"; +- reg = <0x745>; ++ reg = <0x36>; + interrupt-parent = <&r_intc>; + interrupts = ; + interrupt-controller; +@@ -296,6 +292,10 @@ sw { + }; + }; + ++&r_ir { ++ status = "okay"; ++}; ++ + &rtc { + clocks = <&ext_osc32k>; + }; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi +index d05dc5d6e6b9..e34dbb992021 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi +@@ -113,20 +113,12 @@ &pio { + vcc-pg-supply = <®_aldo1>; + }; + +-&r_ir { ++&r_i2c { + status = "okay"; +-}; + +-&r_pio { +- vcc-pm-supply = <®_bldo3>; +-}; +- +-&r_rsb { +- status = "okay"; +- +- axp805: pmic@745 { ++ axp805: pmic@36 { + compatible = "x-powers,axp805", "x-powers,axp806"; +- reg = <0x745>; ++ reg = <0x36>; + interrupt-parent = <&r_intc>; + interrupts = ; + interrupt-controller; +@@ -241,6 +233,14 @@ sw { + }; + }; + ++&r_ir { ++ status = "okay"; ++}; ++ ++&r_pio { ++ vcc-pm-supply = <®_bldo3>; ++}; ++ + &rtc { + clocks = <&ext_osc32k>; + }; +-- +2.48.1 + diff --git a/projects/Allwinner/patches/linux/0035-WIP-OPi3-DT-fixes.patch b/projects/Allwinner/patches/linux/0035-WIP-OPi3-DT-fixes.patch index 76cf0d597d..cd63f12a59 100644 --- a/projects/Allwinner/patches/linux/0035-WIP-OPi3-DT-fixes.patch +++ b/projects/Allwinner/patches/linux/0035-WIP-OPi3-DT-fixes.patch @@ -1,4 +1,4 @@ -From 59cc76036f42c7f7baa17cb46e6e19cf3a6a62bb Mon Sep 17 00:00:00 2001 +From 8f163618d4021cb84334109796c60f083fabda8d Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Sun, 26 Sep 2021 09:31:45 +0200 Subject: [PATCH] WIP: OPi3 DT fixes @@ -8,7 +8,7 @@ Subject: [PATCH] WIP: OPi3 DT fixes 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts -index c45d7b7fb39a..af92d92d85a3 100644 +index f005072c68a1..d01a318653a3 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts @@ -63,27 +63,7 @@ reg_vcc5v: vcc5v { @@ -39,8 +39,8 @@ index c45d7b7fb39a..af92d92d85a3 100644 + wifi_pwrseq: wifi-pwrseq { compatible = "mmc-pwrseq-simple"; - clocks = <&rtc 1>; -@@ -136,8 +116,8 @@ &mmc0 { + clocks = <&rtc CLK_OSC32K_FANOUT>; +@@ -137,8 +117,8 @@ &mmc0 { }; &mmc1 { @@ -51,7 +51,7 @@ index c45d7b7fb39a..af92d92d85a3 100644 mmc-pwrseq = <&wifi_pwrseq>; bus-width = <4>; non-removable; -@@ -172,13 +152,17 @@ &ohci3 { +@@ -173,7 +153,7 @@ &ohci3 { &pio { vcc-pc-supply = <®_bldo2>; vcc-pd-supply = <®_cldo1>; @@ -59,18 +59,8 @@ index c45d7b7fb39a..af92d92d85a3 100644 + vcc-pg-supply = <®_bldo3>; }; - &r_ir { - status = "okay"; - }; - -+&r_pio { -+ vcc-pm-supply = <®_bldo3>; -+}; -+ - &r_rsb { - status = "okay"; - -@@ -234,13 +218,12 @@ reg_bldo2: bldo2 { + &r_i2c { +@@ -231,13 +211,12 @@ reg_bldo2: bldo2 { regulator-max-microvolt = <1800000>; regulator-name = "vcc-efuse-pcie-hdmi-pc"; }; @@ -90,7 +80,7 @@ index c45d7b7fb39a..af92d92d85a3 100644 }; reg_cldo1: cldo1 { -@@ -250,19 +233,34 @@ reg_cldo1: cldo1 { +@@ -247,19 +226,34 @@ reg_cldo1: cldo1 { regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-2"; }; @@ -131,6 +121,17 @@ index c45d7b7fb39a..af92d92d85a3 100644 regulator-name = "vdd-cpu"; }; +@@ -296,6 +290,10 @@ &r_ir { + status = "okay"; + }; + ++&r_pio { ++ vcc-pm-supply = <®_bldo3>; ++}; ++ + &rtc { + clocks = <&ext_osc32k>; + }; -- -2.33.0 +2.48.1