2 * Copyright (c) 2016, Freescale Semiconductor, Inc.
\r
3 * Copyright 2016, NXP
\r
4 * All rights reserved.
\r
6 * SPDX-License-Identifier: BSD-3-Clause
\r
9 #include "fsl_common.h"
\r
10 #include "fsl_reset.h"
\r
12 /*******************************************************************************
\r
14 ******************************************************************************/
\r
15 /* Component ID definition, used by tools. */
\r
16 #ifndef FSL_COMPONENT_ID
\r
17 #define FSL_COMPONENT_ID "platform.drivers.reset"
\r
20 /*******************************************************************************
\r
22 ******************************************************************************/
\r
24 /*******************************************************************************
\r
26 ******************************************************************************/
\r
28 /*******************************************************************************
\r
30 ******************************************************************************/
\r
32 #if (defined(FSL_FEATURE_SOC_SYSCON_COUNT) && (FSL_FEATURE_SOC_SYSCON_COUNT > 0))
\r
35 * brief Assert reset to peripheral.
\r
37 * Asserts reset signal to specified peripheral module.
\r
39 * param peripheral Assert reset to this peripheral. The enum argument contains encoding of reset register
\r
40 * and reset bit position in the reset register.
\r
42 void RESET_SetPeripheralReset(reset_ip_name_t peripheral)
\r
44 const uint32_t regIndex = ((uint32_t)peripheral & 0xFFFF0000u) >> 16;
\r
45 const uint32_t bitPos = ((uint32_t)peripheral & 0x0000FFFFu);
\r
46 const uint32_t bitMask = 1UL << bitPos;
\r
48 assert(bitPos < 32u);
\r
50 /* reset register is in SYSCON */
\r
52 SYSCON->PRESETCTRLSET[regIndex] = bitMask;
\r
53 /* wait until it reads 0b1 */
\r
54 while (0u == (SYSCON->PRESETCTRLX[regIndex] & bitMask))
\r
60 * brief Clear reset to peripheral.
\r
62 * Clears reset signal to specified peripheral module, allows it to operate.
\r
64 * param peripheral Clear reset to this peripheral. The enum argument contains encoding of reset register
\r
65 * and reset bit position in the reset register.
\r
67 void RESET_ClearPeripheralReset(reset_ip_name_t peripheral)
\r
69 const uint32_t regIndex = ((uint32_t)peripheral & 0xFFFF0000u) >> 16;
\r
70 const uint32_t bitPos = ((uint32_t)peripheral & 0x0000FFFFu);
\r
71 const uint32_t bitMask = 1UL << bitPos;
\r
73 assert(bitPos < 32u);
\r
75 /* reset register is in SYSCON */
\r
78 SYSCON->PRESETCTRLCLR[regIndex] = bitMask;
\r
79 /* wait until it reads 0b0 */
\r
80 while (bitMask == (SYSCON->PRESETCTRLX[regIndex] & bitMask))
\r
86 * brief Reset peripheral module.
\r
88 * Reset peripheral module.
\r
90 * param peripheral Peripheral to reset. The enum argument contains encoding of reset register
\r
91 * and reset bit position in the reset register.
\r
93 void RESET_PeripheralReset(reset_ip_name_t peripheral)
\r
95 RESET_SetPeripheralReset(peripheral);
\r
96 RESET_ClearPeripheralReset(peripheral);
\r
99 #endif /* FSL_FEATURE_SOC_SYSCON_COUNT || FSL_FEATURE_SOC_ASYNC_SYSCON_COUNT */
\r