xref: /rk3399_ARM-atf/include/drivers/st/stm32mp1_clk.h (revision fd7b287cbe9147ca9e07dd9f30c49c58bbdd92a8)
1 /*
2  * Copyright (c) 2018-2019, STMicroelectronics - All Rights Reserved
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef STM32MP1_CLK_H
8 #define STM32MP1_CLK_H
9 
10 #include <arch_helpers.h>
11 
12 int stm32mp1_clk_probe(void);
13 int stm32mp1_clk_init(void);
14 
15 bool stm32mp1_rcc_is_secure(void);
16 bool stm32mp1_rcc_is_mckprot(void);
17 
18 void __stm32mp1_clk_enable(unsigned long id, bool caller_is_secure);
19 void __stm32mp1_clk_disable(unsigned long id, bool caller_is_secure);
20 
21 static inline void stm32mp1_clk_enable_non_secure(unsigned long id)
22 {
23 	__stm32mp1_clk_enable(id, false);
24 }
25 
26 static inline void stm32mp1_clk_enable_secure(unsigned long id)
27 {
28 	__stm32mp1_clk_enable(id, true);
29 }
30 
31 static inline void stm32mp1_clk_disable_non_secure(unsigned long id)
32 {
33 	__stm32mp1_clk_disable(id, false);
34 }
35 
36 static inline void stm32mp1_clk_disable_secure(unsigned long id)
37 {
38 	__stm32mp1_clk_disable(id, true);
39 }
40 
41 unsigned int stm32mp1_clk_get_refcount(unsigned long id);
42 
43 /* SMP protection on RCC registers access */
44 void stm32mp1_clk_rcc_regs_lock(void);
45 void stm32mp1_clk_rcc_regs_unlock(void);
46 
47 void stm32mp1_stgen_increment(unsigned long long offset_in_ms);
48 
49 #endif /* STM32MP1_CLK_H */
50