]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M0+_LPC51U68_LPCXpresso/drivers/fsl_reset.h
43b498729c6e0863b1bd1df69ead3cb09adde1dd
[freertos] / FreeRTOS / Demo / CORTEX_M0+_LPC51U68_LPCXpresso / 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 /*!\r
20  * @addtogroup ksdk_common\r
21  * @{\r
22  */\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     kFLASH_RST_SHIFT_RSTn = 0 | 7U,          /**< Flash controller reset control */\r
42     kFMC_RST_SHIFT_RSTn = 0 | 8U,            /**< Flash accelerator reset control */\r
43     kMUX_RST_SHIFT_RSTn = 0 | 11U,           /**< Input mux reset control */\r
44     kIOCON_RST_SHIFT_RSTn = 0 | 13U,         /**< IOCON reset control */\r
45     kGPIO0_RST_SHIFT_RSTn = 0 | 14U,         /**< GPIO0 reset control */\r
46     kGPIO1_RST_SHIFT_RSTn = 0 | 15U,         /**< GPIO1 reset control */\r
47     kPINT_RST_SHIFT_RSTn = 0 | 18U,          /**< Pin interrupt (PINT) reset control */\r
48     kGINT_RST_SHIFT_RSTn = 0 | 19U,          /**< Grouped interrupt (PINT) reset control. */\r
49     kDMA_RST_SHIFT_RSTn = 0 | 20U,           /**< DMA reset control */\r
50     kCRC_RST_SHIFT_RSTn = 0 | 21U,           /**< CRC reset control */\r
51     kWWDT_RST_SHIFT_RSTn = 0 | 22U,          /**< Watchdog timer reset control */\r
52     kADC0_RST_SHIFT_RSTn = 0 | 27U,          /**< ADC0 reset control */\r
53     kMRT_RST_SHIFT_RSTn = 65536 | 0U,        /**< Multi-rate timer (MRT) reset control */\r
54     kSCT0_RST_SHIFT_RSTn = 65536 | 2U,       /**< SCTimer/PWM 0 (SCT0) reset control */\r
55     kUTICK_RST_SHIFT_RSTn = 65536 | 10U,     /**< Micro-tick timer reset control */\r
56     kFC0_RST_SHIFT_RSTn = 65536 | 11U,       /**< Flexcomm Interface 0 reset control */\r
57     kFC1_RST_SHIFT_RSTn = 65536 | 12U,       /**< Flexcomm Interface 1 reset control */\r
58     kFC2_RST_SHIFT_RSTn = 65536 | 13U,       /**< Flexcomm Interface 2 reset control */\r
59     kFC3_RST_SHIFT_RSTn = 65536 | 14U,       /**< Flexcomm Interface 3 reset control */\r
60     kFC4_RST_SHIFT_RSTn = 65536 | 15U,       /**< Flexcomm Interface 4 reset control */\r
61     kFC5_RST_SHIFT_RSTn = 65536 | 16U,       /**< Flexcomm Interface 5 reset control */\r
62     kFC6_RST_SHIFT_RSTn = 65536 | 17U,       /**< Flexcomm Interface 6 reset control */\r
63     kFC7_RST_SHIFT_RSTn = 65536 | 18U,       /**< Flexcomm Interface 7 reset control */\r
64     kUSB_RST_SHIFT_RSTn = 65536 | 25U,       /**< USB reset control */\r
65     kCTIMER0_RST_SHIFT_RSTn = 65536 | 26U,    /**< CTimer0 reset control */\r
66     kCTIMER1_RST_SHIFT_RSTn = 65536 | 27U,    /**< CTimer1 reset control */\r
67     kCTIMER3_RST_SHIFT_RSTn = 67108864 | 13U, /**< CTimer3 reset control */\r
68 } SYSCON_RSTn_t;\r
69 \r
70 /** Array initializers with peripheral reset bits **/\r
71 #define ADC_RSTS             \\r
72     {                        \\r
73         kADC0_RST_SHIFT_RSTn \\r
74     } /* Reset bits for ADC peripheral */\r
75 #define CRC_RSTS            \\r
76     {                       \\r
77         kCRC_RST_SHIFT_RSTn \\r
78     } /* Reset bits for CRC peripheral */\r
79 #define DMA_RSTS_N            \\r
80     {                       \\r
81         kDMA_RST_SHIFT_RSTn \\r
82     } /* Reset bits for DMA peripheral */\r
83 #define FLEXCOMM_RSTS                                                                                            \\r
84     {                                                                                                            \\r
85         kFC0_RST_SHIFT_RSTn, kFC1_RST_SHIFT_RSTn, kFC2_RST_SHIFT_RSTn, kFC3_RST_SHIFT_RSTn, kFC4_RST_SHIFT_RSTn, \\r
86             kFC5_RST_SHIFT_RSTn, kFC6_RST_SHIFT_RSTn, kFC7_RST_SHIFT_RSTn                                        \\r
87     } /* Reset bits for FLEXCOMM peripheral */\r
88 #define GINT_RSTS                                  \\r
89     {                                              \\r
90         kGINT_RST_SHIFT_RSTn, kGINT_RST_SHIFT_RSTn \\r
91     } /* Reset bits for GINT peripheral. GINT0 & GINT1 share same slot */\r
92 #define GPIO_RSTS_N                                    \\r
93     {                                                \\r
94         kGPIO0_RST_SHIFT_RSTn, kGPIO1_RST_SHIFT_RSTn \\r
95     } /* Reset bits for GPIO peripheral */\r
96 #define INPUTMUX_RSTS       \\r
97     {                       \\r
98         kMUX_RST_SHIFT_RSTn \\r
99     } /* Reset bits for INPUTMUX peripheral */\r
100 #define IOCON_RSTS            \\r
101     {                         \\r
102         kIOCON_RST_SHIFT_RSTn \\r
103     } /* Reset bits for IOCON peripheral */\r
104 #define FLASH_RSTS                                 \\r
105     {                                              \\r
106         kFLASH_RST_SHIFT_RSTn, kFMC_RST_SHIFT_RSTn \\r
107     } /* Reset bits for Flash peripheral */\r
108 #define MRT_RSTS            \\r
109     {                       \\r
110         kMRT_RST_SHIFT_RSTn \\r
111     } /* Reset bits for MRT peripheral */\r
112 #define PINT_RSTS            \\r
113     {                        \\r
114         kPINT_RST_SHIFT_RSTn \\r
115     } /* Reset bits for PINT peripheral */\r
116 #define SCT_RSTS             \\r
117     {                        \\r
118         kSCT0_RST_SHIFT_RSTn \\r
119     } /* Reset bits for SCT peripheral */\r
120 #define CTIMER_RSTS                                                                                     \\r
121     {                                                                                                   \\r
122         kCTIMER0_RST_SHIFT_RSTn, kCTIMER1_RST_SHIFT_RSTn, kCTIMER3_RST_SHIFT_RSTn                          \\r
123     } /* Reset bits for TIMER peripheral */\r
124 #define USB_RSTS            \\r
125     {                       \\r
126         kUSB_RST_SHIFT_RSTn \\r
127     } /* Reset bits for USB peripheral */\r
128 #define UTICK_RSTS            \\r
129     {                         \\r
130         kUTICK_RST_SHIFT_RSTn \\r
131     } /* Reset bits for UTICK peripheral */\r
132 #define WWDT_RSTS            \\r
133     {                        \\r
134         kWWDT_RST_SHIFT_RSTn \\r
135     } /* Reset bits for WWDT peripheral */\r
136 \r
137 typedef SYSCON_RSTn_t reset_ip_name_t;\r
138 \r
139 /*******************************************************************************\r
140  * API\r
141  ******************************************************************************/\r
142 #if defined(__cplusplus)\r
143 extern "C" {\r
144 #endif\r
145 \r
146 /*!\r
147  * @brief Assert reset to peripheral.\r
148  *\r
149  * Asserts reset signal to specified peripheral module.\r
150  *\r
151  * @param peripheral Assert reset to this peripheral. The enum argument contains encoding of reset register\r
152  *                   and reset bit position in the reset register.\r
153  */\r
154 void RESET_SetPeripheralReset(reset_ip_name_t peripheral);\r
155 \r
156 /*!\r
157  * @brief Clear reset to peripheral.\r
158  *\r
159  * Clears reset signal to specified peripheral module, allows it to operate.\r
160  *\r
161  * @param peripheral Clear reset to this peripheral. The enum argument contains encoding of reset register\r
162  *                   and reset bit position in the reset register.\r
163  */\r
164 void RESET_ClearPeripheralReset(reset_ip_name_t peripheral);\r
165 \r
166 /*!\r
167  * @brief Reset peripheral module.\r
168  *\r
169  * Reset peripheral module.\r
170  *\r
171  * @param peripheral Peripheral to reset. The enum argument contains encoding of reset register\r
172  *                   and reset bit position in the reset register.\r
173  */\r
174 void RESET_PeripheralReset(reset_ip_name_t peripheral);\r
175 \r
176 #if defined(__cplusplus)\r
177 }\r
178 #endif\r
179 \r
180 /*! @} */\r
181 \r
182 #endif /* _FSL_RESET_H_ */\r