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