1 /*
2  * Copyright (c) 2024 Silicon Laboratories Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SILABS_H_
8 #define ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SILABS_H_
9 
10 #include <zephyr/drivers/clock_control.h>
11 
12 #if defined(CONFIG_SOC_SERIES_EFR32MG21)
13 #include <zephyr/dt-bindings/clock/silabs/xg21-clock.h>
14 #elif defined(CONFIG_SOC_SERIES_EFR32BG22)
15 #include <zephyr/dt-bindings/clock/silabs/xg22-clock.h>
16 #elif defined(CONFIG_SOC_SERIES_EFR32ZG23)
17 #include <zephyr/dt-bindings/clock/silabs/xg23-clock.h>
18 #elif defined(CONFIG_SOC_SERIES_EFR32MG24)
19 #include <zephyr/dt-bindings/clock/silabs/xg24-clock.h>
20 #elif defined(CONFIG_SOC_SERIES_EFR32BG27)
21 #include <zephyr/dt-bindings/clock/silabs/xg27-clock.h>
22 #elif defined(CONFIG_SOC_SERIES_EFR32BG29) || defined(CONFIG_SOC_SERIES_EFR32MG29)
23 #include <zephyr/dt-bindings/clock/silabs/xg29-clock.h>
24 #endif
25 
26 struct silabs_clock_control_cmu_config {
27 	uint32_t bus_clock;
28 	uint8_t branch;
29 };
30 
31 #define SILABS_DT_CLOCK_CFG(node_id)                                                               \
32 	{                                                                                          \
33 		.bus_clock = DT_CLOCKS_CELL(node_id, enable),                                      \
34 		.branch = DT_CLOCKS_CELL(node_id, branch),                                         \
35 	}
36 
37 #define SILABS_DT_INST_CLOCK_CFG(inst)                                                             \
38 	{                                                                                          \
39 		.bus_clock = DT_INST_CLOCKS_CELL(inst, enable),                                    \
40 		.branch = DT_INST_CLOCKS_CELL(inst, branch),                                       \
41 	}
42 
43 #endif /* ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SILABS_H_ */
44