1*54fd6939SJiyong Park /*
2*54fd6939SJiyong Park * Copyright (c) 2018-2019, STMicroelectronics - All Rights Reserved
3*54fd6939SJiyong Park *
4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause
5*54fd6939SJiyong Park */
6*54fd6939SJiyong Park
7*54fd6939SJiyong Park #ifndef STM32MP_RESET_H
8*54fd6939SJiyong Park #define STM32MP_RESET_H
9*54fd6939SJiyong Park
10*54fd6939SJiyong Park #include <stdint.h>
11*54fd6939SJiyong Park
12*54fd6939SJiyong Park /*
13*54fd6939SJiyong Park * Assert target reset, if @to_us non null, wait until reset is asserted
14*54fd6939SJiyong Park *
15*54fd6939SJiyong Park * @reset_id: Reset controller ID
16*54fd6939SJiyong Park * @to_us: Timeout in microsecond, or 0 if not waiting
17*54fd6939SJiyong Park * Return 0 on success and -ETIMEDOUT if waiting and timeout expired
18*54fd6939SJiyong Park */
19*54fd6939SJiyong Park int stm32mp_reset_assert(uint32_t reset_id, unsigned int to_us);
20*54fd6939SJiyong Park
21*54fd6939SJiyong Park /*
22*54fd6939SJiyong Park * Enable reset control for target resource
23*54fd6939SJiyong Park *
24*54fd6939SJiyong Park * @reset_id: Reset controller ID
25*54fd6939SJiyong Park */
stm32mp_reset_set(uint32_t reset_id)26*54fd6939SJiyong Park static inline void stm32mp_reset_set(uint32_t reset_id)
27*54fd6939SJiyong Park {
28*54fd6939SJiyong Park (void)stm32mp_reset_assert(reset_id, 0U);
29*54fd6939SJiyong Park }
30*54fd6939SJiyong Park
31*54fd6939SJiyong Park /*
32*54fd6939SJiyong Park * Deassert target reset, if @to_us non null, wait until reset is deasserted
33*54fd6939SJiyong Park *
34*54fd6939SJiyong Park * @reset_id: Reset controller ID
35*54fd6939SJiyong Park * @to_us: Timeout in microsecond, or 0 if not waiting
36*54fd6939SJiyong Park * Return 0 on success and -ETIMEDOUT if waiting and timeout expired
37*54fd6939SJiyong Park */
38*54fd6939SJiyong Park int stm32mp_reset_deassert(uint32_t reset_id, unsigned int to_us);
39*54fd6939SJiyong Park
40*54fd6939SJiyong Park /*
41*54fd6939SJiyong Park * Release reset control for target resource
42*54fd6939SJiyong Park *
43*54fd6939SJiyong Park * @reset_id: Reset controller ID
44*54fd6939SJiyong Park */
stm32mp_reset_release(uint32_t reset_id)45*54fd6939SJiyong Park static inline void stm32mp_reset_release(uint32_t reset_id)
46*54fd6939SJiyong Park {
47*54fd6939SJiyong Park (void)stm32mp_reset_deassert(reset_id, 0U);
48*54fd6939SJiyong Park }
49*54fd6939SJiyong Park
50*54fd6939SJiyong Park #endif /* STM32MP_RESET_H */
51