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