213213 (uint32_t)kFLEXCAN_ErrorIntFlag | FLEXCAN_MEMORY_ERROR_INIT_FLAG)
214214#endif
215215#if (defined(FSL_FEATURE_FLEXCAN_HAS_PN_MODE ) && FSL_FEATURE_FLEXCAN_HAS_PN_MODE )
216+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT )
216217#define FLEXCAN_WAKE_UP_FLAG \
217218 ((uint32_t)kFLEXCAN_WakeUpIntFlag | (uint64_t)kFLEXCAN_PNMatchIntFlag | (uint64_t)kFLEXCAN_PNTimeoutIntFlag)
219+ #endif
218220#else
221+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT )
219222#define FLEXCAN_WAKE_UP_FLAG ((uint32_t)kFLEXCAN_WakeUpIntFlag)
220223#endif
224+ #endif
221225#if (defined(FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL ) && FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL )
222226#define FLEXCAN_MEMORY_ERROR_INIT_FLAG ((uint64_t)kFLEXCAN_AllMemoryErrorFlag)
223227#else
@@ -287,12 +291,14 @@ typedef enum _flexcan_clock_source
287291 kFLEXCAN_ClkSrc1 = 0x1U , /*!< FlexCAN Protocol Engine clock selected by user as SRC == 1. */
288292} flexcan_clock_source_t ;
289293
294+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT )
290295/*! @brief FlexCAN wake up source. */
291296typedef enum _flexcan_wake_up_source
292297{
293298 kFLEXCAN_WakeupSrcUnfiltered = 0x0U , /*!< FlexCAN uses unfiltered Rx input to detect edge. */
294299 kFLEXCAN_WakeupSrcFiltered = 0x1U , /*!< FlexCAN uses filtered Rx input to detect edge. */
295300} flexcan_wake_up_source_t ;
301+ #endif
296302
297303/*! @brief FlexCAN Rx Fifo Filter type. */
298304typedef enum _flexcan_rx_fifo_filter_type
@@ -397,7 +403,9 @@ enum _flexcan_interrupt_enable
397403 kFLEXCAN_ErrorInterruptEnable = CAN_CTRL1_ERRMSK_MASK , /*!< CAN Error interrupt, use bit 14. */
398404 kFLEXCAN_TxWarningInterruptEnable = CAN_CTRL1_TWRNMSK_MASK , /*!< Tx Warning interrupt, use bit 11. */
399405 kFLEXCAN_RxWarningInterruptEnable = CAN_CTRL1_RWRNMSK_MASK , /*!< Rx Warning interrupt, use bit 10. */
406+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT )
400407 kFLEXCAN_WakeUpInterruptEnable = CAN_MCR_WAKMSK_MASK , /*!< Self Wake Up interrupt, use bit 26. */
408+ #endif
401409#if (defined(FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE ) && FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE )
402410 kFLEXCAN_FDErrorInterruptEnable = CAN_CTRL2_ERRMSK_FAST_MASK , /*!< CAN FD Error interrupt, use bit 31. */
403411#endif
@@ -418,13 +426,19 @@ enum _flexcan_interrupt_enable
418426 kFLEXCAN_ERxFifoDataAvlInterruptEnable = FLEXCAN_EFIFO_INT_MASK (CAN_ERFIER_ERFDAIE_MASK ),
419427#endif
420428#if (defined(FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL ) && FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL )
429+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_HANCEI_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_HANCEI_SUPPORT )
421430 /*! Host Access With Non-Correctable Errors interrupt, use high word bit 0. */
422431 kFLEXCAN_HostAccessNCErrorInterruptEnable = FLEXCAN_MECR_INT_MASK (CAN_MECR_HANCEI_MSK_MASK ),
432+ #endif
433+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_FANCEI_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_FANCEI_SUPPORT )
423434 /*! FlexCAN Access With Non-Correctable Errors interrupt, use high word bit 2. */
424435 kFLEXCAN_FlexCanAccessNCErrorInterruptEnable = FLEXCAN_MECR_INT_MASK (CAN_MECR_FANCEI_MSK_MASK ),
436+ #endif
437+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_CEI_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_CEI_SUPPORT )
425438 /*! Host or FlexCAN Access With Correctable Errors interrupt, use high word bit 3. */
426439 kFLEXCAN_HostOrFlexCanCErrorInterruptEnable = FLEXCAN_MECR_INT_MASK (CAN_MECR_CEI_MSK_MASK ),
427440#endif
441+ #endif
428442};
429443
430444/*!
@@ -450,7 +464,9 @@ enum _flexcan_flags
450464 kFLEXCAN_ReceivingFlag = CAN_ESR1_RX_MASK , /*!< FlexCAN In Reception Status. */
451465 kFLEXCAN_BusOffIntFlag = CAN_ESR1_BOFFINT_MASK , /*!< Bus Off Interrupt Flag. */
452466 kFLEXCAN_ErrorIntFlag = CAN_ESR1_ERRINT_MASK , /*!< CAN Error Interrupt Flag. */
467+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT )
453468 kFLEXCAN_WakeUpIntFlag = CAN_ESR1_WAKINT_MASK , /*!< Self Wake-Up Interrupt Flag. */
469+ #endif
454470 kFLEXCAN_ErrorFlag =
455471 (uint32_t )(/*!< All FlexCAN Read Clear Error Status. */
456472#if (defined (FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE ) && FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE )
@@ -745,11 +761,15 @@ typedef struct _flexcan_config
745761 };
746762 };
747763 flexcan_clock_source_t clkSrc ; /*!< Clock source for FlexCAN Protocol Engine. */
764+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT )
748765 flexcan_wake_up_source_t wakeupSrc ; /*!< Wake up source selection. */
766+ #endif
749767 uint8_t maxMbNum ; /*!< The maximum number of Message Buffers used by user. */
750768 bool enableLoopBack ; /*!< Enable or Disable Loop Back Self Test Mode. */
751769 bool enableTimerSync ; /*!< Enable or Disable Timer Synchronization. */
770+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT )
752771 bool enableSelfWakeup ; /*!< Enable or Disable Self Wakeup Mode. */
772+ #endif
753773 bool enableIndividMask ; /*!< Enable or Disable Rx Individual Mask and Queue feature. */
754774 bool disableSelfReception ; /*!< Enable or Disable Self Reflection. */
755775 bool enableListenOnlyMode ; /*!< Enable or Disable Listen Only Mode. */
@@ -1666,9 +1686,10 @@ static inline void FLEXCAN_EnableInterrupts(CAN_Type *base, uint32_t mask)
16661686#endif
16671687{
16681688 uint32_t primask = DisableGlobalIRQ ();
1669-
1689+ #if !(defined( FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT )
16701690 /* Solve Self Wake Up interrupt. */
16711691 base -> MCR |= (uint32_t )(mask & (uint32_t )kFLEXCAN_WakeUpInterruptEnable );
1692+ #endif
16721693
16731694#if (defined(FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE ) && FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE )
16741695 if (0 != FSL_FEATURE_FLEXCAN_INSTANCE_HAS_FLEXIBLE_DATA_RATEn (base ))
@@ -1719,8 +1740,10 @@ static inline void FLEXCAN_DisableInterrupts(CAN_Type *base, uint32_t mask)
17191740{
17201741 uint32_t primask = DisableGlobalIRQ ();
17211742
1743+ #if !(defined(FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT ) && FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT )
17221744 /* Solve Wake Up Interrupt. */
17231745 base -> MCR &= ~(uint32_t )(mask & (uint32_t )kFLEXCAN_WakeUpInterruptEnable );
1746+ #endif
17241747
17251748#if (defined(FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE ) && FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE )
17261749 if (0 != FSL_FEATURE_FLEXCAN_INSTANCE_HAS_FLEXIBLE_DATA_RATEn (base ))
0 commit comments