fsl_dmamux.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. /*
  2. * Copyright (c) 2015, Freescale Semiconductor, Inc.
  3. * Copyright 2016-2017 NXP
  4. * All rights reserved.
  5. *
  6. * SPDX-License-Identifier: BSD-3-Clause
  7. */
  8. #ifndef _FSL_DMAMUX_H_
  9. #define _FSL_DMAMUX_H_
  10. #include "fsl_common.h"
  11. /*!
  12. * @addtogroup dmamux
  13. * @{
  14. */
  15. /*******************************************************************************
  16. * Definitions
  17. ******************************************************************************/
  18. /*! @name Driver version */
  19. /*@{*/
  20. /*! @brief DMAMUX driver version 2.0.5. */
  21. #define FSL_DMAMUX_DRIVER_VERSION (MAKE_VERSION(2, 0, 5))
  22. /*@}*/
  23. /*******************************************************************************
  24. * API
  25. ******************************************************************************/
  26. #if defined(__cplusplus)
  27. extern "C" {
  28. #endif /* __cplusplus */
  29. /*!
  30. * @name DMAMUX Initialization and de-initialization
  31. * @{
  32. */
  33. /*!
  34. * @brief Initializes the DMAMUX peripheral.
  35. *
  36. * This function ungates the DMAMUX clock.
  37. *
  38. * @param base DMAMUX peripheral base address.
  39. *
  40. */
  41. void DMAMUX_Init(DMAMUX_Type *base);
  42. /*!
  43. * @brief Deinitializes the DMAMUX peripheral.
  44. *
  45. * This function gates the DMAMUX clock.
  46. *
  47. * @param base DMAMUX peripheral base address.
  48. */
  49. void DMAMUX_Deinit(DMAMUX_Type *base);
  50. /* @} */
  51. /*!
  52. * @name DMAMUX Channel Operation
  53. * @{
  54. */
  55. /*!
  56. * @brief Enables the DMAMUX channel.
  57. *
  58. * This function enables the DMAMUX channel.
  59. *
  60. * @param base DMAMUX peripheral base address.
  61. * @param channel DMAMUX channel number.
  62. */
  63. static inline void DMAMUX_EnableChannel(DMAMUX_Type *base, uint32_t channel)
  64. {
  65. assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
  66. base->CHCFG[channel] |= DMAMUX_CHCFG_ENBL_MASK;
  67. }
  68. /*!
  69. * @brief Disables the DMAMUX channel.
  70. *
  71. * This function disables the DMAMUX channel.
  72. *
  73. * @note The user must disable the DMAMUX channel before configuring it.
  74. * @param base DMAMUX peripheral base address.
  75. * @param channel DMAMUX channel number.
  76. */
  77. static inline void DMAMUX_DisableChannel(DMAMUX_Type *base, uint32_t channel)
  78. {
  79. assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
  80. #if defined FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH && (FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH == 32U)
  81. base->CHCFG[channel] &= ~DMAMUX_CHCFG_ENBL_MASK;
  82. #else
  83. base->CHCFG[channel] &= ~(uint8_t)DMAMUX_CHCFG_ENBL_MASK;
  84. #endif
  85. }
  86. /*!
  87. * @brief Configures the DMAMUX channel source.
  88. *
  89. * @param base DMAMUX peripheral base address.
  90. * @param channel DMAMUX channel number.
  91. * @param source Channel source, which is used to trigger the DMA transfer.
  92. */
  93. static inline void DMAMUX_SetSource(DMAMUX_Type *base, uint32_t channel, uint32_t source)
  94. {
  95. assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
  96. #if defined FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH && (FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH == 32U)
  97. base->CHCFG[channel] = ((base->CHCFG[channel] & ~DMAMUX_CHCFG_SOURCE_MASK) | DMAMUX_CHCFG_SOURCE(source));
  98. #else
  99. base->CHCFG[channel] = (uint8_t)((base->CHCFG[channel] & ~DMAMUX_CHCFG_SOURCE_MASK) | DMAMUX_CHCFG_SOURCE(source));
  100. #endif
  101. }
  102. #if defined(FSL_FEATURE_DMAMUX_HAS_TRIG) && FSL_FEATURE_DMAMUX_HAS_TRIG > 0U
  103. /*!
  104. * @brief Enables the DMAMUX period trigger.
  105. *
  106. * This function enables the DMAMUX period trigger feature.
  107. *
  108. * @param base DMAMUX peripheral base address.
  109. * @param channel DMAMUX channel number.
  110. */
  111. static inline void DMAMUX_EnablePeriodTrigger(DMAMUX_Type *base, uint32_t channel)
  112. {
  113. assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
  114. base->CHCFG[channel] |= DMAMUX_CHCFG_TRIG_MASK;
  115. }
  116. /*!
  117. * @brief Disables the DMAMUX period trigger.
  118. *
  119. * This function disables the DMAMUX period trigger.
  120. *
  121. * @param base DMAMUX peripheral base address.
  122. * @param channel DMAMUX channel number.
  123. */
  124. static inline void DMAMUX_DisablePeriodTrigger(DMAMUX_Type *base, uint32_t channel)
  125. {
  126. assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
  127. #if defined FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH && (FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH == 32U)
  128. base->CHCFG[channel] &= ~DMAMUX_CHCFG_TRIG_MASK;
  129. #else
  130. base->CHCFG[channel] &= ~(uint8_t)DMAMUX_CHCFG_TRIG_MASK;
  131. #endif
  132. }
  133. #endif /* FSL_FEATURE_DMAMUX_HAS_TRIG */
  134. #if (defined(FSL_FEATURE_DMAMUX_HAS_A_ON) && FSL_FEATURE_DMAMUX_HAS_A_ON)
  135. /*!
  136. * @brief Enables the DMA channel to be always ON.
  137. *
  138. * This function enables the DMAMUX channel always ON feature.
  139. *
  140. * @param base DMAMUX peripheral base address.
  141. * @param channel DMAMUX channel number.
  142. * @param enable Switcher of the always ON feature. "true" means enabled, "false" means disabled.
  143. */
  144. static inline void DMAMUX_EnableAlwaysOn(DMAMUX_Type *base, uint32_t channel, bool enable)
  145. {
  146. assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
  147. if (enable)
  148. {
  149. base->CHCFG[channel] |= DMAMUX_CHCFG_A_ON_MASK;
  150. }
  151. else
  152. {
  153. base->CHCFG[channel] &= ~DMAMUX_CHCFG_A_ON_MASK;
  154. }
  155. }
  156. #endif /* FSL_FEATURE_DMAMUX_HAS_A_ON */
  157. /* @} */
  158. #if defined(__cplusplus)
  159. }
  160. #endif /* __cplusplus */
  161. /* @} */
  162. #endif /* _FSL_DMAMUX_H_ */