@@ -312,20 +312,19 @@ void pmu_sleep_increase_ldo_volt(void) {
312312}
313313
314314void pmu_sleep_shutdown_dcdc (void ) {
315- SET_PERI_REG_MASK ( LP_SYSTEM_REG_SYS_CTRL_REG , LP_SYSTEM_REG_LP_FIB_DCDC_SWITCH ); //0: enable, 1: disable
315+ REG_SET_BIT ( PMU_POWER_DCDC_SWITCH_REG , PMU_FORCE_DCDC_SWITCH_PD );
316316 REG_SET_BIT (PMU_DCM_CTRL_REG , PMU_DCDC_OFF_REQ );
317317 // Decrease hp_ldo voltage.
318318 pmu_ll_hp_set_regulator_dbias (& PMU , PMU_MODE_HP_ACTIVE , HP_CALI_ACTIVE_DBIAS_DEFAULT );
319319}
320320
321321FORCE_INLINE_ATTR void pmu_sleep_enable_dcdc (void ) {
322- CLEAR_PERI_REG_MASK ( LP_SYSTEM_REG_SYS_CTRL_REG , LP_SYSTEM_REG_LP_FIB_DCDC_SWITCH ); //0: enable, 1: disable
322+ REG_CLR_BIT ( PMU_POWER_DCDC_SWITCH_REG , PMU_FORCE_DCDC_SWITCH_PD );
323323 SET_PERI_REG_MASK (PMU_DCM_CTRL_REG , PMU_DCDC_ON_REQ );
324324 REG_SET_FIELD (PMU_HP_ACTIVE_BIAS_REG , PMU_HP_ACTIVE_DCM_VSET , HP_CALI_ACTIVE_DCM_VSET_DEFAULT );
325325}
326326
327327FORCE_INLINE_ATTR void pmu_sleep_shutdown_ldo (void ) {
328- CLEAR_PERI_REG_MASK (LP_SYSTEM_REG_SYS_CTRL_REG , LP_SYSTEM_REG_LP_FIB_DCDC_SWITCH ); //0: enable, 1: disable
329328 CLEAR_PERI_REG_MASK (PMU_HP_ACTIVE_HP_REGULATOR0_REG , PMU_HP_ACTIVE_HP_REGULATOR_XPD );
330329}
331330
@@ -415,10 +414,10 @@ TCM_IRAM_ATTR bool pmu_sleep_finish(bool dslp)
415414#endif
416415 {
417416 pmu_ll_hp_set_dcm_vset (& PMU , PMU_MODE_HP_ACTIVE , HP_CALI_ACTIVE_DCM_VSET_DEFAULT );
417+ pmu_sleep_enable_dcdc ();
418418 if (pmu_ll_hp_is_sleep_reject (PMU_instance ()-> hal -> dev )) {
419419 // If sleep is rejected, the hardware wake-up process that turns on DCDC
420- // is skipped, and software is used to enable DCDC here.
421- pmu_sleep_enable_dcdc ();
420+ // is skipped, and wait DCDC volt rise up by software here.
422421 esp_rom_delay_us (950 );
423422 }
424423 pmu_sleep_shutdown_ldo ();
0 commit comments