Hi all,
Thanks for the earlier guidance. I wanted to share that I’ve successfully compiled and booted my custom board configuration for the i.MX8ULP using Zephyr. The board is now recognized and building cleanly, which is a big step forward.
However, I’ve run into a blocking issue during early initialization:
🧩 Problem:
The UPOWER_CheckReqWithArgs() function currently depends on an interrupt-driven callback (uPower_IRQHandler) to set a flag (callbackStatus). Since the Zephyr kernel isn’t initialized at this stage, interrupts are disabled, and the call gets stuck in a while loop waiting for that flag.
Complication:
If I enable interrupts early to allow the IRQ to fire, I encounter UsageFaults and stack corruption, likely due to premature access or context mismatch.
Goal:
I’d like to remove the interrupt dependency and handle uPower requests in polling mode only during early boot. Ideally, I want to replicate what the IRQ does—checking the status manually and setting the flag—without relying on interrupt context.
🧠 What I Need:
- Guidance on how to safely poll for uPower request completion.
- Reference to any internal status flags or registers that indicate request completion.
- Any known caveats or best practices for using uPower in polling mode on i.MX8ULP during early Zephyr boot.
Appreciate any insights or suggestions from those who’ve worked with uPower or early-stage Zephyr bring-up on NXP platforms.
Thanks again!