1 /* 2 * Copyright 2023 NXP 3 * All rights reserved. 4 * 5 * 6 * SPDX-License-Identifier: BSD-3-Clause 7 */ 8 9 #ifndef _FSL_I2S_BRIDGE_H_ 10 #define _FSL_I2S_BRIDGE_H_ 11 12 #include "fsl_common.h" 13 /******************************************************************************* 14 * Definitions 15 ******************************************************************************/ 16 17 /*! 18 * @addtogroup i2s_bridge 19 * @{ 20 */ 21 22 /******************************************************************************* 23 * Definitions 24 ******************************************************************************/ 25 26 /*! @name Driver version */ 27 /*@{*/ 28 /*! @brief Group I2S Bridge driver version for SDK */ 29 #define FSL_I2S_BRIDGE_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */ 30 /*@}*/ 31 32 /*! @brief I2S Bridge share set */ 33 enum _i2s_bridge_share_set_index 34 { 35 kI2S_BRIDGE_OriginalSignal = 0U, /*!< Original FLEXCOMM I2S signals */ 36 kI2S_BRIDGE_ShareSet0 = 1U, /*!< share set 0 signals */ 37 kI2S_BRIDGE_ShareSet1 = 2U, /*!< share set 1 signals */ 38 }; 39 40 /*! @brief I2S signal */ 41 typedef enum _i2s_bridge_signal 42 { 43 kI2S_BRIDGE_SignalSCK = 0U, /*!< SCK signal */ 44 kI2S_BRIDGE_SignalWS = 1U, /*!< WS signal */ 45 kI2S_BRIDGE_SignalDataIn = 2U, /*!< Data in signal */ 46 kI2S_BRIDGE_SignalDataOut = 3U, /*!< Data out signal */ 47 } i2s_bridge_signal_t; 48 49 /*! @brief I2S signal source */ 50 enum _i2s_bridge_share_src 51 { 52 kI2S_BRIDGE_Flexcomm0 = 0U, /*!< Shared signal comes from FLEXCOMM0 */ 53 kI2S_BRIDGE_Flexcomm1 = 1U, /*!< Shared signal comes from FLEXCOMM1 */ 54 kI2S_BRIDGE_Flexcomm2 = 2U, /*!< Shared signal comes from FLEXCOMM2 */ 55 kI2S_BRIDGE_Flexcomm3 = 3U, /*!< Shared signal comes from FLEXCOMM3 */ 56 }; 57 58 /*! @brief I2S Bridge shared data out mask */ 59 enum _i2s_bridge_dataout_mask 60 { 61 kI2S_BRIDGE_Flexcomm0DataOut = SYSCTL1_SHAREDCTRLSET_FC0DATAOUTEN_MASK, /*!< FLEXCOMM0 DATAOUT Output Enable */ 62 kI2S_BRIDGE_Flexcomm1DataOut = SYSCTL1_SHAREDCTRLSET_FC1DATAOUTEN_MASK, /*!< FLEXCOMM1 DATAOUT Output Enable */ 63 kI2S_BRIDGE_Flexcomm2DataOut = SYSCTL1_SHAREDCTRLSET_FC2DATAOUTEN_MASK, /*!< FLEXCOMM2 DATAOUT Output Enable */ 64 kI2S_BRIDGE_Flexcomm3DataOut = SYSCTL1_SHAREDCTRLSET_FC3DATAOUTEN_MASK, /*!< FLEXCOMM3 DATAOUT Output Enable */ 65 }; 66 /******************************************************************************* 67 * API 68 ******************************************************************************/ 69 70 #ifdef __cplusplus 71 extern "C" { 72 #endif 73 74 /*! 75 * @name I2S Bridge share signal configure 76 * @{ 77 */ 78 79 /*! 80 * @brief I2S Bridge share set selection for flexcomm instance. 81 * 82 83 * @param flexCommIndex index of flexcomm, refer to RM for supported FLEXCOMM instances. 84 * @param sckSet share set for sck, refer to _i2s_bridge_share_set_index 85 * @param wsSet share set for ws, refer to _i2s_bridge_share_set_index 86 * @param dataInSet share set for data in, refer to _i2s_bridge_share_set_index 87 * @param dataOutSet share set for data out, refer to _i2s_bridge_share_set_index 88 * 89 */ 90 void I2S_BRIDGE_SetFlexcommShareSet( 91 uint32_t flexCommIndex, uint32_t sckSet, uint32_t wsSet, uint32_t dataInSet, uint32_t dataOutSet); 92 93 /*! 94 * @brief I2S Bridge share set selection for a separate signal 95 * 96 * @param flexCommIndex index of flexcomm, refer to RM for supported FLEXCOMM instances. 97 * @param signal The signal need to be configured. 98 * @param set share set for the signal, refer to #_i2s_bridge_share_set_index 99 * 100 */ 101 void I2S_BRIDGE_SetFlexcommSignalShareSet(uint32_t flexCommIndex, i2s_bridge_signal_t signal, uint32_t set); 102 103 /*! 104 * @brief I2S Bridge share set source configure 105 * 106 * @param setIndex index of share set, refer #_i2s_bridge_share_set_index 107 * @param sckShareSrc sck source for this share set, refer to _i2s_bridge_share_src 108 * @param wsShareSrc ws source for this share set, refer to _i2s_bridge_share_src 109 * @param dataInShareSrc data in source for this share set, refer to _i2s_bridge_share_src 110 * @param dataOutShareSrc data out source for this share set, refer to _i2s_bridge_dataout_mask 111 * 112 */ 113 void I2S_BRIDGE_SetShareSetSrc( 114 uint32_t setIndex, uint32_t sckShareSrc, uint32_t wsShareSrc, uint32_t dataInShareSrc, uint32_t dataOutShareSrc); 115 116 /*! 117 * @brief I2S Bridge shared signal source selection for a share set. 118 * 119 * @param setIndex index of share set, refer to _i2s_bridge_share_set_index 120 * @param signal the shared signal to be configured 121 * @param shareSrc the signal selection, refer to _i2s_bridge_share_src. 122 * 123 */ 124 void I2S_BRIDGE_SetShareSignalSrc(uint32_t setIndex, i2s_bridge_signal_t signal, uint32_t shareSrc); 125 126 /* @} */ 127 128 #ifdef __cplusplus 129 } 130 #endif 131 132 /*@}*/ 133 134 #endif /* _FSL_I2S_BRIDGE_H_ */ 135