/* * Copyright (c) 2015, Freescale Semiconductor, Inc. * Copyright 2016-2019 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef FSL_TRGMUX_H_ #define FSL_TRGMUX_H_ #include "fsl_common.h" /*! @addtogroup trgmux */ /*! @{ */ /******************************************************************************* * Definitions ******************************************************************************/ /*! @name Driver version */ /*! @{ */ /*! @brief TRGMUX driver version. */ #define FSL_TRGMUX_DRIVER_VERSION (MAKE_VERSION(2, 0, 1)) /*! @} */ /*! @brief TRGMUX configure status. */ enum { kStatus_TRGMUX_Locked = MAKE_STATUS(kStatusGroup_TRGMUX, 0), /*!< Configure failed for register is locked */ }; /*! * @brief Defines the MUX select for peripheral trigger input. */ typedef enum _trgmux_trigger_input { kTRGMUX_TriggerInput0 = TRGMUX_TRGCFG_SEL0_SHIFT, /*!< The MUX select for peripheral trigger input 0*/ kTRGMUX_TriggerInput1 = TRGMUX_TRGCFG_SEL1_SHIFT, /*!< The MUX select for peripheral trigger input 1*/ kTRGMUX_TriggerInput2 = TRGMUX_TRGCFG_SEL2_SHIFT, /*!< The MUX select for peripheral trigger input 2*/ kTRGMUX_TriggerInput3 = TRGMUX_TRGCFG_SEL3_SHIFT, /*!< The MUX select for peripheral trigger input 3*/ } trgmux_trigger_input_t; /******************************************************************************* * API ******************************************************************************/ #if defined(__cplusplus) extern "C" { #endif /* __cplusplus*/ /*! *@name TRGMUX Functional Operation *@{*/ /*! * @brief Sets the flag of the register which is used to mark writeable. * * The function sets the flag of the register which is used to mark * writeable. * Example: @code TRGMUX_LockRegister(TRGMUX0,kTRGMUX_Trgmux0Dmamux0); @endcode * * @param base TRGMUX peripheral base address. * @param index The index of the TRGMUX register, see the enum trgmux_device_t * defined in \.h. */ static inline void TRGMUX_LockRegister(TRGMUX_Type *base, uint32_t index) { base->TRGCFG[index] |= TRGMUX_TRGCFG_LK_MASK; } /*! * @brief Configures the trigger source of the appointed peripheral. * * The function configures the trigger source of the appointed peripheral. * Example: @code TRGMUX_SetTriggerSource(TRGMUX0, kTRGMUX_Trgmux0Dmamux0, kTRGMUX_TriggerInput0, kTRGMUX_SourcePortPin); @endcode * @param base TRGMUX peripheral base address. * @param index The index of the TRGMUX register, see the enum trgmux_device_t * defined in \.h. * @param input The MUX select for peripheral trigger input * @param trigger_src The trigger inputs for various peripherals. See the enum trgmux_source_t * defined in \.h. * @retval kStatus_Success Configured successfully. * @retval kStatus_TRGMUX_Locked Configuration failed because the register is locked. */ status_t TRGMUX_SetTriggerSource(TRGMUX_Type *base, uint32_t index, trgmux_trigger_input_t input, uint32_t trigger_src); /*! @} */ #if defined(__cplusplus) } #endif /* __cplusplus*/ /*! @}*/ #endif /* FSL_TRGMUX_H_*/