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 17 void __stm32mp1_clk_enable(unsigned long id, bool caller_is_secure); 18 void __stm32mp1_clk_disable(unsigned long id, bool caller_is_secure); 19 20 static inline void stm32mp1_clk_enable_non_secure(unsigned long id) 21 { 22 __stm32mp1_clk_enable(id, false); 23 } 24 25 static inline void stm32mp1_clk_enable_secure(unsigned long id) 26 { 27 __stm32mp1_clk_enable(id, true); 28 } 29 30 static inline void stm32mp1_clk_disable_non_secure(unsigned long id) 31 { 32 __stm32mp1_clk_disable(id, false); 33 } 34 35 static inline void stm32mp1_clk_disable_secure(unsigned long id) 36 { 37 __stm32mp1_clk_disable(id, true); 38 } 39 40 unsigned int stm32mp1_clk_get_refcount(unsigned long id); 41 42 /* SMP protection on RCC registers access */ 43 void stm32mp1_clk_rcc_regs_lock(void); 44 void stm32mp1_clk_rcc_regs_unlock(void); 45 46 void stm32mp1_stgen_increment(unsigned long long offset_in_ms); 47 48 #endif /* STM32MP1_CLK_H */ 49