1 /*
2  * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #pragma once
8 
9 #include <stdint.h>
10 #include "soc/clk_tree_defs.h"
11 #include "soc/soc_caps.h"
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /**
18  * @brief Get SOC_ROOT_CLK frequency
19  *
20  * @param cpu_clk_src One of the clock sources in soc_cpu_clk_src_t
21  *
22  * @return SOC ROOT clock frequency, in MHz. Returns 0 if input argument is invalid.
23  */
24 uint32_t clk_hal_soc_root_get_freq_mhz(soc_cpu_clk_src_t cpu_clk_src);
25 
26 /**
27  * @brief Get CPU_CLK frequency
28  *
29  * @return CPU clock frequency, in Hz. Returns 0 if internal clock configuration is invalid.
30  */
31 uint32_t clk_hal_cpu_get_freq_hz(void);
32 
33 /**
34  * @brief Get AHB_CLK frequency
35  *
36  * @return AHB clock frequency, in Hz. Returns 0 if internal clock configuration is invalid.
37  */
38 uint32_t clk_hal_ahb_get_freq_hz(void);
39 
40 /**
41  * @brief Get APB_CLK frequency
42  *
43  * @return APB clock frequency, in Hz. Returns 0 if internal clock configuration is invalid.
44  */
45 uint32_t clk_hal_apb_get_freq_hz(void);
46 
47 /**
48  * @brief Get LP_SLOW_CLK (i.e. RTC_SLOW_CLK) approximate frequency
49  *
50  * @return LP Slow clock frequency, in Hz. Returns 0 if LP_SLOW clock source is invalid.
51  */
52 uint32_t clk_hal_lp_slow_get_freq_hz(void);
53 
54 /**
55  * @brief Get XTAL_CLK frequency
56  *
57  * @return XTAL clock frequency, in MHz
58  */
59 uint32_t clk_hal_xtal_get_freq_mhz(void);
60 
61 #if SOC_CLK_APLL_SUPPORTED
62 /**
63  * @brief Get APLL_CLK frequency
64  *
65  * @return APLL clock frequency, in Hz
66  */
67 uint32_t clk_hal_apll_get_freq_hz(void);
68 #endif //SOC_CLK_APLL_SUPPORTED
69 
70 #ifdef __cplusplus
71 }
72 #endif
73