]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_LPC54018_MCUXpresso/NXP_Code/drivers/fsl_reset.h
Add MPU demo project for LPC54018 board.
[freertos] / FreeRTOS / Demo / CORTEX_MPU_LPC54018_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  *\r
7  * SPDX-License-Identifier: BSD-3-Clause\r
8  */\r
9 \r
10 #ifndef _FSL_RESET_H_\r
11 #define _FSL_RESET_H_\r
12 \r
13 #include <assert.h>\r
14 #include <stdbool.h>\r
15 #include <stdint.h>\r
16 #include <string.h>\r
17 #include "fsl_device_registers.h"\r
18 \r
19 /*! @addtogroup reset */\r
20 /*! @{ */\r
21 \r
22 /*! @file */\r
23 \r
24 /*******************************************************************************\r
25  * Definitions\r
26  ******************************************************************************/\r
27 \r
28 /*! @name Driver version */\r
29 /*@{*/\r
30 /*! @brief reset driver version 2.0.1. */\r
31 #define FSL_RESET_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))\r
32 /*@}*/\r
33 \r
34 /*!\r
35  * @brief Enumeration for peripheral reset control bits\r
36  *\r
37  * Defines the enumeration for peripheral reset control bits in PRESETCTRL/ASYNCPRESETCTRL registers\r
38  */\r
39 typedef enum _SYSCON_RSTn\r
40 {\r
41     kSPIFI_RST_SHIFT_RSTn = 0 | 10U,         /**< SPIFI reset control */\r
42     kMUX_RST_SHIFT_RSTn = 0 | 11U,           /**< Input mux reset control */\r
43     kIOCON_RST_SHIFT_RSTn = 0 | 13U,         /**< IOCON reset control */\r
44     kGPIO0_RST_SHIFT_RSTn = 0 | 14U,         /**< GPIO0 reset control */\r
45     kGPIO1_RST_SHIFT_RSTn = 0 | 15U,         /**< GPIO1 reset control */\r
46     kGPIO2_RST_SHIFT_RSTn = 0 | 16U,         /**< GPIO2 reset control */\r
47     kGPIO3_RST_SHIFT_RSTn = 0 | 17U,         /**< GPIO3 reset control */\r
48     kPINT_RST_SHIFT_RSTn = 0 | 18U,          /**< Pin interrupt (PINT) reset control */\r
49     kGINT_RST_SHIFT_RSTn = 0 | 19U,          /**< Grouped interrupt (PINT) reset control. */\r
50     kDMA_RST_SHIFT_RSTn = 0 | 20U,           /**< DMA reset control */\r
51     kCRC_RST_SHIFT_RSTn = 0 | 21U,           /**< CRC reset control */\r
52     kWWDT_RST_SHIFT_RSTn = 0 | 22U,          /**< Watchdog timer reset control */\r
53     kADC0_RST_SHIFT_RSTn = 0 | 27U,          /**< ADC0 reset control */\r
54 \r
55     kMRT_RST_SHIFT_RSTn = 65536 | 0U,        /**< Multi-rate timer (MRT) reset control */\r
56     kSCT0_RST_SHIFT_RSTn = 65536 | 2U,       /**< SCTimer/PWM 0 (SCT0) reset control */\r
57     kMCAN0_RST_SHIFT_RSTn = 65536 | 7U,      /**< MCAN0 reset control */\r
58     kMCAN1_RST_SHIFT_RSTn = 65536 | 8U,      /**< MCAN1 reset control */\r
59     kUTICK_RST_SHIFT_RSTn = 65536 | 10U,     /**< Micro-tick timer reset control */\r
60     kFC0_RST_SHIFT_RSTn = 65536 | 11U,       /**< Flexcomm Interface 0 reset control */\r
61     kFC1_RST_SHIFT_RSTn = 65536 | 12U,       /**< Flexcomm Interface 1 reset control */\r
62     kFC2_RST_SHIFT_RSTn = 65536 | 13U,       /**< Flexcomm Interface 2 reset control */\r
63     kFC3_RST_SHIFT_RSTn = 65536 | 14U,       /**< Flexcomm Interface 3 reset control */\r
64     kFC4_RST_SHIFT_RSTn = 65536 | 15U,       /**< Flexcomm Interface 4 reset control */\r
65     kFC5_RST_SHIFT_RSTn = 65536 | 16U,       /**< Flexcomm Interface 5 reset control */\r
66     kFC6_RST_SHIFT_RSTn = 65536 | 17U,       /**< Flexcomm Interface 6 reset control */\r
67     kFC7_RST_SHIFT_RSTn = 65536 | 18U,       /**< Flexcomm Interface 7 reset control */\r
68     kDMIC_RST_SHIFT_RSTn = 65536 | 19U,      /**< Digital microphone interface reset control */\r
69     kCT32B2_RST_SHIFT_RSTn = 65536 | 22U,    /**< CT32B2 reset control */\r
70     kUSB0D_RST_SHIFT_RSTn = 65536 | 25U,     /**< USB0D reset control */\r
71     kCT32B0_RST_SHIFT_RSTn = 65536 | 26U,    /**< CT32B0 reset control */\r
72     kCT32B1_RST_SHIFT_RSTn = 65536 | 27U,    /**< CT32B1 reset control */\r
73 \r
74     kLCD_RST_SHIFT_RSTn = 131072 | 2U,       /**< LCD reset control */\r
75     kSDIO_RST_SHIFT_RSTn = 131072 | 3U,      /**< SDIO reset control */\r
76     kUSB1H_RST_SHIFT_RSTn = 131072 | 4U,     /**< USB1H reset control */\r
77     kUSB1D_RST_SHIFT_RSTn = 131072 | 5U,     /**< USB1D reset control */\r
78     kUSB1RAM_RST_SHIFT_RSTn = 131072 | 6U,   /**< USB1RAM reset control */\r
79     kEMC_RST_SHIFT_RSTn = 131072 | 7U,       /**< EMC reset control */\r
80     kETH_RST_SHIFT_RSTn = 131072 | 8U,       /**< ETH reset control */\r
81     kGPIO4_RST_SHIFT_RSTn = 131072 | 9U,     /**< GPIO4 reset control */\r
82     kGPIO5_RST_SHIFT_RSTn = 131072 | 10U,    /**< GPIO5 reset control */\r
83     kAES_RST_SHIFT_RSTn = 131072 | 11U,      /**< AES reset control */\r
84     kOTP_RST_SHIFT_RSTn = 131072 | 12U,      /**< OTP reset control */\r
85     kRNG_RST_SHIFT_RSTn = 131072 | 13U,      /**< RNG  reset control */\r
86     kFC8_RST_SHIFT_RSTn = 131072 | 14U,      /**< Flexcomm Interface 8 reset control */\r
87     kFC9_RST_SHIFT_RSTn = 131072 | 15U,      /**< Flexcomm Interface 9 reset control */\r
88     kUSB0HMR_RST_SHIFT_RSTn = 131072 | 16U,  /**< USB0HMR reset control */\r
89     kUSB0HSL_RST_SHIFT_RSTn = 131072 | 17U,  /**< USB0HSL reset control */\r
90     kSHA_RST_SHIFT_RSTn = 131072 | 18U,      /**< SHA reset control */\r
91     kSC0_RST_SHIFT_RSTn = 131072 | 19U,      /**< SC0 reset control */\r
92     kSC1_RST_SHIFT_RSTn = 131072 | 20U,      /**< SC1 reset control */\r
93     kFC10_RST_SHIFT_RSTn = 131072 | 21U,     /**< Flexcomm Interface 10 reset control */\r
94 \r
95     kCT32B3_RST_SHIFT_RSTn = 67108864 | 13U, /**< CT32B3 reset control */\r
96     kCT32B4_RST_SHIFT_RSTn = 67108864 | 14U, /**< CT32B4 reset control */\r
97 } SYSCON_RSTn_t;\r
98 \r
99 /** Array initializers with peripheral reset bits **/\r
100 #define ADC_RSTS             \\r
101     {                        \\r
102         kADC0_RST_SHIFT_RSTn \\r
103     } /* Reset bits for ADC peripheral */\r
104 #define AES_RSTS             \\r
105     {                        \\r
106         kAES_RST_SHIFT_RSTn  \\r
107     } /* Reset bits for AES peripheral */\r
108 #define CRC_RSTS            \\r
109     {                       \\r
110         kCRC_RST_SHIFT_RSTn \\r
111     } /* Reset bits for CRC peripheral */\r
112 #define CTIMER_RSTS                                                                                     \\r
113     {                                                                                                   \\r
114         kCT32B0_RST_SHIFT_RSTn, kCT32B1_RST_SHIFT_RSTn, kCT32B2_RST_SHIFT_RSTn, kCT32B3_RST_SHIFT_RSTn, \\r
115             kCT32B4_RST_SHIFT_RSTn                                                                      \\r
116     } /* Reset bits for CTIMER peripheral */\r
117 #define DMA_RSTS_N            \\r
118     {                       \\r
119         kDMA_RST_SHIFT_RSTn \\r
120     } /* Reset bits for DMA peripheral */\r
121 #define DMIC_RSTS            \\r
122     {                        \\r
123         kDMIC_RST_SHIFT_RSTn \\r
124     } /* Reset bits for DMIC peripheral */\r
125 #define EMC_RSTS             \\r
126     {                        \\r
127         kEMC_RST_SHIFT_RSTn  \\r
128     } /* Reset bits for EMC peripheral */\r
129 #define ETH_RST              \\r
130     {                        \\r
131         kETH_RST_SHIFT_RSTn  \\r
132     } /* Reset bits for EMC peripheral */\r
133 #define FLEXCOMM_RSTS                                                                                            \\r
134     {                                                                                                            \\r
135         kFC0_RST_SHIFT_RSTn, kFC1_RST_SHIFT_RSTn, kFC2_RST_SHIFT_RSTn, kFC3_RST_SHIFT_RSTn, kFC4_RST_SHIFT_RSTn, \\r
136             kFC5_RST_SHIFT_RSTn, kFC6_RST_SHIFT_RSTn, kFC7_RST_SHIFT_RSTn, kFC8_RST_SHIFT_RSTn, kFC9_RST_SHIFT_RSTn, kFC9_RST_SHIFT_RSTn   \\r
137     } /* Reset bits for FLEXCOMM peripheral */\r
138 #define GINT_RSTS                                  \\r
139     {                                              \\r
140         kGINT_RST_SHIFT_RSTn, kGINT_RST_SHIFT_RSTn \\r
141     } /* Reset bits for GINT peripheral. GINT0 & GINT1 share same slot */\r
142 #define GPIO_RSTS_N                                    \\r
143     {                                                \\r
144         kGPIO0_RST_SHIFT_RSTn, kGPIO1_RST_SHIFT_RSTn, kGPIO2_RST_SHIFT_RSTn, kGPIO3_RST_SHIFT_RSTn,  \\r
145         kGPIO4_RST_SHIFT_RSTn, kGPIO5_RST_SHIFT_RSTn                                                 \\r
146     } /* Reset bits for GPIO peripheral */\r
147 #define INPUTMUX_RSTS       \\r
148     {                       \\r
149         kMUX_RST_SHIFT_RSTn \\r
150     } /* Reset bits for INPUTMUX peripheral */\r
151 #define IOCON_RSTS            \\r
152     {                         \\r
153         kIOCON_RST_SHIFT_RSTn \\r
154     } /* Reset bits for IOCON peripheral */\r
155 #define FLASH_RSTS                                 \\r
156     {                                              \\r
157         kFLASH_RST_SHIFT_RSTn, kFMC_RST_SHIFT_RSTn \\r
158     } /* Reset bits for Flash peripheral */\r
159 #define LCD_RSTS                                 \\r
160     {                                            \\r
161         kLCD_RST_SHIFT_RSTn                      \\r
162     } /* Reset bits for LCD peripheral */\r
163 #define MRT_RSTS            \\r
164     {                       \\r
165         kMRT_RST_SHIFT_RSTn \\r
166     } /* Reset bits for MRT peripheral */\r
167 #define MCAN_RSTS                                   \\r
168     {                                               \\r
169         kMCAN0_RST_SHIFT_RSTn,kMCAN1_RST_SHIFT_RSTn \\r
170     } /* Reset bits for MCAN0&MACN1 peripheral */\r
171 #define OTP_RSTS            \\r
172     {                       \\r
173         kOTP_RST_SHIFT_RSTn \\r
174     } /* Reset bits for OTP peripheral */\r
175 #define PINT_RSTS            \\r
176     {                        \\r
177         kPINT_RST_SHIFT_RSTn \\r
178     } /* Reset bits for PINT peripheral */\r
179 #define RNG_RSTS             \\r
180     {                        \\r
181         kRNG_RST_SHIFT_RSTn  \\r
182     } /* Reset bits for RNG peripheral */\r
183 #define SDIO_RST             \\r
184     {                        \\r
185         kSDIO_RST_SHIFT_RSTn \\r
186     } /* Reset bits for SDIO peripheral */\r
187 #define SCT_RSTS             \\r
188     {                        \\r
189         kSCT0_RST_SHIFT_RSTn \\r
190     } /* Reset bits for SCT peripheral */\r
191 #define SHA_RST              \\r
192     {                        \\r
193         kSHA_RST_SHIFT_RSTn  \\r
194     } /* Reset bits for SHA peripheral */\r
195 #define SPIFI_RSTS            \\r
196     {                         \\r
197         kSPIFI_RST_SHIFT_RSTn \\r
198     } /* Reset bits for SPIFI peripheral */\r
199 #define USB0D_RST             \\r
200     {                         \\r
201         kUSB0D_RST_SHIFT_RSTn \\r
202     } /* Reset bits for USB0D peripheral */\r
203 #define USB0HMR_RST             \\r
204     {                           \\r
205         kUSB0HMR_RST_SHIFT_RSTn \\r
206     } /* Reset bits for USB0HMR peripheral */\r
207 #define USB0HSL_RST             \\r
208     {                           \\r
209         kUSB0HSL_RST_SHIFT_RSTn \\r
210     } /* Reset bits for USB0HSL peripheral */\r
211 #define USB1H_RST             \\r
212     {                         \\r
213         kUSB1H_RST_SHIFT_RSTn \\r
214     } /* Reset bits for USB1H peripheral */\r
215 #define USB1D_RST             \\r
216     {                         \\r
217         kUSB1D_RST_SHIFT_RSTn \\r
218     } /* Reset bits for USB1D peripheral */\r
219 #define USB1RAM_RST             \\r
220     {                           \\r
221         kUSB1RAM_RST_SHIFT_RSTn \\r
222     } /* Reset bits for USB1RAM peripheral */\r
223 #define UTICK_RSTS            \\r
224     {                         \\r
225         kUTICK_RST_SHIFT_RSTn \\r
226     } /* Reset bits for UTICK peripheral */\r
227 #define WWDT_RSTS            \\r
228     {                        \\r
229         kWWDT_RST_SHIFT_RSTn \\r
230     } /* Reset bits for WWDT peripheral */\r
231 \r
232 typedef SYSCON_RSTn_t reset_ip_name_t;\r
233 \r
234 /*******************************************************************************\r
235  * API\r
236  ******************************************************************************/\r
237 #if defined(__cplusplus)\r
238 extern "C" {\r
239 #endif\r
240 \r
241 /*!\r
242  * @brief Assert reset to peripheral.\r
243  *\r
244  * Asserts reset signal to specified peripheral module.\r
245  *\r
246  * @param peripheral Assert reset to this peripheral. The enum argument contains encoding of reset register\r
247  *                   and reset bit position in the reset register.\r
248  */\r
249 void RESET_SetPeripheralReset(reset_ip_name_t peripheral);\r
250 \r
251 /*!\r
252  * @brief Clear reset to peripheral.\r
253  *\r
254  * Clears reset signal to specified peripheral module, allows it to operate.\r
255  *\r
256  * @param peripheral Clear reset to this peripheral. The enum argument contains encoding of reset register\r
257  *                   and reset bit position in the reset register.\r
258  */\r
259 void RESET_ClearPeripheralReset(reset_ip_name_t peripheral);\r
260 \r
261 /*!\r
262  * @brief Reset peripheral module.\r
263  *\r
264  * Reset peripheral module.\r
265  *\r
266  * @param peripheral Peripheral to reset. The enum argument contains encoding of reset register\r
267  *                   and reset bit position in the reset register.\r
268  */\r
269 void RESET_PeripheralReset(reset_ip_name_t peripheral);\r
270 \r
271 #if defined(__cplusplus)\r
272 }\r
273 #endif\r
274 \r
275 /*! @} */\r
276 \r
277 #endif /* _FSL_RESET_H_ */\r