fsl_rcm.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. /*
  2. * The Clear BSD License
  3. * Copyright (c) 2015, Freescale Semiconductor, Inc.
  4. * Copyright 2016-2017 NXP
  5. * All rights reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without modification,
  8. * are permitted (subject to the limitations in the disclaimer below) provided
  9. * that the following conditions are met:
  10. *
  11. * o Redistributions of source code must retain the above copyright notice, this list
  12. * of conditions and the following disclaimer.
  13. *
  14. * o Redistributions in binary form must reproduce the above copyright notice, this
  15. * list of conditions and the following disclaimer in the documentation and/or
  16. * other materials provided with the distribution.
  17. *
  18. * o Neither the name of the copyright holder nor the names of its
  19. * contributors may be used to endorse or promote products derived from this
  20. * software without specific prior written permission.
  21. *
  22. * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
  23. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  24. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  25. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  26. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
  27. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  28. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  29. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  30. * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  31. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  32. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33. */
  34. #ifndef _FSL_RCM_H_
  35. #define _FSL_RCM_H_
  36. #include "fsl_common.h"
  37. /*! @addtogroup rcm */
  38. /*! @{*/
  39. /*******************************************************************************
  40. * Definitions
  41. ******************************************************************************/
  42. /*! @name Driver version */
  43. /*@{*/
  44. /*! @brief RCM driver version 2.0.1. */
  45. #define FSL_RCM_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
  46. /*@}*/
  47. /*!
  48. * @brief System Reset Source Name definitions
  49. */
  50. typedef enum _rcm_reset_source
  51. {
  52. #if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
  53. /* RCM register bit width is 32. */
  54. #if (defined(FSL_FEATURE_RCM_HAS_WAKEUP) && FSL_FEATURE_RCM_HAS_WAKEUP)
  55. kRCM_SourceWakeup = RCM_SRS_WAKEUP_MASK, /*!< Low-leakage wakeup reset */
  56. #endif
  57. kRCM_SourceLvd = RCM_SRS_LVD_MASK, /*!< Low-voltage detect reset */
  58. #if (defined(FSL_FEATURE_RCM_HAS_LOC) && FSL_FEATURE_RCM_HAS_LOC)
  59. kRCM_SourceLoc = RCM_SRS_LOC_MASK, /*!< Loss of clock reset */
  60. #endif /* FSL_FEATURE_RCM_HAS_LOC */
  61. #if (defined(FSL_FEATURE_RCM_HAS_LOL) && FSL_FEATURE_RCM_HAS_LOL)
  62. kRCM_SourceLol = RCM_SRS_LOL_MASK, /*!< Loss of lock reset */
  63. #endif /* FSL_FEATURE_RCM_HAS_LOL */
  64. kRCM_SourceWdog = RCM_SRS_WDOG_MASK, /*!< Watchdog reset */
  65. kRCM_SourcePin = RCM_SRS_PIN_MASK, /*!< External pin reset */
  66. kRCM_SourcePor = RCM_SRS_POR_MASK, /*!< Power on reset */
  67. #if (defined(FSL_FEATURE_RCM_HAS_JTAG) && FSL_FEATURE_RCM_HAS_JTAG)
  68. kRCM_SourceJtag = RCM_SRS_JTAG_MASK, /*!< JTAG generated reset */
  69. #endif /* FSL_FEATURE_RCM_HAS_JTAG */
  70. kRCM_SourceLockup = RCM_SRS_LOCKUP_MASK, /*!< Core lock up reset */
  71. kRCM_SourceSw = RCM_SRS_SW_MASK, /*!< Software reset */
  72. #if (defined(FSL_FEATURE_RCM_HAS_MDM_AP) && FSL_FEATURE_RCM_HAS_MDM_AP)
  73. kRCM_SourceMdmap = RCM_SRS_MDM_AP_MASK, /*!< MDM-AP system reset */
  74. #endif /* FSL_FEATURE_RCM_HAS_MDM_AP */
  75. #if (defined(FSL_FEATURE_RCM_HAS_EZPORT) && FSL_FEATURE_RCM_HAS_EZPORT)
  76. kRCM_SourceEzpt = RCM_SRS_EZPT_MASK, /*!< EzPort reset */
  77. #endif /* FSL_FEATURE_RCM_HAS_EZPORT */
  78. kRCM_SourceSackerr = RCM_SRS_SACKERR_MASK, /*!< Parameter could get all reset flags */
  79. #else /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
  80. /* RCM register bit width is 8. */
  81. #if (defined(FSL_FEATURE_RCM_HAS_WAKEUP) && FSL_FEATURE_RCM_HAS_WAKEUP)
  82. kRCM_SourceWakeup = RCM_SRS0_WAKEUP_MASK, /*!< Low-leakage wakeup reset */
  83. #endif
  84. kRCM_SourceLvd = RCM_SRS0_LVD_MASK, /*!< Low-voltage detect reset */
  85. #if (defined(FSL_FEATURE_RCM_HAS_LOC) && FSL_FEATURE_RCM_HAS_LOC)
  86. kRCM_SourceLoc = RCM_SRS0_LOC_MASK, /*!< Loss of clock reset */
  87. #endif /* FSL_FEATURE_RCM_HAS_LOC */
  88. #if (defined(FSL_FEATURE_RCM_HAS_LOL) && FSL_FEATURE_RCM_HAS_LOL)
  89. kRCM_SourceLol = RCM_SRS0_LOL_MASK, /*!< Loss of lock reset */
  90. #endif /* FSL_FEATURE_RCM_HAS_LOL */
  91. kRCM_SourceWdog = RCM_SRS0_WDOG_MASK, /*!< Watchdog reset */
  92. kRCM_SourcePin = RCM_SRS0_PIN_MASK, /*!< External pin reset */
  93. kRCM_SourcePor = RCM_SRS0_POR_MASK, /*!< Power on reset */
  94. #if (defined(FSL_FEATURE_RCM_HAS_JTAG) && FSL_FEATURE_RCM_HAS_JTAG)
  95. kRCM_SourceJtag = RCM_SRS1_JTAG_MASK << 8U, /*!< JTAG generated reset */
  96. #endif /* FSL_FEATURE_RCM_HAS_JTAG */
  97. kRCM_SourceLockup = RCM_SRS1_LOCKUP_MASK << 8U, /*!< Core lock up reset */
  98. kRCM_SourceSw = RCM_SRS1_SW_MASK << 8U, /*!< Software reset */
  99. #if (defined(FSL_FEATURE_RCM_HAS_MDM_AP) && FSL_FEATURE_RCM_HAS_MDM_AP)
  100. kRCM_SourceMdmap = RCM_SRS1_MDM_AP_MASK << 8U, /*!< MDM-AP system reset */
  101. #endif /* FSL_FEATURE_RCM_HAS_MDM_AP */
  102. #if (defined(FSL_FEATURE_RCM_HAS_EZPORT) && FSL_FEATURE_RCM_HAS_EZPORT)
  103. kRCM_SourceEzpt = RCM_SRS1_EZPT_MASK << 8U, /*!< EzPort reset */
  104. #endif /* FSL_FEATURE_RCM_HAS_EZPORT */
  105. kRCM_SourceSackerr = RCM_SRS1_SACKERR_MASK << 8U, /*!< Parameter could get all reset flags */
  106. #endif /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
  107. kRCM_SourceAll = 0xffffffffU,
  108. } rcm_reset_source_t;
  109. /*!
  110. * @brief Reset pin filter select in Run and Wait modes.
  111. */
  112. typedef enum _rcm_run_wait_filter_mode
  113. {
  114. kRCM_FilterDisable = 0U, /*!< All filtering disabled */
  115. kRCM_FilterBusClock = 1U, /*!< Bus clock filter enabled */
  116. kRCM_FilterLpoClock = 2U /*!< LPO clock filter enabled */
  117. } rcm_run_wait_filter_mode_t;
  118. #if (defined(FSL_FEATURE_RCM_HAS_BOOTROM) && FSL_FEATURE_RCM_HAS_BOOTROM)
  119. /*!
  120. * @brief Boot from ROM configuration.
  121. */
  122. typedef enum _rcm_boot_rom_config
  123. {
  124. kRCM_BootFlash = 0U, /*!< Boot from flash */
  125. kRCM_BootRomCfg0 = 1U, /*!< Boot from boot ROM due to BOOTCFG0 */
  126. kRCM_BootRomFopt = 2U, /*!< Boot from boot ROM due to FOPT[7] */
  127. kRCM_BootRomBoth = 3U /*!< Boot from boot ROM due to both BOOTCFG0 and FOPT[7] */
  128. } rcm_boot_rom_config_t;
  129. #endif /* FSL_FEATURE_RCM_HAS_BOOTROM */
  130. #if (defined(FSL_FEATURE_RCM_HAS_SRIE) && FSL_FEATURE_RCM_HAS_SRIE)
  131. /*!
  132. * @brief Maximum delay time from interrupt asserts to system reset.
  133. */
  134. typedef enum _rcm_reset_delay
  135. {
  136. kRCM_ResetDelay8Lpo = 0U, /*!< Delay 8 LPO cycles. */
  137. kRCM_ResetDelay32Lpo = 1U, /*!< Delay 32 LPO cycles. */
  138. kRCM_ResetDelay128Lpo = 2U, /*!< Delay 128 LPO cycles. */
  139. kRCM_ResetDelay512Lpo = 3U /*!< Delay 512 LPO cycles. */
  140. } rcm_reset_delay_t;
  141. /*!
  142. * @brief System reset interrupt enable bit definitions.
  143. */
  144. typedef enum _rcm_interrupt_enable
  145. {
  146. kRCM_IntNone = 0U, /*!< No interrupt enabled. */
  147. kRCM_IntLossOfClk = RCM_SRIE_LOC_MASK, /*!< Loss of clock interrupt. */
  148. kRCM_IntLossOfLock = RCM_SRIE_LOL_MASK, /*!< Loss of lock interrupt. */
  149. kRCM_IntWatchDog = RCM_SRIE_WDOG_MASK, /*!< Watch dog interrupt. */
  150. kRCM_IntExternalPin = RCM_SRIE_PIN_MASK, /*!< External pin interrupt. */
  151. kRCM_IntGlobal = RCM_SRIE_GIE_MASK, /*!< Global interrupts. */
  152. kRCM_IntCoreLockup = RCM_SRIE_LOCKUP_MASK, /*!< Core lock up interrupt */
  153. kRCM_IntSoftware = RCM_SRIE_SW_MASK, /*!< software interrupt */
  154. kRCM_IntStopModeAckErr = RCM_SRIE_SACKERR_MASK, /*!< Stop mode ACK error interrupt. */
  155. #if (defined(FSL_FEATURE_RCM_HAS_CORE1) && FSL_FEATURE_RCM_HAS_CORE1)
  156. kRCM_IntCore1 = RCM_SRIE_CORE1_MASK, /*!< Core 1 interrupt. */
  157. #endif
  158. kRCM_IntAll = RCM_SRIE_LOC_MASK /*!< Enable all interrupts. */
  159. |
  160. RCM_SRIE_LOL_MASK | RCM_SRIE_WDOG_MASK | RCM_SRIE_PIN_MASK | RCM_SRIE_GIE_MASK |
  161. RCM_SRIE_LOCKUP_MASK | RCM_SRIE_SW_MASK | RCM_SRIE_SACKERR_MASK
  162. #if (defined(FSL_FEATURE_RCM_HAS_CORE1) && FSL_FEATURE_RCM_HAS_CORE1)
  163. |
  164. RCM_SRIE_CORE1_MASK
  165. #endif
  166. } rcm_interrupt_enable_t;
  167. #endif /* FSL_FEATURE_RCM_HAS_SRIE */
  168. #if (defined(FSL_FEATURE_RCM_HAS_VERID) && FSL_FEATURE_RCM_HAS_VERID)
  169. /*!
  170. * @brief IP version ID definition.
  171. */
  172. typedef struct _rcm_version_id
  173. {
  174. uint16_t feature; /*!< Feature Specification Number. */
  175. uint8_t minor; /*!< Minor version number. */
  176. uint8_t major; /*!< Major version number. */
  177. } rcm_version_id_t;
  178. #endif
  179. /*!
  180. * @brief Reset pin filter configuration.
  181. */
  182. typedef struct _rcm_reset_pin_filter_config
  183. {
  184. bool enableFilterInStop; /*!< Reset pin filter select in stop mode. */
  185. rcm_run_wait_filter_mode_t filterInRunWait; /*!< Reset pin filter in run/wait mode. */
  186. uint8_t busClockFilterCount; /*!< Reset pin bus clock filter width. */
  187. } rcm_reset_pin_filter_config_t;
  188. /*******************************************************************************
  189. * API
  190. ******************************************************************************/
  191. #if defined(__cplusplus)
  192. extern "C" {
  193. #endif /* __cplusplus*/
  194. /*! @name Reset Control Module APIs*/
  195. /*@{*/
  196. #if (defined(FSL_FEATURE_RCM_HAS_VERID) && FSL_FEATURE_RCM_HAS_VERID)
  197. /*!
  198. * @brief Gets the RCM version ID.
  199. *
  200. * This function gets the RCM version ID including the major version number,
  201. * the minor version number, and the feature specification number.
  202. *
  203. * @param base RCM peripheral base address.
  204. * @param versionId Pointer to the version ID structure.
  205. */
  206. static inline void RCM_GetVersionId(RCM_Type *base, rcm_version_id_t *versionId)
  207. {
  208. *((uint32_t *)versionId) = base->VERID;
  209. }
  210. #endif
  211. #if (defined(FSL_FEATURE_RCM_HAS_PARAM) && FSL_FEATURE_RCM_HAS_PARAM)
  212. /*!
  213. * @brief Gets the reset source implemented status.
  214. *
  215. * This function gets the RCM parameter that indicates whether the corresponding reset source is implemented.
  216. * Use source masks defined in the rcm_reset_source_t to get the desired source status.
  217. *
  218. * This is an example.
  219. @code
  220. uint32_t status;
  221. // To test whether the MCU is reset using Watchdog.
  222. status = RCM_GetResetSourceImplementedStatus(RCM) & (kRCM_SourceWdog | kRCM_SourcePin);
  223. @endcode
  224. *
  225. * @param base RCM peripheral base address.
  226. * @return All reset source implemented status bit map.
  227. */
  228. static inline uint32_t RCM_GetResetSourceImplementedStatus(RCM_Type *base)
  229. {
  230. return base->PARAM;
  231. }
  232. #endif /* FSL_FEATURE_RCM_HAS_PARAM */
  233. /*!
  234. * @brief Gets the reset source status which caused a previous reset.
  235. *
  236. * This function gets the current reset source status. Use source masks
  237. * defined in the rcm_reset_source_t to get the desired source status.
  238. *
  239. * This is an example.
  240. @code
  241. uint32_t resetStatus;
  242. // To get all reset source statuses.
  243. resetStatus = RCM_GetPreviousResetSources(RCM) & kRCM_SourceAll;
  244. // To test whether the MCU is reset using Watchdog.
  245. resetStatus = RCM_GetPreviousResetSources(RCM) & kRCM_SourceWdog;
  246. // To test multiple reset sources.
  247. resetStatus = RCM_GetPreviousResetSources(RCM) & (kRCM_SourceWdog | kRCM_SourcePin);
  248. @endcode
  249. *
  250. * @param base RCM peripheral base address.
  251. * @return All reset source status bit map.
  252. */
  253. static inline uint32_t RCM_GetPreviousResetSources(RCM_Type *base)
  254. {
  255. #if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
  256. return base->SRS;
  257. #else
  258. return (uint32_t)((uint32_t)base->SRS0 | ((uint32_t)base->SRS1 << 8U));
  259. #endif /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
  260. }
  261. #if (defined(FSL_FEATURE_RCM_HAS_SSRS) && FSL_FEATURE_RCM_HAS_SSRS)
  262. /*!
  263. * @brief Gets the sticky reset source status.
  264. *
  265. * This function gets the current reset source status that has not been cleared
  266. * by software for a specific source.
  267. *
  268. * This is an example.
  269. @code
  270. uint32_t resetStatus;
  271. // To get all reset source statuses.
  272. resetStatus = RCM_GetStickyResetSources(RCM) & kRCM_SourceAll;
  273. // To test whether the MCU is reset using Watchdog.
  274. resetStatus = RCM_GetStickyResetSources(RCM) & kRCM_SourceWdog;
  275. // To test multiple reset sources.
  276. resetStatus = RCM_GetStickyResetSources(RCM) & (kRCM_SourceWdog | kRCM_SourcePin);
  277. @endcode
  278. *
  279. * @param base RCM peripheral base address.
  280. * @return All reset source status bit map.
  281. */
  282. static inline uint32_t RCM_GetStickyResetSources(RCM_Type *base)
  283. {
  284. #if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
  285. return base->SSRS;
  286. #else
  287. return (base->SSRS0 | ((uint32_t)base->SSRS1 << 8U));
  288. #endif /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
  289. }
  290. /*!
  291. * @brief Clears the sticky reset source status.
  292. *
  293. * This function clears the sticky system reset flags indicated by source masks.
  294. *
  295. * This is an example.
  296. @code
  297. // Clears multiple reset sources.
  298. RCM_ClearStickyResetSources(kRCM_SourceWdog | kRCM_SourcePin);
  299. @endcode
  300. *
  301. * @param base RCM peripheral base address.
  302. * @param sourceMasks reset source status bit map
  303. */
  304. static inline void RCM_ClearStickyResetSources(RCM_Type *base, uint32_t sourceMasks)
  305. {
  306. #if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
  307. base->SSRS = sourceMasks;
  308. #else
  309. base->SSRS0 = (sourceMasks & 0xffU);
  310. base->SSRS1 = ((sourceMasks >> 8U) & 0xffU);
  311. #endif /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
  312. }
  313. #endif /* FSL_FEATURE_RCM_HAS_SSRS */
  314. /*!
  315. * @brief Configures the reset pin filter.
  316. *
  317. * This function sets the reset pin filter including the filter source, filter
  318. * width, and so on.
  319. *
  320. * @param base RCM peripheral base address.
  321. * @param config Pointer to the configuration structure.
  322. */
  323. void RCM_ConfigureResetPinFilter(RCM_Type *base, const rcm_reset_pin_filter_config_t *config);
  324. #if (defined(FSL_FEATURE_RCM_HAS_EZPMS) && FSL_FEATURE_RCM_HAS_EZPMS)
  325. /*!
  326. * @brief Gets the EZP_MS_B pin assert status.
  327. *
  328. * This function gets the easy port mode status (EZP_MS_B) pin assert status.
  329. *
  330. * @param base RCM peripheral base address.
  331. * @return status true - asserted, false - reasserted
  332. */
  333. static inline bool RCM_GetEasyPortModePinStatus(RCM_Type *base)
  334. {
  335. return (bool)(base->MR & RCM_MR_EZP_MS_MASK);
  336. }
  337. #endif /* FSL_FEATURE_RCM_HAS_EZPMS */
  338. #if (defined(FSL_FEATURE_RCM_HAS_BOOTROM) && FSL_FEATURE_RCM_HAS_BOOTROM)
  339. /*!
  340. * @brief Gets the ROM boot source.
  341. *
  342. * This function gets the ROM boot source during the last chip reset.
  343. *
  344. * @param base RCM peripheral base address.
  345. * @return The ROM boot source.
  346. */
  347. static inline rcm_boot_rom_config_t RCM_GetBootRomSource(RCM_Type *base)
  348. {
  349. return (rcm_boot_rom_config_t)((base->MR & RCM_MR_BOOTROM_MASK) >> RCM_MR_BOOTROM_SHIFT);
  350. }
  351. /*!
  352. * @brief Clears the ROM boot source flag.
  353. *
  354. * This function clears the ROM boot source flag.
  355. *
  356. * @param base Register base address of RCM
  357. */
  358. static inline void RCM_ClearBootRomSource(RCM_Type *base)
  359. {
  360. base->MR |= RCM_MR_BOOTROM_MASK;
  361. }
  362. /*!
  363. * @brief Forces the boot from ROM.
  364. *
  365. * This function forces booting from ROM during all subsequent system resets.
  366. *
  367. * @param base RCM peripheral base address.
  368. * @param config Boot configuration.
  369. */
  370. void RCM_SetForceBootRomSource(RCM_Type *base, rcm_boot_rom_config_t config);
  371. #endif /* FSL_FEATURE_RCM_HAS_BOOTROM */
  372. #if (defined(FSL_FEATURE_RCM_HAS_SRIE) && FSL_FEATURE_RCM_HAS_SRIE)
  373. /*!
  374. * @brief Sets the system reset interrupt configuration.
  375. *
  376. * For a graceful shut down, the RCM supports delaying the assertion of the system
  377. * reset for a period of time when the reset interrupt is generated. This function
  378. * can be used to enable the interrupt and the delay period. The interrupts
  379. * are passed in as bit mask. See rcm_int_t for details. For example, to
  380. * delay a reset for 512 LPO cycles after the WDOG timeout or loss-of-clock occurs,
  381. * configure as follows:
  382. * RCM_SetSystemResetInterruptConfig(kRCM_IntWatchDog | kRCM_IntLossOfClk, kRCM_ResetDelay512Lpo);
  383. *
  384. * @param base RCM peripheral base address.
  385. * @param intMask Bit mask of the system reset interrupts to enable. See
  386. * rcm_interrupt_enable_t for details.
  387. * @param Delay Bit mask of the system reset interrupts to enable.
  388. */
  389. static inline void RCM_SetSystemResetInterruptConfig(RCM_Type *base, uint32_t intMask, rcm_reset_delay_t delay)
  390. {
  391. base->SRIE = (intMask | delay);
  392. }
  393. #endif /* FSL_FEATURE_RCM_HAS_SRIE */
  394. /*@}*/
  395. #if defined(__cplusplus)
  396. }
  397. #endif /* __cplusplus*/
  398. /*! @}*/
  399. #endif /* _FSL_RCM_H_ */