@@ -233,9 +233,21 @@ bool rtc_clk_cpu_freq_mhz_to_config(uint32_t freq_mhz, rtc_cpu_freq_config_t *ou
233233 // 40MHz with PLL_F160M or PLL_F240M clock source. This is a special case, has to handle separately.
234234 if (xtal_freq == SOC_XTAL_FREQ_48M && freq_mhz == 40 ) {
235235 real_freq_mhz = freq_mhz ;
236- source = SOC_CPU_CLK_SRC_PLL_F160M ;
237- source_freq_mhz = CLK_LL_PLL_160M_FREQ_MHZ ;
238- divider = 4 ;
236+ if (!ESP_CHIP_REV_ABOVE (efuse_hal_chip_revision (), 101 )) {
237+ #if CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240
238+ source = SOC_CPU_CLK_SRC_PLL_F240M ;
239+ source_freq_mhz = CLK_LL_PLL_240M_FREQ_MHZ ;
240+ divider = 6 ;
241+ #else
242+ source = SOC_CPU_CLK_SRC_PLL_F160M ;
243+ source_freq_mhz = CLK_LL_PLL_160M_FREQ_MHZ ;
244+ divider = 4 ;
245+ #endif
246+ } else {
247+ source = SOC_CPU_CLK_SRC_PLL_F160M ;
248+ source_freq_mhz = CLK_LL_PLL_160M_FREQ_MHZ ;
249+ divider = 4 ;
250+ }
239251 } else if (freq_mhz <= xtal_freq && freq_mhz != 0 ) {
240252 divider = xtal_freq / freq_mhz ;
241253 real_freq_mhz = (xtal_freq + divider / 2 ) / divider ; /* round */
@@ -258,12 +270,18 @@ bool rtc_clk_cpu_freq_mhz_to_config(uint32_t freq_mhz, rtc_cpu_freq_config_t *ou
258270 divider = 1 ;
259271 } else if (freq_mhz == 80 ) {
260272 real_freq_mhz = freq_mhz ;
261- if (!ESP_CHIP_REV_ABOVE (efuse_hal_chip_revision (), 1 )) {
273+ if (!ESP_CHIP_REV_ABOVE (efuse_hal_chip_revision (), 101 )) {
262274 /* ESP32C5 has a root clock ICG issue when switching SOC_CPU_CLK_SRC from PLL_F160M to PLL_F240M
263275 * For detailed information, refer to IDF-11064 */
276+ #if CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240
264277 source = SOC_CPU_CLK_SRC_PLL_F240M ;
265278 source_freq_mhz = CLK_LL_PLL_240M_FREQ_MHZ ;
266279 divider = 3 ;
280+ #else
281+ source = SOC_CPU_CLK_SRC_PLL_F160M ;
282+ source_freq_mhz = CLK_LL_PLL_160M_FREQ_MHZ ;
283+ divider = 2 ;
284+ #endif
267285 } else {
268286 source = SOC_CPU_CLK_SRC_PLL_F160M ;
269287 source_freq_mhz = CLK_LL_PLL_160M_FREQ_MHZ ;
0 commit comments