Skip to content

Commit

Permalink
[nrf fromlist] drivers: pwm: nrfx: add pin retention
Browse files Browse the repository at this point in the history
Add pin retenion if GPD is enabled for nRF54H20.

Upstream PR #: 80672

Signed-off-by: Michał Stasiak <michal.stasiak@nordicsemi.no>
  • Loading branch information
mstasiaknordic authored and rlubos committed Nov 13, 2024
1 parent 87e5b3f commit b524b0e
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/pwm/pwm_nrfx.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
#include <zephyr/linker/devicetree_regions.h>
#include <zephyr/cache.h>
#include <zephyr/mem_mgmt/mem_attr.h>
#ifdef CONFIG_SOC_NRF54H20_GPD
#include <nrf/gpd.h>
#endif

#include <zephyr/logging/log.h>

Expand Down Expand Up @@ -274,6 +277,10 @@ static void pwm_resume(const struct device *dev)

(void)pinctrl_apply_state(config->pcfg, PINCTRL_STATE_DEFAULT);

#ifdef CONFIG_SOC_NRF54H20_GPD
nrf_gpd_retain_pins_set(config->pcfg, false);
#endif

for (size_t i = 0; i < NRF_PWM_CHANNEL_COUNT; i++) {
uint32_t psel;

Expand Down Expand Up @@ -302,6 +309,10 @@ static void pwm_suspend(const struct device *dev)
while (!nrfx_pwm_stopped_check(&config->pwm)) {
}

#ifdef CONFIG_SOC_NRF54H20_GPD
nrf_gpd_retain_pins_set(config->pcfg, true);
#endif

memset(dev->data, 0, sizeof(struct pwm_nrfx_data));
(void)pinctrl_apply_state(config->pcfg, PINCTRL_STATE_SLEEP);
}
Expand Down

0 comments on commit b524b0e

Please sign in to comment.