mirror of
https://github.com/apache/nuttx.git
synced 2026-10-10 15:50:23 +00:00
Map the NuttX PM states onto the RP2350 low-power modes: - PM_STANDBY is the RP2350 SLEEP state: a WFI with the clocks of the blocks that have no driver in the configuration gated (SLEEP_EN0/1). - PM_SLEEP is the DORMANT state: clk_sys moves to the crystal oscillator, the PLLs and then the oscillator stop, and the clock tree is restored after the wake, as pico-extras does. Only the GPIO dormant-wake detector can wake the chip, so PM_SLEEP gives the standby state when no wake GPIO is configured. The wake GPIO also raises a one-shot interrupt, so that the core leaves its WFI and restores the PLLs at once. The time of day is taken back from the always-on timer after the wake. The dormant state stops the UARTs. A PM_STANDBY wakelock (pm_staytimeout()) is held for RP23XX_PM_WAKE_HOLD_MS after a dormant wake and after each character a UART receives. The serial driver refuses PM_SLEEP in its prepare callback while a UART transmits. A dormant chip does not answer SWD, so the pm configurations use PM_GOVERNOR_EXPLICIT_RELAX to stay out of it for a time after boot. With RP23XX_PM_QUIESCE_PADS, arm_pminitialize() also isolates the unused pads and holds the blocks with no driver in reset. A floating bank 0 input settles near 2.2V (erratum RP2350-E9) and its input buffer then draws a static current in every state. Also select ARCH_HAVE_PM, and fix the LED PM callbacks of three boards, which used BOARD_LED where the boards define BOARD_LED1. They did not build with CONFIG_PM. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com> |
||
|---|---|---|
| .. | ||
| arm | ||
| arm64 | ||
| avr | ||
| ceva | ||
| dummy | ||
| hc | ||
| mips | ||
| misoc | ||
| or1k | ||
| renesas | ||
| risc-v | ||
| sim | ||
| sparc | ||
| tricore | ||
| x86 | ||
| x86_64 | ||
| xtensa | ||
| z16 | ||
| z80 | ||
| CMakeLists.txt | ||
| Kconfig | ||