fsl_reset.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. /*
  2. * Copyright (c) 2016, Freescale Semiconductor, Inc.
  3. * Copyright (c) 2016, NXP
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without modification,
  7. * are permitted provided that the following conditions are met:
  8. *
  9. * o Redistributions of source code must retain the above copyright notice, this list
  10. * of conditions and the following disclaimer.
  11. *
  12. * o Redistributions in binary form must reproduce the above copyright notice, this
  13. * list of conditions and the following disclaimer in the documentation and/or
  14. * other materials provided with the distribution.
  15. *
  16. * o Neither the name of copyright holder nor the names of its
  17. * contributors may be used to endorse or promote products derived from this
  18. * software without specific prior written permission.
  19. *
  20. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  21. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  22. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  23. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
  24. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  25. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  26. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  27. * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  28. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  29. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30. */
  31. #ifndef _FSL_RESET_H_
  32. #define _FSL_RESET_H_
  33. #include <assert.h>
  34. #include <stdbool.h>
  35. #include <stdint.h>
  36. #include <string.h>
  37. #include "fsl_device_registers.h"
  38. /*!
  39. * @addtogroup ksdk_common
  40. * @{
  41. */
  42. /*******************************************************************************
  43. * Definitions
  44. ******************************************************************************/
  45. /*!
  46. * @brief Enumeration for peripheral reset control bits
  47. *
  48. * Defines the enumeration for peripheral reset control bits in PRESETCTRL/ASYNCPRESETCTRL registers
  49. */
  50. typedef enum _SYSCON_RSTn
  51. {
  52. kFLASH_RST_SHIFT_RSTn = 0 | 7U, /**< Flash controller reset control */
  53. kFMC_RST_SHIFT_RSTn = 0 | 8U, /**< Flash accelerator reset control */
  54. kEEPROM_RST_SHIFT_RSTn = 0 | 9U, /**< EEPROM reset control */
  55. kSPIFI_RST_SHIFT_RSTn = 0 | 10U, /**< SPIFI reset control */
  56. kMUX_RST_SHIFT_RSTn = 0 | 11U, /**< Input mux reset control */
  57. kIOCON_RST_SHIFT_RSTn = 0 | 13U, /**< IOCON reset control */
  58. kGPIO0_RST_SHIFT_RSTn = 0 | 14U, /**< GPIO0 reset control */
  59. kGPIO1_RST_SHIFT_RSTn = 0 | 15U, /**< GPIO1 reset control */
  60. kGPIO2_RST_SHIFT_RSTn = 0 | 16U, /**< GPIO2 reset control */
  61. kGPIO3_RST_SHIFT_RSTn = 0 | 17U, /**< GPIO3 reset control */
  62. kPINT_RST_SHIFT_RSTn = 0 | 18U, /**< Pin interrupt (PINT) reset control */
  63. kGINT_RST_SHIFT_RSTn = 0 | 19U, /**< Grouped interrupt (PINT) reset control. */
  64. kDMA_RST_SHIFT_RSTn = 0 | 20U, /**< DMA reset control */
  65. kCRC_RST_SHIFT_RSTn = 0 | 21U, /**< CRC reset control */
  66. kWWDT_RST_SHIFT_RSTn = 0 | 22U, /**< Watchdog timer reset control */
  67. kADC0_RST_SHIFT_RSTn = 0 | 27U, /**< ADC0 reset control */
  68. kMRT_RST_SHIFT_RSTn = 65536 | 0U, /**< Multi-rate timer (MRT) reset control */
  69. kSCT0_RST_SHIFT_RSTn = 65536 | 2U, /**< SCTimer/PWM 0 (SCT0) reset control */
  70. kMCAN0_RST_SHIFT_RSTn = 65536 | 7U, /**< MCAN0 reset control */
  71. kMCAN1_RST_SHIFT_RSTn = 65536 | 8U, /**< MCAN1 reset control */
  72. kUTICK_RST_SHIFT_RSTn = 65536 | 10U, /**< Micro-tick timer reset control */
  73. kFC0_RST_SHIFT_RSTn = 65536 | 11U, /**< Flexcomm Interface 0 reset control */
  74. kFC1_RST_SHIFT_RSTn = 65536 | 12U, /**< Flexcomm Interface 1 reset control */
  75. kFC2_RST_SHIFT_RSTn = 65536 | 13U, /**< Flexcomm Interface 2 reset control */
  76. kFC3_RST_SHIFT_RSTn = 65536 | 14U, /**< Flexcomm Interface 3 reset control */
  77. kFC4_RST_SHIFT_RSTn = 65536 | 15U, /**< Flexcomm Interface 4 reset control */
  78. kFC5_RST_SHIFT_RSTn = 65536 | 16U, /**< Flexcomm Interface 5 reset control */
  79. kFC6_RST_SHIFT_RSTn = 65536 | 17U, /**< Flexcomm Interface 6 reset control */
  80. kFC7_RST_SHIFT_RSTn = 65536 | 18U, /**< Flexcomm Interface 7 reset control */
  81. kDMIC_RST_SHIFT_RSTn = 65536 | 19U, /**< Digital microphone interface reset control */
  82. kCT32B2_RST_SHIFT_RSTn = 65536 | 22U, /**< CT32B2 reset control */
  83. kUSB0D_RST_SHIFT_RSTn = 65536 | 25U, /**< USB0D reset control */
  84. kCT32B0_RST_SHIFT_RSTn = 65536 | 26U, /**< CT32B0 reset control */
  85. kCT32B1_RST_SHIFT_RSTn = 65536 | 27U, /**< CT32B1 reset control */
  86. kLCD_RST_SHIFT_RSTn = 131072 | 2U, /**< LCD reset control */
  87. kSDIO_RST_SHIFT_RSTn = 131072 | 3U, /**< SDIO reset control */
  88. kUSB1H_RST_SHIFT_RSTn = 131072 | 4U, /**< USB1H reset control */
  89. kUSB1D_RST_SHIFT_RSTn = 131072 | 5U, /**< USB1D reset control */
  90. kUSB1RAM_RST_SHIFT_RSTn = 131072 | 6U, /**< USB1RAM reset control */
  91. kEMC_RST_SHIFT_RSTn = 131072 | 7U, /**< EMC reset control */
  92. kETH_RST_SHIFT_RSTn = 131072 | 8U, /**< ETH reset control */
  93. kGPIO4_RST_SHIFT_RSTn = 131072 | 9U, /**< GPIO4 reset control */
  94. kGPIO5_RST_SHIFT_RSTn = 131072 | 10U, /**< GPIO5 reset control */
  95. kAES_RST_SHIFT_RSTn = 131072 | 11U, /**< AES reset control */
  96. kOTP_RST_SHIFT_RSTn = 131072 | 12U, /**< OTP reset control */
  97. kRNG_RST_SHIFT_RSTn = 131072 | 13U, /**< RNG reset control */
  98. kFC8_RST_SHIFT_RSTn = 131072 | 14U, /**< Flexcomm Interface 8 reset control */
  99. kFC9_RST_SHIFT_RSTn = 131072 | 15U, /**< Flexcomm Interface 9 reset control */
  100. kUSB0HMR_RST_SHIFT_RSTn = 131072 | 16U, /**< USB0HMR reset control */
  101. kUSB0HSL_RST_SHIFT_RSTn = 131072 | 17U, /**< USB0HSL reset control */
  102. kSHA_RST_SHIFT_RSTn = 131072 | 18U, /**< SHA reset control */
  103. kSC0_RST_SHIFT_RSTn = 131072 | 19U, /**< SC0 reset control */
  104. kSC1_RST_SHIFT_RSTn = 131072 | 20U, /**< SC1 reset control */
  105. kCT32B3_RST_SHIFT_RSTn = 67108864 | 13U, /**< CT32B3 reset control */
  106. kCT32B4_RST_SHIFT_RSTn = 67108864 | 14U, /**< CT32B4 reset control */
  107. } SYSCON_RSTn_t;
  108. /** Array initializers with peripheral reset bits **/
  109. #define ADC_RSTS \
  110. { \
  111. kADC0_RST_SHIFT_RSTn \
  112. } /* Reset bits for ADC peripheral */
  113. #define AES_RSTS \
  114. { \
  115. kAES_RST_SHIFT_RSTn \
  116. } /* Reset bits for AES peripheral */
  117. #define CRC_RSTS \
  118. { \
  119. kCRC_RST_SHIFT_RSTn \
  120. } /* Reset bits for CRC peripheral */
  121. #define CTIMER_RSTS \
  122. { \
  123. kCT32B0_RST_SHIFT_RSTn, kCT32B1_RST_SHIFT_RSTn, kCT32B2_RST_SHIFT_RSTn, kCT32B3_RST_SHIFT_RSTn, \
  124. kCT32B4_RST_SHIFT_RSTn \
  125. } /* Reset bits for CTIMER peripheral */
  126. #define DMA_RSTS \
  127. { \
  128. kDMA_RST_SHIFT_RSTn \
  129. } /* Reset bits for DMA peripheral */
  130. #define DMIC_RSTS \
  131. { \
  132. kDMIC_RST_SHIFT_RSTn \
  133. } /* Reset bits for DMIC peripheral */
  134. #define EMC_RSTS \
  135. { \
  136. kEMC_RST_SHIFT_RSTn \
  137. } /* Reset bits for EMC peripheral */
  138. #define ETH_RST \
  139. { \
  140. kETH_RST_SHIFT_RSTn \
  141. } /* Reset bits for EMC peripheral */
  142. #define FLEXCOMM_RSTS \
  143. { \
  144. kFC0_RST_SHIFT_RSTn, kFC1_RST_SHIFT_RSTn, kFC2_RST_SHIFT_RSTn, kFC3_RST_SHIFT_RSTn, kFC4_RST_SHIFT_RSTn, \
  145. kFC5_RST_SHIFT_RSTn, kFC6_RST_SHIFT_RSTn, kFC7_RST_SHIFT_RSTn, kFC8_RST_SHIFT_RSTn, kFC9_RST_SHIFT_RSTn \
  146. } /* Reset bits for FLEXCOMM peripheral */
  147. #define GINT_RSTS \
  148. { \
  149. kGINT_RST_SHIFT_RSTn, kGINT_RST_SHIFT_RSTn \
  150. } /* Reset bits for GINT peripheral. GINT0 & GINT1 share same slot */
  151. #define GPIO_RSTS \
  152. { \
  153. kGPIO0_RST_SHIFT_RSTn, kGPIO1_RST_SHIFT_RSTn, kGPIO2_RST_SHIFT_RSTn, kGPIO3_RST_SHIFT_RSTn, \
  154. kGPIO4_RST_SHIFT_RSTn, kGPIO5_RST_SHIFT_RSTn \
  155. } /* Reset bits for GPIO peripheral */
  156. #define INPUTMUX_RSTS \
  157. { \
  158. kMUX_RST_SHIFT_RSTn \
  159. } /* Reset bits for INPUTMUX peripheral */
  160. #define IOCON_RSTS \
  161. { \
  162. kIOCON_RST_SHIFT_RSTn \
  163. } /* Reset bits for IOCON peripheral */
  164. #define FLASH_RSTS \
  165. { \
  166. kFLASH_RST_SHIFT_RSTn, kFMC_RST_SHIFT_RSTn \
  167. } /* Reset bits for Flash peripheral */
  168. #define LCD_RSTS \
  169. { \
  170. kLCD_RST_SHIFT_RSTn \
  171. } /* Reset bits for LCD peripheral */
  172. #define MRT_RSTS \
  173. { \
  174. kMRT_RST_SHIFT_RSTn \
  175. } /* Reset bits for MRT peripheral */
  176. #define MCAN_RSTS \
  177. { \
  178. kMCAN0_RST_SHIFT_RSTn,kMCAN1_RST_SHIFT_RSTn \
  179. } /* Reset bits for MCAN0&MACN1 peripheral */
  180. #define OTP_RSTS \
  181. { \
  182. kOTP_RST_SHIFT_RSTn \
  183. } /* Reset bits for OTP peripheral */
  184. #define PINT_RSTS \
  185. { \
  186. kPINT_RST_SHIFT_RSTn \
  187. } /* Reset bits for PINT peripheral */
  188. #define RNG_RSTS \
  189. { \
  190. kRNG_RST_SHIFT_RSTn \
  191. } /* Reset bits for RNG peripheral */
  192. #define SDIO_RST \
  193. { \
  194. kSDIO_RST_SHIFT_RSTn \
  195. } /* Reset bits for SDIO peripheral */
  196. #define SCT_RSTS \
  197. { \
  198. kSCT0_RST_SHIFT_RSTn \
  199. } /* Reset bits for SCT peripheral */
  200. #define SHA_RST \
  201. { \
  202. kSHA_RST_SHIFT_RSTn \
  203. } /* Reset bits for SHA peripheral */
  204. #define USB0D_RST \
  205. { \
  206. kUSB0D_RST_SHIFT_RSTn \
  207. } /* Reset bits for USB0D peripheral */
  208. #define USB0HMR_RST \
  209. { \
  210. kUSB0HMR_RST_SHIFT_RSTn \
  211. } /* Reset bits for USB0HMR peripheral */
  212. #define USB0HSL_RST \
  213. { \
  214. kUSB0HSL_RST_SHIFT_RSTn \
  215. } /* Reset bits for USB0HSL peripheral */
  216. #define USB1H_RST \
  217. { \
  218. kUSB1H_RST_SHIFT_RSTn \
  219. } /* Reset bits for USB1H peripheral */
  220. #define USB1D_RST \
  221. { \
  222. kUSB1D_RST_SHIFT_RSTn \
  223. } /* Reset bits for USB1D peripheral */
  224. #define USB1RAM_RST \
  225. { \
  226. kUSB1RAM_RST_SHIFT_RSTn \
  227. } /* Reset bits for USB1RAM peripheral */
  228. #define UTICK_RSTS \
  229. { \
  230. kUTICK_RST_SHIFT_RSTn \
  231. } /* Reset bits for UTICK peripheral */
  232. #define WWDT_RSTS \
  233. { \
  234. kWWDT_RST_SHIFT_RSTn \
  235. } /* Reset bits for WWDT peripheral */
  236. typedef SYSCON_RSTn_t reset_ip_name_t;
  237. /*******************************************************************************
  238. * API
  239. ******************************************************************************/
  240. #if defined(__cplusplus)
  241. extern "C" {
  242. #endif
  243. /*!
  244. * @brief Assert reset to peripheral.
  245. *
  246. * Asserts reset signal to specified peripheral module.
  247. *
  248. * @param peripheral Assert reset to this peripheral. The enum argument contains encoding of reset register
  249. * and reset bit position in the reset register.
  250. */
  251. void RESET_SetPeripheralReset(reset_ip_name_t peripheral);
  252. /*!
  253. * @brief Clear reset to peripheral.
  254. *
  255. * Clears reset signal to specified peripheral module, allows it to operate.
  256. *
  257. * @param peripheral Clear reset to this peripheral. The enum argument contains encoding of reset register
  258. * and reset bit position in the reset register.
  259. */
  260. void RESET_ClearPeripheralReset(reset_ip_name_t peripheral);
  261. /*!
  262. * @brief Reset peripheral module.
  263. *
  264. * Reset peripheral module.
  265. *
  266. * @param peripheral Peripheral to reset. The enum argument contains encoding of reset register
  267. * and reset bit position in the reset register.
  268. */
  269. void RESET_PeripheralReset(reset_ip_name_t peripheral);
  270. #if defined(__cplusplus)
  271. }
  272. #endif
  273. /*! @} */
  274. #endif /* _FSL_RESET_H_ */