Skip to content

Commit 9102f40

Browse files
committed
change(esp_hw_support): wrapper sleep dcdc/ldo ops with ll
1 parent d26cc38 commit 9102f40

File tree

4 files changed

+29
-19
lines changed

4 files changed

+29
-19
lines changed

components/esp_hw_support/port/esp32p4/pmu_init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ static inline void pmu_power_domain_force_default(pmu_context_t *ctx)
149149
pmu_ll_lp_set_power_force_power_down(ctx->hal->dev, false);
150150
pmu_ll_lp_set_power_force_isolate (ctx->hal->dev, false);
151151
pmu_ll_lp_set_power_force_reset (ctx->hal->dev, false);
152-
pmu_ll_set_dcdc_force_power_up(ctx->hal->dev, false);
153-
pmu_ll_set_dcdc_force_power_down(ctx->hal->dev, false);
152+
pmu_ll_set_dcdc_switch_force_power_up(ctx->hal->dev, false);
153+
pmu_ll_set_dcdc_switch_force_power_down(ctx->hal->dev, false);
154154
}
155155

156156
static inline void pmu_hp_system_param_default(pmu_hp_mode_t mode, pmu_hp_system_param_t *param)

components/esp_hw_support/port/esp32p4/pmu_sleep.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -312,20 +312,20 @@ void pmu_sleep_increase_ldo_volt(void) {
312312
}
313313

314314
void pmu_sleep_shutdown_dcdc(void) {
315-
REG_SET_BIT(PMU_POWER_DCDC_SWITCH_REG, PMU_FORCE_DCDC_SWITCH_PD);
316-
REG_SET_BIT(PMU_DCM_CTRL_REG, PMU_DCDC_OFF_REQ);
315+
pmu_ll_set_dcdc_switch_force_power_down(&PMU, true);
316+
pmu_ll_set_dcdc_en(&PMU, false);
317317
// Decrease hp_ldo voltage.
318318
pmu_ll_hp_set_regulator_dbias(&PMU, PMU_MODE_HP_ACTIVE, HP_CALI_ACTIVE_DBIAS_DEFAULT);
319319
}
320320

321321
FORCE_INLINE_ATTR void pmu_sleep_enable_dcdc(void) {
322-
REG_CLR_BIT(PMU_POWER_DCDC_SWITCH_REG, PMU_FORCE_DCDC_SWITCH_PD);
323-
SET_PERI_REG_MASK(PMU_DCM_CTRL_REG, PMU_DCDC_ON_REQ);
324-
REG_SET_FIELD(PMU_HP_ACTIVE_BIAS_REG, PMU_HP_ACTIVE_DCM_VSET, HP_CALI_ACTIVE_DCM_VSET_DEFAULT);
322+
pmu_ll_set_dcdc_switch_force_power_down(&PMU, false);
323+
pmu_ll_set_dcdc_en(&PMU, true);
324+
pmu_ll_hp_set_dcm_vset(&PMU, PMU_MODE_HP_ACTIVE, HP_CALI_ACTIVE_DCM_VSET_DEFAULT);
325325
}
326326

327327
FORCE_INLINE_ATTR void pmu_sleep_shutdown_ldo(void) {
328-
CLEAR_PERI_REG_MASK(PMU_HP_ACTIVE_HP_REGULATOR0_REG, PMU_HP_ACTIVE_HP_REGULATOR_XPD);
328+
pmu_ll_hp_set_regulator_xpd(&PMU, PMU_MODE_HP_ACTIVE, 0);
329329
}
330330

331331
FORCE_INLINE_ATTR void pmu_sleep_cache_sync_items(uint32_t gid, uint32_t type, uint32_t map, uint32_t addr, uint32_t bytes)

components/esp_hw_support/port/esp32p4/rtc_clk_init.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -54,14 +54,13 @@ void rtc_clk_init(rtc_clk_config_t cfg)
5454
REGI2C_WRITE_MASK(I2C_BIAS, I2C_BIAS_OR_FORCE_XPD_IPH, 0);
5555
REGI2C_WRITE_MASK(I2C_BIAS, I2C_BIAS_OR_FORCE_XPD_VGATE_BUF, 0);
5656

57-
REG_SET_FIELD(PMU_HP_SLEEP_LP_REGULATOR0_REG, PMU_HP_SLEEP_LP_REGULATOR_DBIAS, LP_CALI_DBIAS);
58-
57+
pmu_ll_lp_set_regulator_dbias(&PMU, PMU_MODE_LP_ACTIVE, LP_CALI_DBIAS);
5958
// Switch to DCDC
60-
SET_PERI_REG_MASK(PMU_DCM_CTRL_REG, PMU_DCDC_ON_REQ);
61-
REG_CLR_BIT(PMU_POWER_DCDC_SWITCH_REG, PMU_FORCE_DCDC_SWITCH_PD);
62-
REG_SET_FIELD(PMU_HP_ACTIVE_BIAS_REG, PMU_HP_ACTIVE_DCM_VSET, HP_CALI_ACTIVE_DCM_VSET_DEFAULT);
59+
pmu_ll_set_dcdc_en(&PMU, true);
60+
pmu_ll_set_dcdc_switch_force_power_down(&PMU, false);
61+
pmu_ll_hp_set_dcm_vset(&PMU, PMU_MODE_HP_ACTIVE, HP_CALI_ACTIVE_DCM_VSET_DEFAULT);
6362
esp_rom_delay_us(1000);
64-
CLEAR_PERI_REG_MASK(PMU_HP_ACTIVE_HP_REGULATOR0_REG, PMU_HP_ACTIVE_HP_REGULATOR_XPD);
63+
pmu_ll_hp_set_regulator_xpd(&PMU, PMU_MODE_HP_ACTIVE, false);
6564

6665
soc_xtal_freq_t xtal_freq = cfg.xtal_freq;
6766
esp_rom_output_tx_wait_idle(0);

components/hal/esp32p4/include/hal/pmu_ll.h

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -652,16 +652,27 @@ FORCE_INLINE_ATTR uint32_t pmu_ll_hp_get_digital_power_up_wait_cycle(pmu_dev_t *
652652
return hw->power.wait_timer0.powerup_timer;
653653
}
654654

655-
FORCE_INLINE_ATTR void pmu_ll_set_dcdc_force_power_up(pmu_dev_t *hw, bool fpu)
655+
FORCE_INLINE_ATTR void pmu_ll_set_dcdc_switch_force_power_up(pmu_dev_t *hw, bool fpu)
656656
{
657+
hw->power.dcdc_switch.force_pd = 0;
657658
hw->power.dcdc_switch.force_pu = fpu;
658659
}
659660

660-
FORCE_INLINE_ATTR void pmu_ll_set_dcdc_force_power_down(pmu_dev_t *hw, bool fpd)
661+
FORCE_INLINE_ATTR void pmu_ll_set_dcdc_switch_force_power_down(pmu_dev_t *hw, bool fpd)
661662
{
663+
hw->power.dcdc_switch.force_pu = 0;
662664
hw->power.dcdc_switch.force_pd = fpd;
663665
}
664666

667+
FORCE_INLINE_ATTR void pmu_ll_set_dcdc_en(pmu_dev_t *hw, bool en)
668+
{
669+
if (en) {
670+
hw->dcm_ctrl.on_req = 1;
671+
} else {
672+
hw->dcm_ctrl.off_req = 1;
673+
}
674+
}
675+
665676
/**
666677
* @brief Get ext1 wakeup source status
667678
* @return The lower 8 bits of the returned value are the bitmap of

0 commit comments

Comments
 (0)