@@ -30,6 +30,8 @@ struct max32_perclk {
3030 * ADI_MAX32_PRPH_CLK_SRC_INRO
3131 * ADI_MAX32_PRPH_CLK_SRC_ISO
3232 * ADI_MAX32_PRPH_CLK_SRC_IBRO_DIV8
33+ * ADI_MAX32_PRPH_CLK_SRC_IPLL
34+ * ADI_MAX32_PRPH_CLK_SRC_EBO
3335 */
3436 uint32_t clk_src ;
3537};
@@ -38,11 +40,13 @@ struct max32_perclk {
3840#define ADI_MAX32_SYSCLK_PRESCALER DT_PROP_OR(DT_NODELABEL(gcr), sysclk_prescaler, 1)
3941
4042#define ADI_MAX32_CLK_IPO_FREQ DT_PROP(DT_NODELABEL(clk_ipo), clock_frequency)
41- #define ADI_MAX32_CLK_ERFO_FREQ DT_PROP (DT_NODELABEL(clk_erfo), clock_frequency)
43+ #define ADI_MAX32_CLK_ERFO_FREQ DT_PROP_OR (DT_NODELABEL(clk_erfo), clock_frequency, 0 )
4244#define ADI_MAX32_CLK_IBRO_FREQ DT_PROP(DT_NODELABEL(clk_ibro), clock_frequency)
4345#define ADI_MAX32_CLK_ISO_FREQ DT_PROP_OR(DT_NODELABEL(clk_iso), clock_frequency, 0)
4446#define ADI_MAX32_CLK_INRO_FREQ DT_PROP(DT_NODELABEL(clk_inro), clock_frequency)
4547#define ADI_MAX32_CLK_ERTCO_FREQ DT_PROP(DT_NODELABEL(clk_ertco), clock_frequency)
48+ #define ADI_MAX32_CLK_IPLL_FREQ DT_PROP_OR(DT_NODELABEL(clk_ipll), clock_frequency, 0)
49+ #define ADI_MAX32_CLK_EBO_FREQ DT_PROP_OR(DT_NODELABEL(clk_ebo), clock_frequency, 0)
4650/* External clock may not be defined so _OR is used */
4751#define ADI_MAX32_CLK_EXTCLK_FREQ DT_PROP_OR(DT_NODELABEL(clk_extclk), clock_frequency, 0)
4852
@@ -76,6 +80,14 @@ struct max32_perclk {
7680#define ADI_MAX32_SYSCLK_SRC ADI_MAX32_CLK_EXTCLK
7781#define ADI_MAX32_SYSCLK_FREQ (ADI_MAX32_CLK_EXTCLK_FREQ / ADI_MAX32_SYSCLK_PRESCALER)
7882#endif
83+ #if DT_SAME_NODE (DT_GCR_CLOCKS_CTRL , DT_NODELABEL (clk_ipll ))
84+ #define ADI_MAX32_SYSCLK_SRC ADI_MAX32_CLK_IPLL
85+ #define ADI_MAX32_SYSCLK_FREQ (ADI_MAX32_CLK_IPLL_FREQ / ADI_MAX32_SYSCLK_PRESCALER)
86+ #endif
87+ #if DT_SAME_NODE (DT_GCR_CLOCKS_CTRL , DT_NODELABEL (clk_ebo ))
88+ #define ADI_MAX32_SYSCLK_SRC ADI_MAX32_CLK_EBO
89+ #define ADI_MAX32_SYSCLK_FREQ (ADI_MAX32_CLK_EBO_FREQ / ADI_MAX32_SYSCLK_PRESCALER)
90+ #endif
7991
8092#ifndef ADI_MAX32_SYSCLK_SRC
8193#define ADI_MAX32_SYSCLK_SRC ADI_MAX32_CLK_IPO
@@ -93,6 +105,8 @@ struct max32_perclk {
93105 : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_ISO ? ADI_MAX32_CLK_ISO_FREQ \
94106 : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_IBRO_DIV8 ? (ADI_MAX32_CLK_IBRO_FREQ / 8) \
95107 : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_EXTCLK ? ADI_MAX32_CLK_EXTCLK_FREQ \
108+ : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_IPLL ? ADI_MAX32_CLK_IPLL_FREQ \
109+ : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_EBO ? ADI_MAX32_CLK_EBO_FREQ \
96110 : 0)
97111
98112#endif /* ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_ADI_MAX32_CLOCK_CONTROL_H_ */
0 commit comments