xref: /rk3399_ARM-atf/include/drivers/st/stm32mp_reset.h (revision 45c70e68673b4fd39c301725e63c03d0846339c5)
13f9c9784SYann Gautier /*
23f9c9784SYann Gautier  * Copyright (c) 2018-2019, STMicroelectronics - All Rights Reserved
33f9c9784SYann Gautier  *
43f9c9784SYann Gautier  * SPDX-License-Identifier: BSD-3-Clause
53f9c9784SYann Gautier  */
63f9c9784SYann Gautier 
73f9c9784SYann Gautier #ifndef STM32MP_RESET_H
83f9c9784SYann Gautier #define STM32MP_RESET_H
93f9c9784SYann Gautier 
103f9c9784SYann Gautier #include <stdint.h>
113f9c9784SYann Gautier 
12*45c70e68SEtienne Carriere /*
13*45c70e68SEtienne Carriere  * Assert target reset, if @to_us non null, wait until reset is asserted
14*45c70e68SEtienne Carriere  *
15*45c70e68SEtienne Carriere  * @reset_id: Reset controller ID
16*45c70e68SEtienne Carriere  * @to_us: Timeout in microsecond, or 0 if not waiting
17*45c70e68SEtienne Carriere  * Return 0 on success and -ETIMEDOUT if waiting and timeout expired
18*45c70e68SEtienne Carriere  */
19*45c70e68SEtienne Carriere int stm32mp_reset_assert(uint32_t reset_id, unsigned int to_us);
20*45c70e68SEtienne Carriere 
21*45c70e68SEtienne Carriere /*
22*45c70e68SEtienne Carriere  * Enable reset control for target resource
23*45c70e68SEtienne Carriere  *
24*45c70e68SEtienne Carriere  * @reset_id: Reset controller ID
25*45c70e68SEtienne Carriere  */
26*45c70e68SEtienne Carriere static inline void stm32mp_reset_set(uint32_t reset_id)
27*45c70e68SEtienne Carriere {
28*45c70e68SEtienne Carriere 	(void)stm32mp_reset_assert(reset_id, 0U);
29*45c70e68SEtienne Carriere }
30*45c70e68SEtienne Carriere 
31*45c70e68SEtienne Carriere /*
32*45c70e68SEtienne Carriere  * Deassert target reset, if @to_us non null, wait until reset is deasserted
33*45c70e68SEtienne Carriere  *
34*45c70e68SEtienne Carriere  * @reset_id: Reset controller ID
35*45c70e68SEtienne Carriere  * @to_us: Timeout in microsecond, or 0 if not waiting
36*45c70e68SEtienne Carriere  * Return 0 on success and -ETIMEDOUT if waiting and timeout expired
37*45c70e68SEtienne Carriere  */
38*45c70e68SEtienne Carriere int stm32mp_reset_deassert(uint32_t reset_id, unsigned int to_us);
39*45c70e68SEtienne Carriere 
40*45c70e68SEtienne Carriere /*
41*45c70e68SEtienne Carriere  * Release reset control for target resource
42*45c70e68SEtienne Carriere  *
43*45c70e68SEtienne Carriere  * @reset_id: Reset controller ID
44*45c70e68SEtienne Carriere  */
45*45c70e68SEtienne Carriere static inline void stm32mp_reset_release(uint32_t reset_id)
46*45c70e68SEtienne Carriere {
47*45c70e68SEtienne Carriere 	(void)stm32mp_reset_deassert(reset_id, 0U);
48*45c70e68SEtienne Carriere }
493f9c9784SYann Gautier 
503f9c9784SYann Gautier #endif /* STM32MP_RESET_H */
51