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