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 kI2S_BRIDGE_Flexcomm4 = 4U, /*!< Shared signal comes from FLEXCOMM4 */ 57 kI2S_BRIDGE_Flexcomm5 = 5U, /*!< Shared signal comes from FLEXCOMM5 */ 58 kI2S_BRIDGE_Flexcomm6 = 6U, /*!< Shared signal comes from FLEXCOMM6 */ 59 kI2S_BRIDGE_Flexcomm7 = 7U, /*!< Shared signal comes from FLEXCOMM7 */ 60 }; 61 62 /*! @brief I2S Bridge shared data out mask */ 63 enum _i2s_bridge_dataout_mask 64 { 65 kI2S_BRIDGE_Flexcomm0DataOut = SYSCTL1_SHAREDCTRLSET_FC0DATAOUTEN_MASK, /*!< FLEXCOMM0 DATAOUT Output Enable */ 66 kI2S_BRIDGE_Flexcomm1DataOut = SYSCTL1_SHAREDCTRLSET_FC1DATAOUTEN_MASK, /*!< FLEXCOMM1 DATAOUT Output Enable */ 67 kI2S_BRIDGE_Flexcomm2DataOut = SYSCTL1_SHAREDCTRLSET_F20DATAOUTEN_MASK, /*!< FLEXCOMM2 DATAOUT Output Enable */ 68 kI2S_BRIDGE_Flexcomm3DataOut = SYSCTL1_SHAREDCTRLSET_FC3DATAOUTEN_MASK, /*!< FLEXCOMM3 DATAOUT Output Enable */ 69 kI2S_BRIDGE_Flexcomm4DataOut = SYSCTL1_SHAREDCTRLSET_FC4DATAOUTEN_MASK, /*!< FLEXCOMM4 DATAOUT Output Enable */ 70 kI2S_BRIDGE_Flexcomm5DataOut = SYSCTL1_SHAREDCTRLSET_FC5DATAOUTEN_MASK, /*!< FLEXCOMM5 DATAOUT Output Enable */ 71 kI2S_BRIDGE_Flexcomm6DataOut = SYSCTL1_SHAREDCTRLSET_FC6DATAOUTEN_MASK, /*!< FLEXCOMM6 DATAOUT Output Enable */ 72 kI2S_BRIDGE_Flexcomm7DataOut = SYSCTL1_SHAREDCTRLSET_FC7DATAOUTEN_MASK, /*!< FLEXCOMM7 DATAOUT Output Enable */ 73 }; 74 /******************************************************************************* 75 * API 76 ******************************************************************************/ 77 78 #ifdef __cplusplus 79 extern "C" { 80 #endif 81 82 /*! 83 * @name I2S Bridge share signal configure 84 * @{ 85 */ 86 87 /*! 88 * @brief I2S Bridge share set selection for flexcomm instance. 89 * 90 91 * @param flexCommIndex index of flexcomm, refer to RM for supported FLEXCOMM instances. 92 * @param sckSet share set for sck, refer to _i2s_bridge_share_set_index 93 * @param wsSet share set for ws, refer to _i2s_bridge_share_set_index 94 * @param dataInSet share set for data in, refer to _i2s_bridge_share_set_index 95 * @param dataOutSet share set for data out, refer to _i2s_bridge_share_set_index 96 * 97 */ 98 void I2S_BRIDGE_SetFlexcommShareSet( 99 uint32_t flexCommIndex, uint32_t sckSet, uint32_t wsSet, uint32_t dataInSet, uint32_t dataOutSet); 100 101 /*! 102 * @brief I2S Bridge share set selection for a separate signal 103 * 104 * @param flexCommIndex index of flexcomm, refer to RM for supported FLEXCOMM instances. 105 * @param signal The signal need to be configured. 106 * @param set share set for the signal, refer to #_i2s_bridge_share_set_index 107 * 108 */ 109 void I2S_BRIDGE_SetFlexcommSignalShareSet(uint32_t flexCommIndex, i2s_bridge_signal_t signal, uint32_t set); 110 111 /*! 112 * @brief I2S Bridge share set source configure 113 * 114 * @param setIndex index of share set, refer #_i2s_bridge_share_set_index 115 * @param sckShareSrc sck source for this share set, refer to _i2s_bridge_share_src 116 * @param wsShareSrc ws source for this share set, refer to _i2s_bridge_share_src 117 * @param dataInShareSrc data in source for this share set, refer to _i2s_bridge_share_src 118 * @param dataOutShareSrc data out source for this share set, refer to _i2s_bridge_dataout_mask 119 * 120 */ 121 void I2S_BRIDGE_SetShareSetSrc( 122 uint32_t setIndex, uint32_t sckShareSrc, uint32_t wsShareSrc, uint32_t dataInShareSrc, uint32_t dataOutShareSrc); 123 124 /*! 125 * @brief I2S Bridge shared signal source selection for a share set. 126 * 127 * @param setIndex index of share set, refer to _i2s_bridge_share_set_index 128 * @param signal the shared signal to be configured 129 * @param shareSrc the signal selection, refer to _i2s_bridge_share_src. 130 * 131 */ 132 void I2S_BRIDGE_SetShareSignalSrc(uint32_t setIndex, i2s_bridge_signal_t signal, uint32_t shareSrc); 133 134 /* @} */ 135 136 #ifdef __cplusplus 137 } 138 #endif 139 140 /*@}*/ 141 142 #endif /* _FSL_I2S_BRIDGE_H_ */ 143