Skip to content

Commit ff39ac4

Browse files
committed
feat(esp_hw_support): manage clock tree hw/sw coherence during CPU reset lazily
1 parent 652fe76 commit ff39ac4

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

components/esp_hw_support/port/esp32c5/esp_clk_tree.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ uint32_t *freq_value)
7171
}
7272

7373
#define ENUM2ARRAY(clk_src) (clk_src - SOC_MOD_CLK_PLL_F12M)
74-
static __NOINIT_ATTR int16_t s_pll_src_cg_ref_cnt[9] = { 0 };
74+
static int16_t s_pll_src_cg_ref_cnt[9] = { 0 };
7575
static bool esp_clk_tree_initialized = false;
7676

7777
void esp_clk_tree_initialize(void)
@@ -82,8 +82,6 @@ void esp_clk_tree_initialize(void)
8282
|| (rst_reason == RESET_REASON_CPU0_JTAG) || (rst_reason == RESET_REASON_CPU0_LOCKUP)) {
8383
esp_clk_tree_initialized = true;
8484
return;
85-
} else {
86-
bzero(s_pll_src_cg_ref_cnt, sizeof(s_pll_src_cg_ref_cnt));
8785
}
8886

8987
soc_cpu_clk_src_t current_cpu_clk_src = clk_ll_cpu_get_src();
@@ -146,7 +144,10 @@ esp_err_t esp_clk_tree_enable_src(soc_module_clk_t clk_src, bool enable)
146144
if (!enable) {
147145
s_pll_src_cg_ref_cnt[ENUM2ARRAY(clk_src)]--;
148146
}
149-
assert(s_pll_src_cg_ref_cnt[ENUM2ARRAY(clk_src)] >= 0);
147+
if (s_pll_src_cg_ref_cnt[ENUM2ARRAY(clk_src)] < 0) {
148+
ESP_EARLY_LOGW(TAG, "soc_module_clk_t %d disabled multiple times!!", clk_src);
149+
s_pll_src_cg_ref_cnt[ENUM2ARRAY(clk_src)] = 0;
150+
}
150151
}
151152
return ESP_OK;
152153
}

0 commit comments

Comments
 (0)