1 /*
2  * Copyright (c) 2022 Intel Corporation
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #include <zephyr/device.h>
7 #include <zephyr/drivers/clock_control/clock_control_adsp.h>
8 #include <zephyr/drivers/clock_control.h>
9 
cavs_clock_ctrl_set_rate(const struct device * clk,clock_control_subsys_t sys,clock_control_subsys_rate_t rate)10 static int cavs_clock_ctrl_set_rate(const struct device *clk,
11 				    clock_control_subsys_t sys,
12 				    clock_control_subsys_rate_t rate)
13 {
14 	uint32_t freq_idx = (uint32_t)rate;
15 
16 	return adsp_clock_set_cpu_freq(freq_idx);
17 }
18 
cavs_clock_ctrl_init(const struct device * dev)19 static int cavs_clock_ctrl_init(const struct device *dev)
20 {
21 	/* Nothing to do. All initialisation should've been handled
22 	 * by SOC level driver.
23 	 */
24 	return 0;
25 }
26 
27 static const struct clock_control_driver_api cavs_clock_api = {
28 	.set_rate = cavs_clock_ctrl_set_rate
29 };
30 
31 DEVICE_DT_DEFINE(DT_NODELABEL(clkctl), &cavs_clock_ctrl_init, NULL,
32 		 NULL, NULL, POST_KERNEL,
33 		 CONFIG_CLOCK_CONTROL_INIT_PRIORITY, &cavs_clock_api);
34