xref: /rk3399_ARM-atf/include/drivers/st/stm32mp1_clk.h (revision 09d40e0e08283a249e7dce0e106c07c5141f9b7e)
17839a050SYann Gautier /*
27839a050SYann Gautier  * Copyright (c) 2018, 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 
107839a050SYann Gautier #include <stdbool.h>
117839a050SYann Gautier 
12*09d40e0eSAntonio Nino Diaz #include <arch_helpers.h>
13*09d40e0eSAntonio Nino Diaz 
147839a050SYann Gautier int stm32mp1_clk_probe(void);
157839a050SYann Gautier int stm32mp1_clk_init(void);
167839a050SYann Gautier bool stm32mp1_clk_is_enabled(unsigned long id);
177839a050SYann Gautier int stm32mp1_clk_enable(unsigned long id);
187839a050SYann Gautier int stm32mp1_clk_disable(unsigned long id);
197839a050SYann Gautier unsigned long stm32mp1_clk_get_rate(unsigned long id);
207839a050SYann Gautier void stm32mp1_stgen_increment(unsigned long long offset_in_ms);
217839a050SYann Gautier 
227839a050SYann Gautier static inline uint32_t get_timer(uint32_t base)
237839a050SYann Gautier {
247839a050SYann Gautier 	if (base == 0U) {
257839a050SYann Gautier 		return (uint32_t)(~read_cntpct_el0());
267839a050SYann Gautier 	}
277839a050SYann Gautier 
287839a050SYann Gautier 	return base - (uint32_t)(~read_cntpct_el0());
297839a050SYann Gautier }
307839a050SYann Gautier 
31c3cf06f1SAntonio Nino Diaz #endif /* STM32MP1_CLK_H */
32