xref: /rk3399_ARM-atf/include/drivers/st/stm32mp1_clk.h (revision b053a22e8a538d3ee6114c0ce7f25fa49f0302d8)
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);
140d21680cSYann Gautier 
150d21680cSYann Gautier bool stm32mp1_rcc_is_secure(void);
16*b053a22eSYann Gautier bool stm32mp1_rcc_is_mckprot(void);
170d21680cSYann Gautier 
180d21680cSYann Gautier void __stm32mp1_clk_enable(unsigned long id, bool caller_is_secure);
190d21680cSYann Gautier void __stm32mp1_clk_disable(unsigned long id, bool caller_is_secure);
200d21680cSYann Gautier 
210d21680cSYann Gautier static inline void stm32mp1_clk_enable_non_secure(unsigned long id)
220d21680cSYann Gautier {
230d21680cSYann Gautier 	__stm32mp1_clk_enable(id, false);
240d21680cSYann Gautier }
250d21680cSYann Gautier 
260d21680cSYann Gautier static inline void stm32mp1_clk_enable_secure(unsigned long id)
270d21680cSYann Gautier {
280d21680cSYann Gautier 	__stm32mp1_clk_enable(id, true);
290d21680cSYann Gautier }
300d21680cSYann Gautier 
310d21680cSYann Gautier static inline void stm32mp1_clk_disable_non_secure(unsigned long id)
320d21680cSYann Gautier {
330d21680cSYann Gautier 	__stm32mp1_clk_disable(id, false);
340d21680cSYann Gautier }
350d21680cSYann Gautier 
360d21680cSYann Gautier static inline void stm32mp1_clk_disable_secure(unsigned long id)
370d21680cSYann Gautier {
380d21680cSYann Gautier 	__stm32mp1_clk_disable(id, true);
390d21680cSYann Gautier }
400d21680cSYann Gautier 
410d21680cSYann Gautier unsigned int stm32mp1_clk_get_refcount(unsigned long id);
420d21680cSYann Gautier 
430d21680cSYann Gautier /* SMP protection on RCC registers access */
440d21680cSYann Gautier void stm32mp1_clk_rcc_regs_lock(void);
450d21680cSYann Gautier void stm32mp1_clk_rcc_regs_unlock(void);
460d21680cSYann Gautier 
477839a050SYann Gautier void stm32mp1_stgen_increment(unsigned long long offset_in_ms);
487839a050SYann Gautier 
49c3cf06f1SAntonio Nino Diaz #endif /* STM32MP1_CLK_H */
50