|
7 | 7 | #include <zephyr/pm/pm.h>
|
8 | 8 | #include <zephyr/init.h>
|
9 | 9 | #include <zephyr/drivers/pinctrl.h>
|
| 10 | +#if CONFIG_GPIO && (DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin0)) || \ |
| 11 | + DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin1))) |
| 12 | +#include <zephyr/drivers/gpio/gpio_mcux_lpc.h> |
| 13 | +#endif |
10 | 14 |
|
11 | 15 | #include "fsl_power.h"
|
12 | 16 |
|
@@ -34,6 +38,9 @@ power_sleep_config_t slp_cfg;
|
34 | 38 |
|
35 | 39 | #if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin0)) || DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin1))
|
36 | 40 | pinctrl_soc_pin_t pin_cfg;
|
| 41 | +#if CONFIG_GPIO |
| 42 | +const struct device *gpio; |
| 43 | +#endif |
37 | 44 | #endif
|
38 | 45 |
|
39 | 46 | #if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin0))
|
@@ -206,6 +213,15 @@ __weak void pm_state_exit_post_ops(enum pm_state state, uint8_t substate_id)
|
206 | 213 | ARG_UNUSED(state);
|
207 | 214 | ARG_UNUSED(substate_id);
|
208 | 215 |
|
| 216 | +#if CONFIG_GPIO && (DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin0)) || \ |
| 217 | + DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin1))) |
| 218 | + if (state == PM_STATE_STANDBY) { |
| 219 | + /* GPIO_0_24 & GPIO_0_25 are used for wakeup */ |
| 220 | + uint32_t pins = PMU->WAKEUP_STATUS & |
| 221 | + (PMU_WAKEUP_STATUS_PIN0_MASK | PMU_WAKEUP_STATUS_PIN1_MASK); |
| 222 | + gpio_mcux_lpc_trigger_cb(gpio, (pins << 24)); |
| 223 | + } |
| 224 | +#endif |
209 | 225 | /* Clear PRIMASK */
|
210 | 226 | __enable_irq();
|
211 | 227 | }
|
@@ -247,4 +263,12 @@ void nxp_rw6xx_power_init(void)
|
247 | 263 | /* Clear the RTC wakeup bits */
|
248 | 264 | POWER_ClearWakeupStatus(DT_IRQN(DT_NODELABEL(rtc)));
|
249 | 265 | POWER_DisableWakeup(DT_IRQN(DT_NODELABEL(rtc)));
|
| 266 | + |
| 267 | +#if CONFIG_GPIO && (DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin0)) || \ |
| 268 | + DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pin1))) |
| 269 | + gpio = DEVICE_DT_GET(DT_NODELABEL(hsgpio0)); |
| 270 | + if (!device_is_ready(gpio)) { |
| 271 | + return; |
| 272 | + } |
| 273 | +#endif |
250 | 274 | }
|
0 commit comments