]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_M33F_NXP_LPC55S69_MCUXpresso/NXP_Code/drivers/fsl_reset.h
commit 9f316c246baafa15c542a5aea81a94f26e3d6507
[freertos] / FreeRTOS / Demo / CORTEX_MPU_M33F_NXP_LPC55S69_MCUXpresso / NXP_Code / drivers / fsl_reset.h
1 /*\r
2  * Copyright (c) 2016, Freescale Semiconductor, Inc.\r
3  * Copyright 2016, NXP\r
4  * All rights reserved.\r
5  *\r
6  * SPDX-License-Identifier: BSD-3-Clause\r
7  */\r
8 \r
9 #ifndef _FSL_RESET_H_\r
10 #define _FSL_RESET_H_\r
11 \r
12 #include <assert.h>\r
13 #include <stdbool.h>\r
14 #include <stdint.h>\r
15 #include <string.h>\r
16 #include "fsl_device_registers.h"\r
17 \r
18 /*!\r
19  * @addtogroup ksdk_common\r
20  * @{\r
21  */\r
22 \r
23 /*******************************************************************************\r
24  * Definitions\r
25  ******************************************************************************/\r
26 \r
27 /*! @name Driver version */\r
28 /*@{*/\r
29 /*! @brief reset driver version 2.0.2. */\r
30 #define FSL_RESET_DRIVER_VERSION (MAKE_VERSION(2, 0, 2))\r
31 /*@}*/\r
32 \r
33 /*!\r
34  * @brief Enumeration for peripheral reset control bits\r
35  *\r
36  * Defines the enumeration for peripheral reset control bits in PRESETCTRL/ASYNCPRESETCTRL registers\r
37  */\r
38 typedef enum _SYSCON_RSTn\r
39 {\r
40     kROM_RST_SHIFT_RSTn     = 0 | 1U,  /**< ROM reset control */\r
41     kSRAM1_RST_SHIFT_RSTn   = 0 | 3U,  /**< SRAM1 reset control */\r
42     kSRAM2_RST_SHIFT_RSTn   = 0 | 4U,  /**< SRAM2 reset control */\r
43     kSRAM3_RST_SHIFT_RSTn   = 0 | 5U,  /**< SRAM3 reset control */\r
44     kSRAM4_RST_SHIFT_RSTn   = 0 | 6U,  /**< SRAM4 reset control */\r
45     kFLASH_RST_SHIFT_RSTn   = 0 | 7U,  /**< Flash controller reset control */\r
46     kFMC_RST_SHIFT_RSTn     = 0 | 8U,  /**< Flash accelerator reset control */\r
47     kSPIFI_RST_SHIFT_RSTn   = 0 | 10U, /**< SPIFI reset control */\r
48     kMUX0_RST_SHIFT_RSTn    = 0 | 11U, /**< Input mux0 reset control */\r
49     kIOCON_RST_SHIFT_RSTn   = 0 | 13U, /**< IOCON reset control */\r
50     kGPIO0_RST_SHIFT_RSTn   = 0 | 14U, /**< GPIO0 reset control */\r
51     kGPIO1_RST_SHIFT_RSTn   = 0 | 15U, /**< GPIO1 reset control */\r
52     kGPIO2_RST_SHIFT_RSTn   = 0 | 16U, /**< GPIO2 reset control */\r
53     kGPIO3_RST_SHIFT_RSTn   = 0 | 17U, /**< GPIO3 reset control */\r
54     kPINT_RST_SHIFT_RSTn    = 0 | 18U, /**< Pin interrupt (PINT) reset control */\r
55     kGINT_RST_SHIFT_RSTn    = 0 | 19U, /**< Grouped interrupt (PINT) reset control. */\r
56     kDMA0_RST_SHIFT_RSTn    = 0 | 20U, /**< DMA reset control */\r
57     kCRC_RST_SHIFT_RSTn     = 0 | 21U, /**< CRC reset control */\r
58     kWWDT_RST_SHIFT_RSTn    = 0 | 22U, /**< Watchdog timer reset control */\r
59     kRTC_RST_SHIFT_RSTn     = 0 | 23U, /**< RTC reset control */\r
60     kMAILBOX_RST_SHIFT_RSTn = 0 | 26U, /**< Mailbox reset control */\r
61     kADC0_RST_SHIFT_RSTn    = 0 | 27U, /**< ADC0 reset control */\r
62 \r
63     kMRT_RST_SHIFT_RSTn      = 65536 | 0U,  /**< Multi-rate timer (MRT) reset control */\r
64     kOSTIMER0_RST_SHIFT_RSTn = 65536 | 1U,  /**< OSTimer0 reset control */\r
65     kSCT0_RST_SHIFT_RSTn     = 65536 | 2U,  /**< SCTimer/PWM 0 (SCT0) reset control */\r
66     kSCTIPU_RST_SHIFT_RSTn   = 65536 | 6U,  /**< SCTIPU reset control */\r
67     kUTICK_RST_SHIFT_RSTn    = 65536 | 10U, /**< Micro-tick timer reset control */\r
68     kFC0_RST_SHIFT_RSTn      = 65536 | 11U, /**< Flexcomm Interface 0 reset control */\r
69     kFC1_RST_SHIFT_RSTn      = 65536 | 12U, /**< Flexcomm Interface 1 reset control */\r
70     kFC2_RST_SHIFT_RSTn      = 65536 | 13U, /**< Flexcomm Interface 2 reset control */\r
71     kFC3_RST_SHIFT_RSTn      = 65536 | 14U, /**< Flexcomm Interface 3 reset control */\r
72     kFC4_RST_SHIFT_RSTn      = 65536 | 15U, /**< Flexcomm Interface 4 reset control */\r
73     kFC5_RST_SHIFT_RSTn      = 65536 | 16U, /**< Flexcomm Interface 5 reset control */\r
74     kFC6_RST_SHIFT_RSTn      = 65536 | 17U, /**< Flexcomm Interface 6 reset control */\r
75     kFC7_RST_SHIFT_RSTn      = 65536 | 18U, /**< Flexcomm Interface 7 reset control */\r
76     kCTIMER2_RST_SHIFT_RSTn  = 65536 | 22U, /**< CTimer 2 reset control */\r
77     kUSB0D_RST_SHIFT_RSTn    = 65536 | 25U, /**< USB0 Device reset control */\r
78     kCTIMER0_RST_SHIFT_RSTn  = 65536 | 26U, /**< CTimer 0 reset control */\r
79     kCTIMER1_RST_SHIFT_RSTn  = 65536 | 27U, /**< CTimer 1 reset control */\r
80     kPVT_RST_SHIFT_RSTn      = 65536 | 28U, /**< PVT reset control */\r
81     kEZHA_RST_SHIFT_RSTn     = 65536 | 30U, /**< EZHA reset control */\r
82     kEZHB_RST_SHIFT_RSTn     = 65536 | 31U, /**< EZHB reset control */\r
83 \r
84     kDMA1_RST_SHIFT_RSTn       = 131072 | 1U,  /**< DMA1 reset control */\r
85     kCMP_RST_SHIFT_RSTn        = 131072 | 2U,  /**< CMP reset control */\r
86     kSDIO_RST_SHIFT_RSTn       = 131072 | 3U,  /**< SDIO reset control */\r
87     kUSB1H_RST_SHIFT_RSTn      = 131072 | 4U,  /**< USBHS Host reset control */\r
88     kUSB1D_RST_SHIFT_RSTn      = 131072 | 5U,  /**< USBHS Device reset control */\r
89     kUSB1RAM_RST_SHIFT_RSTn    = 131072 | 6U,  /**< USB RAM reset control */\r
90     kUSB1_RST_SHIFT_RSTn       = 131072 | 7U,  /**< USBHS reset control */\r
91     kFREQME_RST_SHIFT_RSTn     = 131072 | 8U,  /**< FREQME reset control */\r
92     kGPIO4_RST_SHIFT_RSTn      = 131072 | 9U,  /**< GPIO4 reset control */\r
93     kGPIO5_RST_SHIFT_RSTn      = 131072 | 10U, /**< GPIO5 reset control */\r
94     kAES_RST_SHIFT_RSTn        = 131072 | 11U, /**< AES reset control */\r
95     kOTP_RST_SHIFT_RSTn        = 131072 | 12U, /**< OTP reset control */\r
96     kRNG_RST_SHIFT_RSTn        = 131072 | 13U, /**< RNG  reset control */\r
97     kMUX1_RST_SHIFT_RSTn       = 131072 | 14U, /**< Input mux1 reset control */\r
98     kUSB0HMR_RST_SHIFT_RSTn    = 131072 | 16U, /**< USB0HMR reset control */\r
99     kUSB0HSL_RST_SHIFT_RSTn    = 131072 | 17U, /**< USB0HSL reset control */\r
100     kHASHCRYPT_RST_SHIFT_RSTn  = 131072 | 18U, /**< HASHCRYPT reset control */\r
101     kPOWERQUAD_RST_SHIFT_RSTn  = 131072 | 19U, /**< PowerQuad reset control */\r
102     kPLULUT_RST_SHIFT_RSTn     = 131072 | 20U, /**< PLU LUT reset control */\r
103     kCTIMER3_RST_SHIFT_RSTn    = 131072 | 21U, /**< CTimer 3 reset control */\r
104     kCTIMER4_RST_SHIFT_RSTn    = 131072 | 22U, /**< CTimer 4 reset control */\r
105     kPUF_RST_SHIFT_RSTn        = 131072 | 23U, /**< PUF reset control */\r
106     kCASPER_RST_SHIFT_RSTn     = 131072 | 24U, /**< CASPER reset control */\r
107     kCAP0_RST_SHIFT_RSTn       = 131072 | 25U, /**< CASPER reset control */\r
108     kOSTIMER1_RST_SHIFT_RSTn   = 131072 | 26U, /**< OSTIMER1 reset control */\r
109     kANALOGCTL_RST_SHIFT_RSTn  = 131072 | 27U, /**< ANALOG_CTL reset control */\r
110     kHSLSPI_RST_SHIFT_RSTn     = 131072 | 28U, /**< HS LSPI reset control */\r
111     kGPIOSEC_RST_SHIFT_RSTn    = 131072 | 29U, /**< GPIO Secure reset control */\r
112     kGPIOSECINT_RST_SHIFT_RSTn = 131072 | 30U, /**< GPIO Secure int reset control */\r
113 } SYSCON_RSTn_t;\r
114 \r
115 /** Array initializers with peripheral reset bits **/\r
116 #define ADC_RSTS             \\r
117     {                        \\r
118         kADC0_RST_SHIFT_RSTn \\r
119     } /* Reset bits for ADC peripheral */\r
120 #define AES_RSTS            \\r
121     {                       \\r
122         kAES_RST_SHIFT_RSTn \\r
123     } /* Reset bits for AES peripheral */\r
124 #define CRC_RSTS            \\r
125     {                       \\r
126         kCRC_RST_SHIFT_RSTn \\r
127     } /* Reset bits for CRC peripheral */\r
128 #define CTIMER_RSTS                                                                                         \\r
129     {                                                                                                       \\r
130         kCTIMER0_RST_SHIFT_RSTn, kCTIMER1_RST_SHIFT_RSTn, kCTIMER2_RST_SHIFT_RSTn, kCTIMER3_RST_SHIFT_RSTn, \\r
131             kCTIMER4_RST_SHIFT_RSTn                                                                         \\r
132     } /* Reset bits for CTIMER peripheral */\r
133 #define DMA_RSTS_N                                 \\r
134     {                                              \\r
135         kDMA0_RST_SHIFT_RSTn, kDMA1_RST_SHIFT_RSTn \\r
136     } /* Reset bits for DMA peripheral */\r
137 \r
138 #define FLEXCOMM_RSTS                                                                                            \\r
139     {                                                                                                            \\r
140         kFC0_RST_SHIFT_RSTn, kFC1_RST_SHIFT_RSTn, kFC2_RST_SHIFT_RSTn, kFC3_RST_SHIFT_RSTn, kFC4_RST_SHIFT_RSTn, \\r
141             kFC5_RST_SHIFT_RSTn, kFC6_RST_SHIFT_RSTn, kFC7_RST_SHIFT_RSTn, kHSLSPI_RST_SHIFT_RSTn                \\r
142     } /* Reset bits for FLEXCOMM peripheral */\r
143 #define GINT_RSTS                                  \\r
144     {                                              \\r
145         kGINT_RST_SHIFT_RSTn, kGINT_RST_SHIFT_RSTn \\r
146     } /* Reset bits for GINT peripheral. GINT0 & GINT1 share same slot */\r
147 #define GPIO_RSTS_N                                                                                 \\r
148     {                                                                                               \\r
149         kGPIO0_RST_SHIFT_RSTn, kGPIO1_RST_SHIFT_RSTn, kGPIO2_RST_SHIFT_RSTn, kGPIO3_RST_SHIFT_RSTn, \\r
150             kGPIO4_RST_SHIFT_RSTn, kGPIO5_RST_SHIFT_RSTn                                            \\r
151     } /* Reset bits for GPIO peripheral */\r
152 #define INPUTMUX_RSTS                              \\r
153     {                                              \\r
154         kMUX0_RST_SHIFT_RSTn, kMUX1_RST_SHIFT_RSTn \\r
155     } /* Reset bits for INPUTMUX peripheral */\r
156 #define IOCON_RSTS            \\r
157     {                         \\r
158         kIOCON_RST_SHIFT_RSTn \\r
159     } /* Reset bits for IOCON peripheral */\r
160 #define FLASH_RSTS                                 \\r
161     {                                              \\r
162         kFLASH_RST_SHIFT_RSTn, kFMC_RST_SHIFT_RSTn \\r
163     } /* Reset bits for Flash peripheral */\r
164 #define MRT_RSTS            \\r
165     {                       \\r
166         kMRT_RST_SHIFT_RSTn \\r
167     } /* Reset bits for MRT peripheral */\r
168 #define OTP_RSTS            \\r
169     {                       \\r
170         kOTP_RST_SHIFT_RSTn \\r
171     } /* Reset bits for OTP peripheral */\r
172 #define PINT_RSTS            \\r
173     {                        \\r
174         kPINT_RST_SHIFT_RSTn \\r
175     } /* Reset bits for PINT peripheral */\r
176 #define RNG_RSTS            \\r
177     {                       \\r
178         kRNG_RST_SHIFT_RSTn \\r
179     } /* Reset bits for RNG peripheral */\r
180 #define SDIO_RST             \\r
181     {                        \\r
182         kSDIO_RST_SHIFT_RSTn \\r
183     } /* Reset bits for SDIO peripheral */\r
184 #define SCT_RSTS             \\r
185     {                        \\r
186         kSCT0_RST_SHIFT_RSTn \\r
187     } /* Reset bits for SCT peripheral */\r
188 #define SPIFI_RSTS            \\r
189     {                         \\r
190         kSPIFI_RST_SHIFT_RSTn \\r
191     } /* Reset bits for SPIFI peripheral */\r
192 #define USB0D_RST             \\r
193     {                         \\r
194         kUSB0D_RST_SHIFT_RSTn \\r
195     } /* Reset bits for USB0D peripheral */\r
196 #define USB0HMR_RST             \\r
197     {                           \\r
198         kUSB0HMR_RST_SHIFT_RSTn \\r
199     } /* Reset bits for USB0HMR peripheral */\r
200 #define USB0HSL_RST             \\r
201     {                           \\r
202         kUSB0HSL_RST_SHIFT_RSTn \\r
203     } /* Reset bits for USB0HSL peripheral */\r
204 #define USB1H_RST             \\r
205     {                         \\r
206         kUSB1H_RST_SHIFT_RSTn \\r
207     } /* Reset bits for USB1H peripheral */\r
208 #define USB1D_RST             \\r
209     {                         \\r
210         kUSB1D_RST_SHIFT_RSTn \\r
211     } /* Reset bits for USB1D peripheral */\r
212 #define USB1RAM_RST             \\r
213     {                           \\r
214         kUSB1RAM_RST_SHIFT_RSTn \\r
215     } /* Reset bits for USB1RAM peripheral */\r
216 #define UTICK_RSTS            \\r
217     {                         \\r
218         kUTICK_RST_SHIFT_RSTn \\r
219     } /* Reset bits for UTICK peripheral */\r
220 #define WWDT_RSTS            \\r
221     {                        \\r
222         kWWDT_RST_SHIFT_RSTn \\r
223     } /* Reset bits for WWDT peripheral */\r
224 #define CAPT_RSTS_N          \\r
225     {                        \\r
226         kCAP0_RST_SHIFT_RSTn \\r
227     } /* Reset bits for CAPT peripheral */\r
228 #define PLU_RSTS_N             \\r
229     {                          \\r
230         kPLULUT_RST_SHIFT_RSTn \\r
231     } /* Reset bits for PLU peripheral */\r
232 #define OSTIMER_RSTS             \\r
233     {                            \\r
234         kOSTIMER0_RST_SHIFT_RSTn \\r
235     } /* Reset bits for OSTIMER peripheral */\r
236 typedef SYSCON_RSTn_t reset_ip_name_t;\r
237 \r
238 /*******************************************************************************\r
239  * API\r
240  ******************************************************************************/\r
241 #if defined(__cplusplus)\r
242 extern "C" {\r
243 #endif\r
244 \r
245 /*!\r
246  * @brief Assert reset to peripheral.\r
247  *\r
248  * Asserts reset signal to specified peripheral module.\r
249  *\r
250  * @param peripheral Assert reset to this peripheral. The enum argument contains encoding of reset register\r
251  *                   and reset bit position in the reset register.\r
252  */\r
253 void RESET_SetPeripheralReset(reset_ip_name_t peripheral);\r
254 \r
255 /*!\r
256  * @brief Clear reset to peripheral.\r
257  *\r
258  * Clears reset signal to specified peripheral module, allows it to operate.\r
259  *\r
260  * @param peripheral Clear reset to this peripheral. The enum argument contains encoding of reset register\r
261  *                   and reset bit position in the reset register.\r
262  */\r
263 void RESET_ClearPeripheralReset(reset_ip_name_t peripheral);\r
264 \r
265 /*!\r
266  * @brief Reset peripheral module.\r
267  *\r
268  * Reset peripheral module.\r
269  *\r
270  * @param peripheral Peripheral to reset. The enum argument contains encoding of reset register\r
271  *                   and reset bit position in the reset register.\r
272  */\r
273 void RESET_PeripheralReset(reset_ip_name_t peripheral);\r
274 \r
275 #if defined(__cplusplus)\r
276 }\r
277 #endif\r
278 \r
279 /*! @} */\r
280 \r
281 #endif /* _FSL_RESET_H_ */\r