1 /*
2  * Copyright (c) 2023 Renesas Electronics Corporation
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SMARTBOND_CLOCK_CONTROL_H_
8 #define ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SMARTBOND_CLOCK_CONTROL_H_
9 
10 #include <zephyr/device.h>
11 #include <zephyr/drivers/clock_control.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /** @brief Smartbond clocks
18  *
19  * Enum oscillators and clocks.
20  */
21 enum smartbond_clock {
22 	/* Not a clock, used for error case only */
23 	SMARTBOND_CLK_NONE,
24 	SMARTBOND_CLK_RC32K,
25 	SMARTBOND_CLK_RCX,
26 	SMARTBOND_CLK_XTAL32K,
27 	SMARTBOND_CLK_RC32M,
28 	SMARTBOND_CLK_XTAL32M,
29 	SMARTBOND_CLK_PLL96M,
30 	SMARTBOND_CLK_USB,
31 	SMARTBOND_CLK_DIVN_32M,
32 	SMARTBOND_CLK_HCLK,
33 	SMARTBOND_CLK_LP_CLK,
34 	SMARTBOND_CLK_SYS_CLK,
35 };
36 
37 /** @brief Selects system clock
38  *
39  * @param sys_clk system clock to switch to.
40  *
41  * @return 0 on success
42  */
43 int z_smartbond_select_sys_clk(enum smartbond_clock sys_clk);
44 
45 /** @brief Selects low power clock
46  *
47  * @param lp_clk low power clock to switch to.
48  *
49  * @return 0 on success
50  */
51 int z_smartbond_select_lp_clk(enum smartbond_clock lp_clk);
52 
53 #ifdef __cplusplus
54 }
55 #endif
56 
57 #endif /* ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SMARTBOND_CLOCK_CONTROL_H_ */
58