[PATCH 2/2] arm64: dts: allwinner: orangepi-zero3: fix axp313 interrupt parrent

From: Michal Piekos

Date: Sun Mar 08 2026 - 00:18:09 EST


The AXP313 PMIC interrupt on Orange Pi Zero 3 is connected to PL bank
GPIO handled by the R_PIO controller. However current dts routes the
interrupts to PIO controller. This causes the kernel to select wrong
pinctrl instance when configuring the interrupt which leads to invalid
register access and a kernel hang during boot.

The problem existed previously but became visible after the commit
01e10d0272b9 ("pinctrl: sunxi: Implement gpiochip::get_direction()"),
which causes gpiolib to call the gpiochip::get_direction() callback
during interrupt setup.

Route the interrupt thrpugh R_PIO so the PL bank GPIO is handled by
correct controller.

Fixes: f1b3ddb3ecc2 ("arm64: dts: allwinner: h616: Add OrangePi Zero 3 board support")

Signed-off-by: Michal Piekos <michal.piekos@xxxxxxxxxxxxx>
Tested-by: Michal Piekos <michal.piekos@xxxxxxxxxxxxx>
---
arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
index c51d4d9120de..c46ae00aed5c 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
@@ -48,7 +48,7 @@ axp313: pmic@36 {
reg = <0x36>;
#interrupt-cells = <1>;
interrupt-controller;
- interrupt-parent = <&pio>;
+ interrupt-parent = <&r_pio>;
interrupts = <2 9 IRQ_TYPE_LEVEL_LOW>; /* PC9 */

vin1-supply = <&reg_vcc5v>;

--
2.43.0