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