xref: /rk3399_ARM-atf/include/drivers/st/stm32mp1_clk.h (revision 0d21680c35f328f1b793f0765760e994d883ff12)
17839a050SYann Gautier /*
23f9c9784SYann Gautier  * Copyright (c) 2018-2019, STMicroelectronics - All Rights Reserved
37839a050SYann Gautier  *
47839a050SYann Gautier  * SPDX-License-Identifier: BSD-3-Clause
57839a050SYann Gautier  */
67839a050SYann Gautier 
7c3cf06f1SAntonio Nino Diaz #ifndef STM32MP1_CLK_H
8c3cf06f1SAntonio Nino Diaz #define STM32MP1_CLK_H
97839a050SYann Gautier 
1009d40e0eSAntonio Nino Diaz #include <arch_helpers.h>
1109d40e0eSAntonio Nino Diaz 
127839a050SYann Gautier int stm32mp1_clk_probe(void);
137839a050SYann Gautier int stm32mp1_clk_init(void);
14*0d21680cSYann Gautier 
15*0d21680cSYann Gautier bool stm32mp1_rcc_is_secure(void);
16*0d21680cSYann Gautier 
17*0d21680cSYann Gautier void __stm32mp1_clk_enable(unsigned long id, bool caller_is_secure);
18*0d21680cSYann Gautier void __stm32mp1_clk_disable(unsigned long id, bool caller_is_secure);
19*0d21680cSYann Gautier 
20*0d21680cSYann Gautier static inline void stm32mp1_clk_enable_non_secure(unsigned long id)
21*0d21680cSYann Gautier {
22*0d21680cSYann Gautier 	__stm32mp1_clk_enable(id, false);
23*0d21680cSYann Gautier }
24*0d21680cSYann Gautier 
25*0d21680cSYann Gautier static inline void stm32mp1_clk_enable_secure(unsigned long id)
26*0d21680cSYann Gautier {
27*0d21680cSYann Gautier 	__stm32mp1_clk_enable(id, true);
28*0d21680cSYann Gautier }
29*0d21680cSYann Gautier 
30*0d21680cSYann Gautier static inline void stm32mp1_clk_disable_non_secure(unsigned long id)
31*0d21680cSYann Gautier {
32*0d21680cSYann Gautier 	__stm32mp1_clk_disable(id, false);
33*0d21680cSYann Gautier }
34*0d21680cSYann Gautier 
35*0d21680cSYann Gautier static inline void stm32mp1_clk_disable_secure(unsigned long id)
36*0d21680cSYann Gautier {
37*0d21680cSYann Gautier 	__stm32mp1_clk_disable(id, true);
38*0d21680cSYann Gautier }
39*0d21680cSYann Gautier 
40*0d21680cSYann Gautier unsigned int stm32mp1_clk_get_refcount(unsigned long id);
41*0d21680cSYann Gautier 
42*0d21680cSYann Gautier /* SMP protection on RCC registers access */
43*0d21680cSYann Gautier void stm32mp1_clk_rcc_regs_lock(void);
44*0d21680cSYann Gautier void stm32mp1_clk_rcc_regs_unlock(void);
45*0d21680cSYann Gautier 
467839a050SYann Gautier void stm32mp1_stgen_increment(unsigned long long offset_in_ms);
477839a050SYann Gautier 
48c3cf06f1SAntonio Nino Diaz #endif /* STM32MP1_CLK_H */
49