xref: /rk3399_ARM-atf/include/drivers/clk.h (revision fd2fb5b7612810ee53ab6bce74dffe955e1f252a)
1 /*
2  * Copyright (c) 2021, STMicroelectronics - All Rights Reserved
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef CLK_H
8 #define CLK_H
9 
10 #include <stdbool.h>
11 
12 struct clk_ops {
13 	int (*enable)(unsigned long id);
14 	void (*disable)(unsigned long id);
15 	unsigned long (*get_rate)(unsigned long id);
16 	int (*set_rate)(unsigned long id, unsigned long rate,
17 			unsigned long *orate);
18 	int (*get_possible_parents_num)(unsigned long id);
19 	int (*get_parent)(unsigned long id);
20 	int (*set_parent)(unsigned long id, unsigned long parent_id);
21 	bool (*is_enabled)(unsigned long id);
22 };
23 
24 int clk_enable(unsigned long id);
25 void clk_disable(unsigned long id);
26 unsigned long clk_get_rate(unsigned long id);
27 int clk_set_rate(unsigned long id, unsigned long rate, unsigned long *orate);
28 bool clk_is_enabled(unsigned long id);
29 int clk_get_possible_parents_num(unsigned long id);
30 int clk_get_parent(unsigned long id);
31 int clk_set_parent(unsigned long id, unsigned long parent_id);
32 
33 void clk_register(const struct clk_ops *ops);
34 
35 #endif /* CLK_H */
36