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