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 */ 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 */ 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