diff --git a/packages/tools/crust/patches/0001-configs-Make-all-H6-devices-use-I2C-PMIC.patch b/packages/tools/crust/patches/0001-configs-Make-all-H6-devices-use-I2C-PMIC.patch new file mode 100644 index 0000000000..985a57926e --- /dev/null +++ b/packages/tools/crust/patches/0001-configs-Make-all-H6-devices-use-I2C-PMIC.patch @@ -0,0 +1,33 @@ +From 80568ea362dfff9a75bd90e71891e70b1a0d3145 Mon Sep 17 00:00:00 2001 +From: Jernej Skrabec +Date: Sat, 15 Mar 2025 18:55:13 +0100 +Subject: [PATCH] configs: Make all H6 devices use I2C PMIC + +Signed-off-by: Jernej Skrabec +--- + configs/beelink_gs1_defconfig | 1 + + configs/orangepi_3_defconfig | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/configs/beelink_gs1_defconfig b/configs/beelink_gs1_defconfig +index 3d2679a34d3b..57a273c668a1 100644 +--- a/configs/beelink_gs1_defconfig ++++ b/configs/beelink_gs1_defconfig +@@ -3,4 +3,5 @@ CONFIG_CIR=y + CONFIG_CIR_PROTO_NEC=y + CONFIG_CIR_WAKE_CODE=0x8051 + CONFIG_CIR_USE_OSC24M=y ++CONFIG_I2C_PINS_PL0_PL1=y + CONFIG_MFD_AXP20X=y +diff --git a/configs/orangepi_3_defconfig b/configs/orangepi_3_defconfig +index 91e60fc1462f..2647faa29bd5 100644 +--- a/configs/orangepi_3_defconfig ++++ b/configs/orangepi_3_defconfig +@@ -1,3 +1,4 @@ + CONFIG_PLATFORM_H6=y + CONFIG_CIR=y ++CONFIG_I2C_PINS_PL0_PL1=y + CONFIG_MFD_AXP20X=y +-- +2.48.1 + 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 diff --git a/projects/Allwinner/patches/u-boot/0001-Revert-arm64-dts-allwinner-h6-Use-RSB-for-AXP805-PMI.patch b/projects/Allwinner/patches/u-boot/0001-Revert-arm64-dts-allwinner-h6-Use-RSB-for-AXP805-PMI.patch new file mode 100644 index 0000000000..cb7a3a15a2 --- /dev/null +++ b/projects/Allwinner/patches/u-boot/0001-Revert-arm64-dts-allwinner-h6-Use-RSB-for-AXP805-PMI.patch @@ -0,0 +1,157 @@ +From dec5528de024e8ddd1dafd8461df3a1bdcfc4bad 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" + +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. + +Signed-off-by: Jernej Skrabec +--- + arch/arm/dts/sun50i-h6-beelink-gs1.dts | 38 +++++++++++++------------- + arch/arm/dts/sun50i-h6-orangepi-3.dts | 14 +++++----- + arch/arm/dts/sun50i-h6-orangepi.dtsi | 22 +++++++-------- + 3 files changed, 37 insertions(+), 37 deletions(-) + +diff --git a/arch/arm/dts/sun50i-h6-beelink-gs1.dts b/arch/arm/dts/sun50i-h6-beelink-gs1.dts +index 529285fc34fd..8359a8ac2a33 100644 +--- a/arch/arm/dts/sun50i-h6-beelink-gs1.dts ++++ b/arch/arm/dts/sun50i-h6-beelink-gs1.dts +@@ -151,28 +151,12 @@ + 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 = <0 IRQ_TYPE_LEVEL_LOW>; + interrupt-controller; +@@ -290,6 +274,22 @@ + }; + }; + ++&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/arm/dts/sun50i-h6-orangepi-3.dts b/arch/arm/dts/sun50i-h6-orangepi-3.dts +index bdcec466246f..f920f8f0a4dd 100644 +--- a/arch/arm/dts/sun50i-h6-orangepi-3.dts ++++ b/arch/arm/dts/sun50i-h6-orangepi-3.dts +@@ -175,16 +175,12 @@ + 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 = <0 IRQ_TYPE_LEVEL_LOW>; + interrupt-controller; +@@ -295,6 +291,10 @@ + }; + }; + ++&r_ir { ++ status = "okay"; ++}; ++ + &rtc { + clocks = <&ext_osc32k>; + }; +diff --git a/arch/arm/dts/sun50i-h6-orangepi.dtsi b/arch/arm/dts/sun50i-h6-orangepi.dtsi +index 4403769fc36e..6846797a8afd 100644 +--- a/arch/arm/dts/sun50i-h6-orangepi.dtsi ++++ b/arch/arm/dts/sun50i-h6-orangepi.dtsi +@@ -112,20 +112,12 @@ + 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 = <0 IRQ_TYPE_LEVEL_LOW>; + interrupt-controller; +@@ -240,6 +232,14 @@ + }; + }; + ++&r_ir { ++ status = "okay"; ++}; ++ ++&r_pio { ++ vcc-pm-supply = <®_bldo3>; ++}; ++ + &rtc { + clocks = <&ext_osc32k>; + }; +-- +2.48.1 +