We are developing a product using the i.MX93 SoC. Our board design requires that a dedicated PSHOLD GPIO pin be toggled to completely cut power during shutdown. We attempted to use the gpio‑poweroff driver in our device tree for this purpose. However, during shutdown, we observed the following error in dmesg:
gpio-poweroff: gpio_poweroff_probe: pm_power_off function already
registered poweroff-gpio: probe of gpio-poweroff failed with error -16
After some investigation, we found that the PSCI driver in our kernel (which is part of the ARM Trusted Firmware integration) is registering its own power‑off handler by executing:
pm_power_off = psci_sys_poweroff;
This PSCI handler is responsible for the standard power‑off sequence (using the ARM PSCI interface) and is occupying the global pm_power_off pointer, thereby preventing gpio‑poweroff from registering and toggling our PSHOLD GPIO.
Our goal is to maintain PSCI functionality for CPU management while also ensuring that the PSHOLD GPIO is toggled to physically cut power.
- Has anyone successfully integrated a PSHOLD GPIO mechanism on an i.MX93 platform while still retaining PSCI for CPU management?
- What is the recommended approach—should we modify the secure firmware (or PSCI driver) so that the PSCI SYSTEM_OFF call also toggles our PSHOLD GPIO, or is there another supported method?
Any guidance or experience on integrating this hardware power-off feature on i.MX93 would be greatly appreciated.
Thank you!