@@ -244,9 +244,9 @@ __attribute__((weak)) void esp_perip_clk_init(void)
244244 }
245245
246246 soc_reset_reason_t rst_reason = esp_rom_get_reset_reason (0 );
247- if (( rst_reason != RESET_REASON_CPU0_SW ) && ( rst_reason != RESET_REASON_CPU_MWDT ) \
248- && ( rst_reason != RESET_REASON_CPU_RWDT ) && (rst_reason != RESET_REASON_CPU_JTAG ) \
249- && ( rst_reason != RESET_REASON_CPU_LOCKUP )) {
247+ // HP related clock control
248+ if (( rst_reason == RESET_REASON_CHIP_POWER_ON ) || (rst_reason == RESET_REASON_CORE_PMU_PWR_DOWN )) {
249+ // hp_sys_clkrst register gets reset only if chip reset or pmu powers down hp
250250 _gdma_ll_enable_bus_clock (0 , false);
251251 _gdma_ll_enable_bus_clock (1 , false);
252252 _pau_ll_enable_bus_clock (false);
@@ -357,33 +357,38 @@ __attribute__((weak)) void esp_perip_clk_init(void)
357357#endif
358358 }
359359
360+ // LP related clock control
360361 if ((rst_reason == RESET_REASON_CHIP_POWER_ON ) || (rst_reason == RESET_REASON_SYS_SUPER_WDT ) \
361362 || (rst_reason == RESET_REASON_SYS_RWDT ) || (rst_reason == RESET_REASON_SYS_BROWN_OUT )) {
362- _lp_uart_ll_enable_bus_clock ( 0 , false);
363+ // lpperi,lp peripheral registers get reset for reset level equal or higher than system reset
363364 lp_uart_ll_sclk_disable (0 );
365+ _lp_uart_ll_enable_bus_clock (0 , false);
364366 _rtcio_ll_enable_io_clock (false);
365- // LP_Peri & Clock Control
366- _uart_ll_enable_pad_sleep_clock (& UART0 , false);
367- _uart_ll_enable_pad_sleep_clock (& UART1 , false);
368- _uart_ll_enable_pad_sleep_clock (& UART2 , false);
369- _uart_ll_enable_pad_sleep_clock (& UART3 , false);
370- _uart_ll_enable_pad_sleep_clock (& UART4 , false);
371- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_PARLIO_TX_CLK_EN );
372- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_PARLIO_RX_CLK_EN );
373- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_I2S2_MCLK_EN );
374- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_I2S1_MCLK_EN );
375- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_I2S0_MCLK_EN );
376- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_EMAC_TX_CLK_EN );
377- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_EMAC_RX_CLK_EN );
378- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_EMAC_TXRX_CLK_EN );
379- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PLL_8M_CLK_EN );
380- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_AUDIO_PLL_CLK_EN );
381- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_SDIO_PLL2_CLK_EN );
382- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_SDIO_PLL1_CLK_EN );
383- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_SDIO_PLL0_CLK_EN );
367+
368+ if (rst_reason == RESET_REASON_CHIP_POWER_ON ) {
369+ // lp_aon_clkrst, lp_system registers get reset only if chip reset
370+ _uart_ll_enable_pad_sleep_clock (& UART0 , false);
371+ _uart_ll_enable_pad_sleep_clock (& UART1 , false);
372+ _uart_ll_enable_pad_sleep_clock (& UART2 , false);
373+ _uart_ll_enable_pad_sleep_clock (& UART3 , false);
374+ _uart_ll_enable_pad_sleep_clock (& UART4 , false);
375+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_PARLIO_TX_CLK_EN );
376+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_PARLIO_RX_CLK_EN );
377+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_I2S2_MCLK_EN );
378+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_I2S1_MCLK_EN );
379+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_I2S0_MCLK_EN );
380+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_EMAC_TX_CLK_EN );
381+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_EMAC_RX_CLK_EN );
382+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PAD_EMAC_TXRX_CLK_EN );
383+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_PLL_8M_CLK_EN );
384+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_AUDIO_PLL_CLK_EN );
385+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_SDIO_PLL2_CLK_EN );
386+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_SDIO_PLL1_CLK_EN );
387+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_SDIO_PLL0_CLK_EN );
384388#if !CONFIG_SPIRAM_BOOT_INIT
385- REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_MPLL_500M_CLK_EN );
389+ REG_CLR_BIT (LP_CLKRST_HP_CLK_CTRL_REG , LP_CLKRST_HP_MPLL_500M_CLK_EN );
386390#endif
387- REG_CLR_BIT (LP_SYSTEM_REG_HP_ROOT_CLK_CTRL_REG , LP_SYSTEM_REG_CPU_CLK_EN );
391+ REG_CLR_BIT (LP_SYSTEM_REG_HP_ROOT_CLK_CTRL_REG , LP_SYSTEM_REG_CPU_CLK_EN );
392+ }
388393 }
389394}
0 commit comments