@@ -333,20 +333,19 @@ void pmu_sleep_increase_ldo_volt(void) {
333333}
334334
335335void pmu_sleep_shutdown_dcdc (void ) {
336- SET_PERI_REG_MASK ( LP_SYSTEM_REG_SYS_CTRL_REG , LP_SYSTEM_REG_LP_FIB_DCDC_SWITCH ); //0: enable, 1: disable
336+ REG_SET_BIT ( PMU_POWER_DCDC_SWITCH_REG , PMU_FORCE_DCDC_SWITCH_PD );
337337 REG_SET_BIT (PMU_DCM_CTRL_REG , PMU_DCDC_OFF_REQ );
338338 // Decrease hp_ldo voltage.
339339 pmu_ll_hp_set_regulator_dbias (& PMU , PMU_MODE_HP_ACTIVE , HP_CALI_ACTIVE_DBIAS_DEFAULT );
340340}
341341
342342FORCE_INLINE_ATTR void pmu_sleep_enable_dcdc (void ) {
343- CLEAR_PERI_REG_MASK ( LP_SYSTEM_REG_SYS_CTRL_REG , LP_SYSTEM_REG_LP_FIB_DCDC_SWITCH ); //0: enable, 1: disable
343+ REG_CLR_BIT ( PMU_POWER_DCDC_SWITCH_REG , PMU_FORCE_DCDC_SWITCH_PD );
344344 SET_PERI_REG_MASK (PMU_DCM_CTRL_REG , PMU_DCDC_ON_REQ );
345345 REG_SET_FIELD (PMU_HP_ACTIVE_BIAS_REG , PMU_HP_ACTIVE_DCM_VSET , HP_CALI_ACTIVE_DCM_VSET_DEFAULT );
346346}
347347
348348FORCE_INLINE_ATTR void pmu_sleep_shutdown_ldo (void ) {
349- CLEAR_PERI_REG_MASK (LP_SYSTEM_REG_SYS_CTRL_REG , LP_SYSTEM_REG_LP_FIB_DCDC_SWITCH ); //0: enable, 1: disable
350349 CLEAR_PERI_REG_MASK (PMU_HP_ACTIVE_HP_REGULATOR0_REG , PMU_HP_ACTIVE_HP_REGULATOR_XPD );
351350}
352351
@@ -441,10 +440,10 @@ TCM_IRAM_ATTR bool pmu_sleep_finish(bool dslp)
441440#endif
442441 {
443442 pmu_ll_hp_set_dcm_vset (& PMU , PMU_MODE_HP_ACTIVE , HP_CALI_ACTIVE_DCM_VSET_DEFAULT );
443+ pmu_sleep_enable_dcdc ();
444444 if (pmu_ll_hp_is_sleep_reject (PMU_instance ()-> hal -> dev )) {
445445 // If sleep is rejected, the hardware wake-up process that turns on DCDC
446- // is skipped, and software is used to enable DCDC here.
447- pmu_sleep_enable_dcdc ();
446+ // is skipped, and wait DCDC volt rise up by software here.
448447 esp_rom_delay_us (950 );
449448 }
450449 pmu_sleep_shutdown_ldo ();
0 commit comments