Port_Ci_Icu_Ip.c 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. /*==================================================================================================
  2. s* Project : RTD AUTOSAR 4.4
  3. * Platform : CORTEXM
  4. * Peripheral : Ftm Lpit Lptmr Port_Ci LpCmp
  5. * Dependencies : none
  6. *
  7. * Autosar Version : 4.4.0
  8. * Autosar Revision : ASR_REL_4_4_REV_0000
  9. * Autosar Conf.Variant :
  10. * SW Version : 1.0.0
  11. * Build Version : S32K1_RTD_1_0_0_HF01_D2109_ASR_REL_4_4_REV_0000_20210907
  12. *
  13. * (c) Copyright 2020-2021 NXP Semiconductors
  14. * All Rights Reserved.
  15. *
  16. * NXP Confidential. This software is owned or controlled by NXP and may only be
  17. * used strictly in accordance with the applicable license terms. By expressly
  18. * accepting such terms or by downloading, installing, activating and/or otherwise
  19. * using the software, you are agreeing that you have read, and that you agree to
  20. * comply with and are bound by, such license terms. If you do not agree to be
  21. * bound by the applicable license terms, then you may not retain, install,
  22. * activate or otherwise use the software.
  23. ==================================================================================================*/
  24. /**
  25. * @file
  26. *
  27. * @addtogroup port_ci_icu_ip PORT_CI IPL
  28. * @{
  29. */
  30. #ifdef __cplusplus
  31. extern "C"{
  32. #endif
  33. /*==================================================================================================
  34. * INCLUDE FILES
  35. ==================================================================================================*/
  36. #include "StandardTypes.h"
  37. #include "Port_Ci_Icu_Ip.h"
  38. #include "OsIf.h"
  39. #if(PORT_CI_ICU_IP_DEV_ERROR_DETECT == STD_ON)
  40. #include "Devassert.h"
  41. #endif
  42. #if (STD_ON == PORT_CI_ICU_IP_ENABLE_USER_MODE_SUPPORT)
  43. #define USER_MODE_REG_PROT_ENABLED (PORT_CI_ICU_IP_ENABLE_USER_MODE_SUPPORT)
  44. #include "RegLockMacros.h"
  45. #endif
  46. /*==================================================================================================
  47. * SOURCE FILE VERSION INFORMATION
  48. ==================================================================================================*/
  49. #define PORT_CI_ICU_IP_VENDOR_ID_C 43
  50. #define PORT_CI_ICU_IP_AR_RELEASE_MAJOR_VERSION_C 4
  51. #define PORT_CI_ICU_IP_AR_RELEASE_MINOR_VERSION_C 4
  52. #define PORT_CI_ICU_IP_AR_RELEASE_REVISION_VERSION_C 0
  53. #define PORT_CI_ICU_IP_SW_MAJOR_VERSION_C 1
  54. #define PORT_CI_ICU_IP_SW_MINOR_VERSION_C 0
  55. #define PORT_CI_ICU_IP_SW_PATCH_VERSION_C 0
  56. /*==================================================================================================
  57. * FILE VERSION CHECKS
  58. ==================================================================================================*/
  59. #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
  60. /* Check if header file and StandardTypes.h file are of the same Autosar version */
  61. #if ((PORT_CI_ICU_IP_AR_RELEASE_MAJOR_VERSION_C != STD_AR_RELEASE_MAJOR_VERSION) || \
  62. (PORT_CI_ICU_IP_AR_RELEASE_MINOR_VERSION_C != STD_AR_RELEASE_MINOR_VERSION))
  63. #error "AutoSar Version Numbers of Port_Ci_Icu_Ip.c and StandardTypes.h are different"
  64. #endif
  65. #if (STD_ON == PORT_CI_ICU_IP_ENABLE_USER_MODE_SUPPORT)
  66. /* Check if header file and RegLockMacros.h file are of the same Autosar version */
  67. #if ((PORT_CI_ICU_IP_AR_RELEASE_MAJOR_VERSION_C != REGLOCKMACROS_AR_RELEASE_MAJOR_VERSION) || \
  68. (PORT_CI_ICU_IP_AR_RELEASE_MINOR_VERSION_C != REGLOCKMACROS_AR_RELEASE_MINOR_VERSION))
  69. #error "AutoSar Version Numbers of Port_Ci_Icu_Ip.c and RegLockMacros.h are different"
  70. #endif
  71. #endif
  72. /* Check if this header file and OsIf.h file are of the same Autosar version */
  73. #if ((PORT_CI_ICU_IP_AR_RELEASE_MAJOR_VERSION_C != OSIF_AR_RELEASE_MAJOR_VERSION) || \
  74. (PORT_CI_ICU_IP_AR_RELEASE_MINOR_VERSION_C != OSIF_AR_RELEASE_MINOR_VERSION))
  75. #error "AutoSar Version Numbers of Port_Ci_Icu_Ip.c and OsIf.h are different"
  76. #endif
  77. #if(PORT_CI_ICU_IP_DEV_ERROR_DETECT == STD_ON)
  78. /* Check if this header file and Devassert.h file are of the same Autosar version */
  79. #if ((PORT_CI_ICU_IP_AR_RELEASE_MAJOR_VERSION_C != DEVASSERT_AR_RELEASE_MAJOR_VERSION) || \
  80. (PORT_CI_ICU_IP_AR_RELEASE_MINOR_VERSION_C != DEVASSERT_AR_RELEASE_MINOR_VERSION))
  81. #error "AutoSar Version Numbers of Port_Ci_Icu_Ip.c and Devassert.h are different"
  82. #endif
  83. #endif
  84. #endif
  85. /* Check if source file and ICU header file are of the same vendor */
  86. #if (PORT_CI_ICU_IP_VENDOR_ID_C != PORT_CI_ICU_IP_VENDOR_ID)
  87. #error "Port_Ci_Icu_Ip.c and Port_Ci_Icu_Ip.h have different vendor IDs"
  88. #endif
  89. /* Check if source file and ICU header file are of the same AutoSar version */
  90. #if ((PORT_CI_ICU_IP_AR_RELEASE_MAJOR_VERSION_C != PORT_CI_ICU_IP_AR_RELEASE_MAJOR_VERSION) || \
  91. (PORT_CI_ICU_IP_AR_RELEASE_MINOR_VERSION_C != PORT_CI_ICU_IP_AR_RELEASE_MINOR_VERSION) || \
  92. (PORT_CI_ICU_IP_AR_RELEASE_REVISION_VERSION_C != PORT_CI_ICU_IP_AR_RELEASE_REVISION_VERSION))
  93. #error "AutoSar Version Numbers of Port_Ci_Icu_Ip.c and Port_Ci_Icu_Ip.h are different"
  94. #endif
  95. /* Check if source file and ICU header file are of the same Software version */
  96. #if ((PORT_CI_ICU_IP_SW_MAJOR_VERSION_C != PORT_CI_ICU_IP_SW_MAJOR_VERSION) || \
  97. (PORT_CI_ICU_IP_SW_MINOR_VERSION_C != PORT_CI_ICU_IP_SW_MINOR_VERSION) || \
  98. (PORT_CI_ICU_IP_SW_PATCH_VERSION_C != PORT_CI_ICU_IP_SW_PATCH_VERSION))
  99. #error "Software Version Numbers of Port_Ci_Icu_Ip.c and Port_Ci_Icu_Ip.h are different"
  100. #endif
  101. /*==================================================================================================
  102. * CONSTANTS
  103. ==================================================================================================*/
  104. /*==================================================================================================
  105. * GLOBAL CONSTANTS
  106. ==================================================================================================*/
  107. #define ICU_START_SEC_CONST_UNSPECIFIED
  108. #include "Icu_MemMap.h"
  109. /* Table of base addresses for SUIL2 instances. */
  110. PORT_Type * const s_Port_Ci_Base[] = IP_PORT_BASE_PTRS;
  111. #define ICU_STOP_SEC_CONST_UNSPECIFIED
  112. #include "Icu_MemMap.h"
  113. /*==================================================================================================
  114. * LOCAL VARIABLE DECLARATIONS
  115. ==================================================================================================*/
  116. #define ICU_START_SEC_VAR_CLEARED_8
  117. #include "Icu_MemMap.h"
  118. #if ((PORT_CI_ICU_IP_SET_MODE_API == STD_ON) || (PORT_CI_ICU_IP_EDGE_DETECT_API == STD_ON))
  119. static uint8 Port_Ci_Icu_Ip_aChActivationMode[PORT_PCR_COUNT];
  120. #endif
  121. #define ICU_STOP_SEC_VAR_CLEARED_8
  122. #include "Icu_MemMap.h"
  123. #define ICU_START_SEC_VAR_CLEARED_UNSPECIFIED
  124. #include "Icu_MemMap.h"
  125. Port_Ci_Icu_Ip_State Port_Ci_Icu_Ip_u32ChState[PORT_INSTANCE_COUNT][PORT_PCR_COUNT];
  126. #define ICU_STOP_SEC_VAR_CLEARED_UNSPECIFIED
  127. #include "Icu_MemMap.h"
  128. /*==================================================================================================
  129. * DEFINES AND MACROS
  130. ==================================================================================================*/
  131. /*==================================================================================================
  132. * ENUMS
  133. ==================================================================================================*/
  134. /*==================================================================================================
  135. * STRUCTURES AND OTHER TYPEDEFS
  136. ==================================================================================================*/
  137. /*==================================================================================================
  138. * LOCAL FUNCTION PROTOTYPES
  139. ==================================================================================================*/
  140. /*==================================================================================================
  141. * FUNCTION PROTOTYPES
  142. ==================================================================================================*/
  143. /*==================================================================================================
  144. * GLOBAL FUNCTIONS
  145. ==================================================================================================*/
  146. #define ICU_START_SEC_CODE
  147. #include "Icu_MemMap.h"
  148. #if ((PORT_CI_ICU_IP_SET_MODE_API == STD_ON) ||(PORT_CI_ICU_IP_EDGE_DETECT_API == STD_ON))
  149. /** @implements Port_Ci_Icu_Ip_EnableInterrupt_Activity */
  150. void Port_Ci_Icu_Ip_EnableInterrupt(uint8 instance, uint8 hwChannel)
  151. {
  152. uint32 u32pinMask = (uint32)((uint32)1U << (uint32)hwChannel);
  153. /* Enable interrupt and set mode*/
  154. if (Port_Ci_Icu_Ip_aChActivationMode[hwChannel] == ICU_PORT_CI_CH_FALLING_EDGE_U8)
  155. {
  156. s_Port_Ci_Base[instance]->PCR[hwChannel] &= ~ICU_PORT_CI_PCR_IREE_U32;
  157. s_Port_Ci_Base[instance]->PCR[hwChannel] |= ICU_PORT_CI_PCR_IFEE_U32;
  158. }
  159. else if (Port_Ci_Icu_Ip_aChActivationMode[hwChannel] == ICU_PORT_CI_CH_RISING_EDGE_U8)
  160. {
  161. s_Port_Ci_Base[instance]->PCR[hwChannel] &= ~ICU_PORT_CI_PCR_IFEE_U32;
  162. s_Port_Ci_Base[instance]->PCR[hwChannel] |= ICU_PORT_CI_PCR_IREE_U32;
  163. }
  164. else
  165. {
  166. s_Port_Ci_Base[instance]->PCR[hwChannel] |= (ICU_PORT_CI_PCR_IREE_U32 | ICU_PORT_CI_PCR_IFEE_U32);
  167. }
  168. /* Clear pending flag */
  169. s_Port_Ci_Base[instance]->ISFR |= u32pinMask;
  170. }
  171. #endif
  172. /** @implements Port_Ci_Icu_Ip_DisableInterrupt_Activity */
  173. void Port_Ci_Icu_Ip_DisableInterrupt(uint8 instance, uint8 hwChannel)
  174. {
  175. uint32 u32pinMask = (uint32)((uint32)1U << (uint32)hwChannel);
  176. /* Disable interrupt */
  177. s_Port_Ci_Base[instance]->PCR[hwChannel] &= ~PORT_PCR_IRQC_MASK;
  178. /* Clear pending flag */
  179. s_Port_Ci_Base[instance]->ISFR |= u32pinMask;
  180. }
  181. /**
  182. * @brief Driver function that initializes Port_Ci hardware channel.
  183. * @details This function:
  184. * - Disables interrupt.
  185. * - Sets Interrupt Filter Enable Register
  186. * - Sets Activation Condition
  187. *
  188. * @param[in] userConfig IRQ HW Channel
  189. *
  190. * @return Port_Ci_Icu_Ip_StatusType
  191. *
  192. * @implements Port_Ci_Icu_Ip_Init_Activity
  193. * */
  194. Port_Ci_Icu_Ip_StatusType Port_Ci_Icu_Ip_Init (uint8 instance, const Port_Ci_Icu_Ip_ConfigType * userConfig)
  195. {
  196. /* logical channel */
  197. uint8 nCounter;
  198. uint8 hwChannel;
  199. for (nCounter=0U; nCounter < userConfig->nNumChannels; nCounter++)
  200. {
  201. /* only handle Port_Ci channels */
  202. hwChannel = (uint8)((*userConfig->pChannelsConfig)[nCounter].pinId);
  203. /* Disable IRQ Interrupt */
  204. Port_Ci_Icu_Ip_DisableInterrupt(instance, hwChannel);
  205. /* Set Activation Condition */
  206. Port_Ci_Icu_Ip_SetActivationCondition
  207. (
  208. instance, hwChannel,
  209. (Port_Ci_Icu_Ip_EdgeType)((*userConfig->pChannelsConfig)[nCounter].nDefaultStartEdge)
  210. );
  211. Port_Ci_Icu_Ip_u32ChState[instance][hwChannel].chInit = TRUE;
  212. Port_Ci_Icu_Ip_u32ChState[instance][hwChannel].callback = (*userConfig->pChannelsConfig)[nCounter].callback;
  213. Port_Ci_Icu_Ip_u32ChState[instance][hwChannel].callbackParam = (*userConfig->pChannelsConfig)[nCounter].callbackParam;
  214. Port_Ci_Icu_Ip_u32ChState[instance][hwChannel].PortCiChannelNotification = (*userConfig->pChannelsConfig)[nCounter].PortCiChannelNotification;
  215. }
  216. return PORT_CI_IP_STATUS_SUCCESS;
  217. }
  218. #if (STD_ON == PORT_CI_ICU_IP_DEINIT_API)
  219. /**
  220. * @brief Driver function that de-initializes Icu Port.
  221. * @details This function:
  222. * - Disables interrupt.
  223. * - Clears edge event enable registers
  224. * - Clears Interrupt Filter Enable Register
  225. *
  226. * @param[in] pPort_CiIpConfig - IRQ HW Channel
  227. *
  228. * @return Port_Ci_Icu_Ip_StatusType
  229. *
  230. * @implements Port_Ci_Icu_Ip_DeInit_Activity
  231. * */
  232. Port_Ci_Icu_Ip_StatusType Port_Ci_Icu_Ip_DeInit(uint8 instance)
  233. {
  234. /* logical channel */
  235. uint8 hwChannel;
  236. uint32 u32pinMask;
  237. for (hwChannel=0U; hwChannel < PORT_PCR_COUNT; hwChannel++)
  238. {
  239. /* only handle Port_Ci channels */
  240. u32pinMask = (uint32)((uint32)1U << (uint32)hwChannel);
  241. /* Disable IRQ Interrupt */
  242. Port_Ci_Icu_Ip_DisableInterrupt(instance, hwChannel);
  243. /* Clear edge event enable registers */
  244. s_Port_Ci_Base[instance]->PCR[hwChannel] &= ~PORT_PCR_IRQC_MASK;
  245. /* Clear Interrupt Filter Enable Register */
  246. s_Port_Ci_Base[instance]->DFER &= ~u32pinMask;
  247. /* Record the deinit */
  248. Port_Ci_Icu_Ip_u32ChState[instance][hwChannel].chInit = FALSE;
  249. Port_Ci_Icu_Ip_u32ChState[instance][hwChannel].callback = NULL_PTR;
  250. Port_Ci_Icu_Ip_u32ChState[instance][hwChannel].callbackParam = 0U;
  251. Port_Ci_Icu_Ip_u32ChState[instance][hwChannel].PortCiChannelNotification = NULL_PTR;
  252. #if ((PORT_CI_ICU_IP_SET_MODE_API == STD_ON) || (PORT_CI_ICU_IP_EDGE_DETECT_API == STD_ON))
  253. Port_Ci_Icu_Ip_aChActivationMode[hwChannel] = ICU_PORT_CI_CH_NEITHER_EDGE_U8;
  254. #endif
  255. }
  256. return PORT_CI_IP_STATUS_SUCCESS;
  257. }
  258. #endif
  259. #if (PORT_CI_ICU_IP_SET_MODE_API == STD_ON)
  260. /**
  261. * @brief Driver function that sets Port_Ci hardware channel into SLEEP mode.
  262. * @details This function enables the interrupt if wakeup is enabled for corresponding
  263. * Port_Ci channel
  264. *
  265. * @param[in] hwChannel - IRQ HW Channel
  266. *
  267. * @return void
  268. *
  269. * */
  270. void Port_Ci_Icu_Ip_SetSleepMode(uint8 instance, uint8 hwChannel)
  271. {
  272. /* Disable IRQ Interrupt */
  273. Port_Ci_Icu_Ip_DisableInterrupt(instance, hwChannel);
  274. }
  275. /**
  276. * @brief Driver function that sets the Port_Ci hardware channel into NORMAL mode.
  277. * @details This function enables the interrupt if Notification is enabled for corresponding
  278. * Port_Ci channel
  279. *
  280. * @param[in] hwChannel - IRQ HW Channel
  281. *
  282. * @return void
  283. *
  284. * */
  285. void Port_Ci_Icu_Ip_SetNormalMode(uint8 instance, uint8 hwChannel)
  286. {
  287. /* Enable IRQ Interrupt */
  288. Port_Ci_Icu_Ip_EnableInterrupt(instance, hwChannel);
  289. }
  290. #endif /* PORT_CI_ICU_IP_SET_MODE_API */
  291. /**
  292. * @brief Driver function that sets activation condition of Port_Ci channel
  293. * @details This function enables the requested activation condition(rising, falling or both
  294. * edges) for corresponding Port_Ci channels.
  295. *
  296. * @param[in] hwChannel - IRQ HW Channel
  297. * @param[in] activation - Activation condition
  298. *
  299. * @return void
  300. *
  301. * @implements Port_Ci_Icu_Ip_SetActivationCondition_Activity
  302. * */
  303. void Port_Ci_Icu_Ip_SetActivationCondition(uint8 instance, uint8 hwChannel, Port_Ci_Icu_Ip_EdgeType activation)
  304. {
  305. switch (activation)
  306. {
  307. case PORT_CI_ICU_RISING_EDGE:
  308. {
  309. s_Port_Ci_Base[instance]->PCR[hwChannel] &= ~ICU_PORT_CI_PCR_IFEE_U32;
  310. s_Port_Ci_Base[instance]->PCR[hwChannel] |= ICU_PORT_CI_PCR_IREE_U32;
  311. #if ((PORT_CI_ICU_IP_SET_MODE_API == STD_ON) || (PORT_CI_ICU_IP_EDGE_DETECT_API == STD_ON))
  312. Port_Ci_Icu_Ip_aChActivationMode[hwChannel] = ICU_PORT_CI_CH_RISING_EDGE_U8;
  313. #endif
  314. }
  315. break;
  316. case PORT_CI_ICU_FALLING_EDGE:
  317. {
  318. s_Port_Ci_Base[instance]->PCR[hwChannel] &= ~ICU_PORT_CI_PCR_IREE_U32;
  319. s_Port_Ci_Base[instance]->PCR[hwChannel] |= ICU_PORT_CI_PCR_IFEE_U32;
  320. #if ((PORT_CI_ICU_IP_SET_MODE_API == STD_ON) || (PORT_CI_ICU_IP_EDGE_DETECT_API == STD_ON))
  321. Port_Ci_Icu_Ip_aChActivationMode[hwChannel] = ICU_PORT_CI_CH_FALLING_EDGE_U8;
  322. #endif
  323. }
  324. break;
  325. case PORT_CI_ICU_BOTH_EDGES:
  326. {
  327. s_Port_Ci_Base[instance]->PCR[hwChannel] |= ICU_PORT_CI_PCR_IEEE_U32;
  328. #if ((PORT_CI_ICU_IP_SET_MODE_API == STD_ON) || (PORT_CI_ICU_IP_EDGE_DETECT_API == STD_ON))
  329. Port_Ci_Icu_Ip_aChActivationMode[hwChannel] = ICU_PORT_CI_CH_EITHER_EDGE_U8;
  330. #endif
  331. }
  332. break;
  333. default:
  334. {
  335. s_Port_Ci_Base[instance]->PCR[hwChannel] &= ~(ICU_PORT_CI_PCR_IREE_U32|ICU_PORT_CI_PCR_IFEE_U32);
  336. #if ((PORT_CI_ICU_IP_SET_MODE_API == STD_ON) || (PORT_CI_ICU_IP_EDGE_DETECT_API == STD_ON))
  337. Port_Ci_Icu_Ip_aChActivationMode[hwChannel] = ICU_PORT_CI_CH_NEITHER_EDGE_U8;
  338. #endif
  339. }
  340. break;
  341. }
  342. }
  343. #if (PORT_CI_ICU_IP_EDGE_DETECT_API == STD_ON)
  344. /**
  345. * @brief Port_Ci_Icu_Ip_EnableEdgeDetection
  346. * @details This function enables the interrupt corresponding to the Port_Ci channel.
  347. *
  348. * @param[in] hwChannel - IRQ HW Channel
  349. *
  350. * @return void
  351. *
  352. * @implements Port_Ci_Icu_Ip_EnableEdgeDetection_Activity
  353. * */
  354. void Port_Ci_Icu_Ip_EnableEdgeDetection(uint8 instance, uint8 hwChannel)
  355. {
  356. /* Enable IRQ Interrupt */
  357. Port_Ci_Icu_Ip_EnableInterrupt(instance, hwChannel);
  358. }
  359. /**
  360. * @brief Port_Ci_Icu_Ip_DisableDetection
  361. * @details This function disables the interrupt corresponding to the Port_Ci channel.
  362. *
  363. * @param[in] hwChannel - IRQ HW Channel
  364. *
  365. * @return void
  366. *
  367. * @implements Port_Ci_Icu_Ip_DisableDetection_Activity
  368. * */
  369. void Port_Ci_Icu_Ip_DisableDetection(uint8 instance, uint8 hwChannel)
  370. {
  371. /* Disable IRQ Interrupt */
  372. Port_Ci_Icu_Ip_DisableInterrupt(instance, hwChannel);
  373. }
  374. #endif /* PORT_CI_ICU_IP_EDGE_DETECT_API */
  375. #if (PORT_CI_ICU_IP_GET_INPUT_STATE_API == STD_ON)
  376. /**
  377. * @brief Port_Ci_Icu_Ip_GetInputState
  378. * @details This function returns the input state of the corresponding Port_Ci channel.
  379. * The API is usable only for the case when IRQ is not serviced - application does not enable core interrupt.
  380. * @param[in] instance - Port index
  381. * @param[in] hwChannel - Index of the Channel from the selected port
  382. *
  383. * @return void
  384. *
  385. * @implements Port_Ci_Icu_Ip_GetInputState_Activity
  386. * */
  387. boolean Port_Ci_Icu_Ip_GetInputState(uint8 instance, uint8 hwChannel)
  388. {
  389. boolean bStatus = FALSE;
  390. uint32 u32pinMask = (uint32)((uint32)1U << (uint32)hwChannel);
  391. /* The flag is generated only if an interrupt is set in PCR registers */
  392. /* the checking is only done for the flag considering that IRQ is not serviced */
  393. if (0x0U != (s_Port_Ci_Base[instance]->ISFR & u32pinMask) )
  394. {
  395. /* Clear IRQ Flag */
  396. s_Port_Ci_Base[instance]->ISFR |= u32pinMask;
  397. bStatus = TRUE;
  398. }
  399. return bStatus;
  400. }
  401. #endif /* PORT_CI_ICU_IP_GET_INPUT_STATE_API */
  402. #define ICU_STOP_SEC_CODE
  403. #include "Icu_MemMap.h"
  404. #ifdef __cplusplus
  405. }
  406. #endif
  407. /** @} */