xref: /rk3399_ARM-atf/include/drivers/st/stm32mp_reset.h (revision f3eaa1bb12e57621b9766283695a4b5f0ecb9931)
13f9c9784SYann Gautier /*
2*d91d10abSLionel Debieve  * Copyright (c) 2018-2024, 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 
1245c70e68SEtienne Carriere /*
1345c70e68SEtienne Carriere  * Assert target reset, if @to_us non null, wait until reset is asserted
1445c70e68SEtienne Carriere  *
1545c70e68SEtienne Carriere  * @reset_id: Reset controller ID
1645c70e68SEtienne Carriere  * @to_us: Timeout in microsecond, or 0 if not waiting
1745c70e68SEtienne Carriere  * Return 0 on success and -ETIMEDOUT if waiting and timeout expired
1845c70e68SEtienne Carriere  */
1945c70e68SEtienne Carriere int stm32mp_reset_assert(uint32_t reset_id, unsigned int to_us);
2045c70e68SEtienne Carriere 
2145c70e68SEtienne Carriere /*
2245c70e68SEtienne Carriere  * Enable reset control for target resource
2345c70e68SEtienne Carriere  *
2445c70e68SEtienne Carriere  * @reset_id: Reset controller ID
2545c70e68SEtienne Carriere  */
stm32mp_reset_set(uint32_t reset_id)2645c70e68SEtienne Carriere static inline void stm32mp_reset_set(uint32_t reset_id)
2745c70e68SEtienne Carriere {
2845c70e68SEtienne Carriere 	(void)stm32mp_reset_assert(reset_id, 0U);
2945c70e68SEtienne Carriere }
3045c70e68SEtienne Carriere 
3145c70e68SEtienne Carriere /*
3245c70e68SEtienne Carriere  * Deassert target reset, if @to_us non null, wait until reset is deasserted
3345c70e68SEtienne Carriere  *
3445c70e68SEtienne Carriere  * @reset_id: Reset controller ID
3545c70e68SEtienne Carriere  * @to_us: Timeout in microsecond, or 0 if not waiting
3645c70e68SEtienne Carriere  * Return 0 on success and -ETIMEDOUT if waiting and timeout expired
3745c70e68SEtienne Carriere  */
3845c70e68SEtienne Carriere int stm32mp_reset_deassert(uint32_t reset_id, unsigned int to_us);
3945c70e68SEtienne Carriere 
4045c70e68SEtienne Carriere /*
4145c70e68SEtienne Carriere  * Release reset control for target resource
4245c70e68SEtienne Carriere  *
4345c70e68SEtienne Carriere  * @reset_id: Reset controller ID
4445c70e68SEtienne Carriere  */
stm32mp_reset_release(uint32_t reset_id)4545c70e68SEtienne Carriere static inline void stm32mp_reset_release(uint32_t reset_id)
4645c70e68SEtienne Carriere {
4745c70e68SEtienne Carriere 	(void)stm32mp_reset_deassert(reset_id, 0U);
4845c70e68SEtienne Carriere }
493f9c9784SYann Gautier 
50*d91d10abSLionel Debieve /*
51*d91d10abSLionel Debieve  * Manage system reset control
52*d91d10abSLionel Debieve  */
53*d91d10abSLionel Debieve void __dead2 stm32mp_system_reset(void);
54*d91d10abSLionel Debieve 
553f9c9784SYann Gautier #endif /* STM32MP_RESET_H */
56