[BPI-R4] U-boot PSCI reboot/shutdown fix for GRUB EFI

Hi all,

I did some tests with my board using PSCI in U-Boot. I’ve notice in mt7987.dtsi this:

/ {
..
        psci {
                compatible  = "arm,psci-0.2";
                method      = "smc";
        };
..
};

mt7988.dtsi doesn’t have anything about PSCI in DTS.

If I’m compiling U-boot 2025.07 with Use PSCI for reset and shutdown (CONFIG_PSCI_RESET), the board is booting U-boot, is loading GRUB EFI and is booting Linux kernel without issues.

The problem happen when you want to reboot the Linux. Check #23773.

I have my own DTSes :

mt7988-bpi-r4-EasyOS.dtsi
mt7988-bpi-r4-EasyOS-leds-button.dtsi
mt7988-bpi-r4-EasyOS-emmc.dts
mt7988-bpi-r4-EasyOS-sd.dts

Based on mt7988-rfb.dts and mt7988-sd-rfb.dts, but I’ve added LED support and NVMe for boot.

DTS mt7988-bpi-r4-EasyOS-emmc.dts and mt7988-bpi-r4-EasyOS-sd.dts includes mt7988-bpi-r4-EasyOS.dtsi and mt7988-bpi-r4-EasyOS-leds-buttons.dts.

Nothing fancy.

But I’ve changed my mt7988-bpi-r4-EasyOS.dtsi and I’ve added the code from mt7987.dtsi for PSCI.

Then I recompiled U-Boot 202507 with CONFIG_PSCI_RESET:

$ grep -i PSCI u-boot-2025.07/build-mt7988/.config
CONFIG_PSCI_RESET=y
# CONFIG_ARMV8_PSCI is not set
CONFIG_ARM_PSCI_FW=y

Restart the board and now I can reboot the Linux Kernel with U-Boot PSCI enabled for reset/shutdown.

There is a reason why PSCI is not present yet in mt7988.dtsi ?

Thanks.

Which issue do you have without psci node in uboot?

If this code is missing from DTS and you complile the U-boot with PSCI reboot/shutdown, you are facing this bug BPI-R4 Reboot issues when using U-Boot EFI and GRUB EFI

But if the U-boot has this code in DTS, the bug/issue is fixed.

If I’m compiling the U-boot without PSCI reboot/shutdown also is working.

When I was building my U-boot and my own Kernel, I was enabled PSCI reboot/shutdown and I faced that issue and I couldn’t find the exact cause.

Does have an impact if DTS contains this code in mt7988.dtsi?

I guess not so you can send patch for adding it to mainline

Where can I send the patch? GitLab, GitHub or directly on U-boot?

U-boot mailinglist based on current main tree (add commit in git and use git format-patch and git send-email)