mirror of https://github.com/ARMmbed/mbed-os.git
KSDK: Updated version of the SAI driver to address code-size issues
Signed-off-by: Mahadevan Mahesh <Mahesh.Mahadevan@nxp.com>pull/2514/head
parent
dda7f7d77a
commit
8e8ccee98e
|
@ -40,6 +40,12 @@ enum _sai_transfer_state
|
||||||
kSAI_Error /*!< Transfer error occured. */
|
kSAI_Error /*!< Transfer error occured. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*! @brief Typedef for sai tx interrupt handler. */
|
||||||
|
typedef void (*sai_tx_isr_t)(I2S_Type *base, sai_handle_t *saiHandle);
|
||||||
|
|
||||||
|
/*! @brief Typedef for sai rx interrupt handler. */
|
||||||
|
typedef void (*sai_rx_isr_t)(I2S_Type *base, sai_handle_t *saiHandle);
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Prototypes
|
* Prototypes
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
@ -98,6 +104,10 @@ static const IRQn_Type s_saiTxIRQ[] = I2S_TX_IRQS;
|
||||||
static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
|
static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
|
||||||
/* Clock name array */
|
/* Clock name array */
|
||||||
static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
|
static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
|
||||||
|
/*! @brief Pointer to tx IRQ handler for each instance. */
|
||||||
|
static sai_tx_isr_t s_saiTxIsr;
|
||||||
|
/*! @brief Pointer to tx IRQ handler for each instance. */
|
||||||
|
static sai_rx_isr_t s_saiRxIsr;
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Code
|
* Code
|
||||||
|
@ -231,12 +241,13 @@ void SAI_TxInit(I2S_Type *base, const sai_config_t *config)
|
||||||
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
||||||
|
|
||||||
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
||||||
/* Configure Master clock output enable */
|
|
||||||
base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
|
|
||||||
|
|
||||||
/* Master clock source setting */
|
/* Master clock source setting */
|
||||||
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
||||||
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
||||||
|
|
||||||
|
/* Configure Master clock output enable */
|
||||||
|
val = (base->MCR & ~I2S_MCR_MOE_MASK);
|
||||||
|
base->MCR = (val | I2S_MCR_MOE(config->mclkOutputEnable));
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
||||||
|
|
||||||
/* Configure audio protocol */
|
/* Configure audio protocol */
|
||||||
|
@ -332,12 +343,13 @@ void SAI_RxInit(I2S_Type *base, const sai_config_t *config)
|
||||||
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
||||||
|
|
||||||
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
||||||
/* Configure Master clock output enable */
|
|
||||||
base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
|
|
||||||
|
|
||||||
/* Master clock source setting */
|
/* Master clock source setting */
|
||||||
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
||||||
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
||||||
|
|
||||||
|
/* Configure Master clock output enable */
|
||||||
|
val = (base->MCR & ~I2S_MCR_MOE_MASK);
|
||||||
|
base->MCR = (val | I2S_MCR_MOE(config->mclkOutputEnable));
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
||||||
|
|
||||||
/* Configure audio protocol */
|
/* Configure audio protocol */
|
||||||
|
@ -663,6 +675,9 @@ void SAI_TransferTxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transf
|
||||||
handle->callback = callback;
|
handle->callback = callback;
|
||||||
handle->userData = userData;
|
handle->userData = userData;
|
||||||
|
|
||||||
|
/* Set the isr pointer */
|
||||||
|
s_saiTxIsr = SAI_TransferTxHandleIRQ;
|
||||||
|
|
||||||
/* Enable Tx irq */
|
/* Enable Tx irq */
|
||||||
EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
|
EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
|
||||||
}
|
}
|
||||||
|
@ -676,6 +691,9 @@ void SAI_TransferRxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transf
|
||||||
handle->callback = callback;
|
handle->callback = callback;
|
||||||
handle->userData = userData;
|
handle->userData = userData;
|
||||||
|
|
||||||
|
/* Set the isr pointer */
|
||||||
|
s_saiRxIsr = SAI_TransferRxHandleIRQ;
|
||||||
|
|
||||||
/* Enable Rx irq */
|
/* Enable Rx irq */
|
||||||
EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
|
EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
|
||||||
}
|
}
|
||||||
|
@ -1011,24 +1029,24 @@ void I2S0_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
|
if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
|
||||||
{
|
{
|
||||||
SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
|
s_saiRxIsr(I2S0, s_saiHandle[0][1]);
|
||||||
}
|
}
|
||||||
if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
|
if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
|
||||||
{
|
{
|
||||||
SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
|
s_saiTxIsr(I2S0, s_saiHandle[0][0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void I2S0_Tx_DriverIRQHandler(void)
|
void I2S0_Tx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[0][0]);
|
assert(s_saiHandle[0][0]);
|
||||||
SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
|
s_saiTxIsr(I2S0, s_saiHandle[0][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2S0_Rx_DriverIRQHandler(void)
|
void I2S0_Rx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[0][1]);
|
assert(s_saiHandle[0][1]);
|
||||||
SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
|
s_saiRxIsr(I2S0, s_saiHandle[0][1]);
|
||||||
}
|
}
|
||||||
#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
|
#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
|
||||||
#endif /* I2S0*/
|
#endif /* I2S0*/
|
||||||
|
@ -1037,12 +1055,12 @@ void I2S0_Rx_DriverIRQHandler(void)
|
||||||
void I2S1_Tx_DriverIRQHandler(void)
|
void I2S1_Tx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[1][0]);
|
assert(s_saiHandle[1][0]);
|
||||||
SAI_TransferTxHandleIRQ(I2S1, s_saiHandle[1][0]);
|
s_saiTxIsr(I2S1, s_saiHandle[1][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2S1_Rx_DriverIRQHandler(void)
|
void I2S1_Rx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[1][1]);
|
assert(s_saiHandle[1][1]);
|
||||||
SAI_TransferRxHandleIRQ(I2S1, s_saiHandle[1][1]);
|
s_saiRxIsr(I2S1, s_saiHandle[1][1]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! @file */
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Definitions
|
* Definitions
|
||||||
|
@ -46,7 +45,7 @@
|
||||||
|
|
||||||
/*! @name Driver version */
|
/*! @name Driver version */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) /*!< Version 2.1.0 */
|
#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 1)) /*!< Version 2.1.1 */
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/*! @brief SAI return status*/
|
/*! @brief SAI return status*/
|
||||||
|
@ -168,7 +167,7 @@ typedef enum _sai_fifo_packing
|
||||||
} sai_fifo_packing_t;
|
} sai_fifo_packing_t;
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
|
#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
|
||||||
|
|
||||||
/*! @brief SAI user configure structure */
|
/*! @brief SAI user configuration structure */
|
||||||
typedef struct _sai_config
|
typedef struct _sai_config
|
||||||
{
|
{
|
||||||
sai_protocol_t protocol; /*!< Audio bus protocol in SAI */
|
sai_protocol_t protocol; /*!< Audio bus protocol in SAI */
|
||||||
|
@ -276,7 +275,7 @@ extern "C" {
|
||||||
* because the clock is not enabled.
|
* because the clock is not enabled.
|
||||||
*
|
*
|
||||||
* @param base SAI base pointer
|
* @param base SAI base pointer
|
||||||
* @param config SAI configure structure.
|
* @param config SAI configuration structure.
|
||||||
*/
|
*/
|
||||||
void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
|
|
||||||
|
@ -292,7 +291,7 @@ void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
* because the clock is not enabled.
|
* because the clock is not enabled.
|
||||||
*
|
*
|
||||||
* @param base SAI base pointer
|
* @param base SAI base pointer
|
||||||
* @param config SAI configure structure.
|
* @param config SAI configuration structure.
|
||||||
*/
|
*/
|
||||||
void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
|
void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,12 @@ enum _sai_transfer_state
|
||||||
kSAI_Error /*!< Transfer error occured. */
|
kSAI_Error /*!< Transfer error occured. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*! @brief Typedef for sai tx interrupt handler. */
|
||||||
|
typedef void (*sai_tx_isr_t)(I2S_Type *base, sai_handle_t *saiHandle);
|
||||||
|
|
||||||
|
/*! @brief Typedef for sai rx interrupt handler. */
|
||||||
|
typedef void (*sai_rx_isr_t)(I2S_Type *base, sai_handle_t *saiHandle);
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Prototypes
|
* Prototypes
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
@ -98,6 +104,10 @@ static const IRQn_Type s_saiTxIRQ[] = I2S_TX_IRQS;
|
||||||
static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
|
static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
|
||||||
/* Clock name array */
|
/* Clock name array */
|
||||||
static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
|
static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
|
||||||
|
/*! @brief Pointer to tx IRQ handler for each instance. */
|
||||||
|
static sai_tx_isr_t s_saiTxIsr;
|
||||||
|
/*! @brief Pointer to tx IRQ handler for each instance. */
|
||||||
|
static sai_rx_isr_t s_saiRxIsr;
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Code
|
* Code
|
||||||
|
@ -231,12 +241,13 @@ void SAI_TxInit(I2S_Type *base, const sai_config_t *config)
|
||||||
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
||||||
|
|
||||||
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
||||||
/* Configure Master clock output enable */
|
|
||||||
base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
|
|
||||||
|
|
||||||
/* Master clock source setting */
|
/* Master clock source setting */
|
||||||
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
||||||
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
||||||
|
|
||||||
|
/* Configure Master clock output enable */
|
||||||
|
val = (base->MCR & ~I2S_MCR_MOE_MASK);
|
||||||
|
base->MCR = (val | I2S_MCR_MOE(config->mclkOutputEnable));
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
||||||
|
|
||||||
/* Configure audio protocol */
|
/* Configure audio protocol */
|
||||||
|
@ -332,12 +343,13 @@ void SAI_RxInit(I2S_Type *base, const sai_config_t *config)
|
||||||
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
||||||
|
|
||||||
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
||||||
/* Configure Master clock output enable */
|
|
||||||
base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
|
|
||||||
|
|
||||||
/* Master clock source setting */
|
/* Master clock source setting */
|
||||||
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
||||||
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
||||||
|
|
||||||
|
/* Configure Master clock output enable */
|
||||||
|
val = (base->MCR & ~I2S_MCR_MOE_MASK);
|
||||||
|
base->MCR = (val | I2S_MCR_MOE(config->mclkOutputEnable));
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
||||||
|
|
||||||
/* Configure audio protocol */
|
/* Configure audio protocol */
|
||||||
|
@ -663,6 +675,9 @@ void SAI_TransferTxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transf
|
||||||
handle->callback = callback;
|
handle->callback = callback;
|
||||||
handle->userData = userData;
|
handle->userData = userData;
|
||||||
|
|
||||||
|
/* Set the isr pointer */
|
||||||
|
s_saiTxIsr = SAI_TransferTxHandleIRQ;
|
||||||
|
|
||||||
/* Enable Tx irq */
|
/* Enable Tx irq */
|
||||||
EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
|
EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
|
||||||
}
|
}
|
||||||
|
@ -676,6 +691,9 @@ void SAI_TransferRxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transf
|
||||||
handle->callback = callback;
|
handle->callback = callback;
|
||||||
handle->userData = userData;
|
handle->userData = userData;
|
||||||
|
|
||||||
|
/* Set the isr pointer */
|
||||||
|
s_saiRxIsr = SAI_TransferRxHandleIRQ;
|
||||||
|
|
||||||
/* Enable Rx irq */
|
/* Enable Rx irq */
|
||||||
EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
|
EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
|
||||||
}
|
}
|
||||||
|
@ -1011,24 +1029,24 @@ void I2S0_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
|
if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
|
||||||
{
|
{
|
||||||
SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
|
s_saiRxIsr(I2S0, s_saiHandle[0][1]);
|
||||||
}
|
}
|
||||||
if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
|
if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
|
||||||
{
|
{
|
||||||
SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
|
s_saiTxIsr(I2S0, s_saiHandle[0][0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void I2S0_Tx_DriverIRQHandler(void)
|
void I2S0_Tx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[0][0]);
|
assert(s_saiHandle[0][0]);
|
||||||
SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
|
s_saiTxIsr(I2S0, s_saiHandle[0][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2S0_Rx_DriverIRQHandler(void)
|
void I2S0_Rx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[0][1]);
|
assert(s_saiHandle[0][1]);
|
||||||
SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
|
s_saiRxIsr(I2S0, s_saiHandle[0][1]);
|
||||||
}
|
}
|
||||||
#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
|
#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
|
||||||
#endif /* I2S0*/
|
#endif /* I2S0*/
|
||||||
|
@ -1037,12 +1055,12 @@ void I2S0_Rx_DriverIRQHandler(void)
|
||||||
void I2S1_Tx_DriverIRQHandler(void)
|
void I2S1_Tx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[1][0]);
|
assert(s_saiHandle[1][0]);
|
||||||
SAI_TransferTxHandleIRQ(I2S1, s_saiHandle[1][0]);
|
s_saiTxIsr(I2S1, s_saiHandle[1][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2S1_Rx_DriverIRQHandler(void)
|
void I2S1_Rx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[1][1]);
|
assert(s_saiHandle[1][1]);
|
||||||
SAI_TransferRxHandleIRQ(I2S1, s_saiHandle[1][1]);
|
s_saiRxIsr(I2S1, s_saiHandle[1][1]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! @file */
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Definitions
|
* Definitions
|
||||||
|
@ -46,7 +45,7 @@
|
||||||
|
|
||||||
/*! @name Driver version */
|
/*! @name Driver version */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) /*!< Version 2.1.0 */
|
#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 1)) /*!< Version 2.1.1 */
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/*! @brief SAI return status*/
|
/*! @brief SAI return status*/
|
||||||
|
@ -168,7 +167,7 @@ typedef enum _sai_fifo_packing
|
||||||
} sai_fifo_packing_t;
|
} sai_fifo_packing_t;
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
|
#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
|
||||||
|
|
||||||
/*! @brief SAI user configure structure */
|
/*! @brief SAI user configuration structure */
|
||||||
typedef struct _sai_config
|
typedef struct _sai_config
|
||||||
{
|
{
|
||||||
sai_protocol_t protocol; /*!< Audio bus protocol in SAI */
|
sai_protocol_t protocol; /*!< Audio bus protocol in SAI */
|
||||||
|
@ -276,7 +275,7 @@ extern "C" {
|
||||||
* because the clock is not enabled.
|
* because the clock is not enabled.
|
||||||
*
|
*
|
||||||
* @param base SAI base pointer
|
* @param base SAI base pointer
|
||||||
* @param config SAI configure structure.
|
* @param config SAI configuration structure.
|
||||||
*/
|
*/
|
||||||
void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
|
|
||||||
|
@ -292,7 +291,7 @@ void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
* because the clock is not enabled.
|
* because the clock is not enabled.
|
||||||
*
|
*
|
||||||
* @param base SAI base pointer
|
* @param base SAI base pointer
|
||||||
* @param config SAI configure structure.
|
* @param config SAI configuration structure.
|
||||||
*/
|
*/
|
||||||
void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
|
void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,12 @@ enum _sai_transfer_state
|
||||||
kSAI_Error /*!< Transfer error occured. */
|
kSAI_Error /*!< Transfer error occured. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*! @brief Typedef for sai tx interrupt handler. */
|
||||||
|
typedef void (*sai_tx_isr_t)(I2S_Type *base, sai_handle_t *saiHandle);
|
||||||
|
|
||||||
|
/*! @brief Typedef for sai rx interrupt handler. */
|
||||||
|
typedef void (*sai_rx_isr_t)(I2S_Type *base, sai_handle_t *saiHandle);
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Prototypes
|
* Prototypes
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
@ -98,6 +104,10 @@ static const IRQn_Type s_saiTxIRQ[] = I2S_TX_IRQS;
|
||||||
static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
|
static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
|
||||||
/* Clock name array */
|
/* Clock name array */
|
||||||
static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
|
static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
|
||||||
|
/*! @brief Pointer to tx IRQ handler for each instance. */
|
||||||
|
static sai_tx_isr_t s_saiTxIsr;
|
||||||
|
/*! @brief Pointer to tx IRQ handler for each instance. */
|
||||||
|
static sai_rx_isr_t s_saiRxIsr;
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Code
|
* Code
|
||||||
|
@ -231,12 +241,13 @@ void SAI_TxInit(I2S_Type *base, const sai_config_t *config)
|
||||||
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
||||||
|
|
||||||
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
||||||
/* Configure Master clock output enable */
|
|
||||||
base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
|
|
||||||
|
|
||||||
/* Master clock source setting */
|
/* Master clock source setting */
|
||||||
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
||||||
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
||||||
|
|
||||||
|
/* Configure Master clock output enable */
|
||||||
|
val = (base->MCR & ~I2S_MCR_MOE_MASK);
|
||||||
|
base->MCR = (val | I2S_MCR_MOE(config->mclkOutputEnable));
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
||||||
|
|
||||||
/* Configure audio protocol */
|
/* Configure audio protocol */
|
||||||
|
@ -332,12 +343,13 @@ void SAI_RxInit(I2S_Type *base, const sai_config_t *config)
|
||||||
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
||||||
|
|
||||||
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
||||||
/* Configure Master clock output enable */
|
|
||||||
base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
|
|
||||||
|
|
||||||
/* Master clock source setting */
|
/* Master clock source setting */
|
||||||
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
||||||
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
||||||
|
|
||||||
|
/* Configure Master clock output enable */
|
||||||
|
val = (base->MCR & ~I2S_MCR_MOE_MASK);
|
||||||
|
base->MCR = (val | I2S_MCR_MOE(config->mclkOutputEnable));
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
||||||
|
|
||||||
/* Configure audio protocol */
|
/* Configure audio protocol */
|
||||||
|
@ -663,6 +675,9 @@ void SAI_TransferTxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transf
|
||||||
handle->callback = callback;
|
handle->callback = callback;
|
||||||
handle->userData = userData;
|
handle->userData = userData;
|
||||||
|
|
||||||
|
/* Set the isr pointer */
|
||||||
|
s_saiTxIsr = SAI_TransferTxHandleIRQ;
|
||||||
|
|
||||||
/* Enable Tx irq */
|
/* Enable Tx irq */
|
||||||
EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
|
EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
|
||||||
}
|
}
|
||||||
|
@ -676,6 +691,9 @@ void SAI_TransferRxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transf
|
||||||
handle->callback = callback;
|
handle->callback = callback;
|
||||||
handle->userData = userData;
|
handle->userData = userData;
|
||||||
|
|
||||||
|
/* Set the isr pointer */
|
||||||
|
s_saiRxIsr = SAI_TransferRxHandleIRQ;
|
||||||
|
|
||||||
/* Enable Rx irq */
|
/* Enable Rx irq */
|
||||||
EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
|
EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
|
||||||
}
|
}
|
||||||
|
@ -1011,24 +1029,24 @@ void I2S0_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
|
if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
|
||||||
{
|
{
|
||||||
SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
|
s_saiRxIsr(I2S0, s_saiHandle[0][1]);
|
||||||
}
|
}
|
||||||
if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
|
if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
|
||||||
{
|
{
|
||||||
SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
|
s_saiTxIsr(I2S0, s_saiHandle[0][0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void I2S0_Tx_DriverIRQHandler(void)
|
void I2S0_Tx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[0][0]);
|
assert(s_saiHandle[0][0]);
|
||||||
SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
|
s_saiTxIsr(I2S0, s_saiHandle[0][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2S0_Rx_DriverIRQHandler(void)
|
void I2S0_Rx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[0][1]);
|
assert(s_saiHandle[0][1]);
|
||||||
SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
|
s_saiRxIsr(I2S0, s_saiHandle[0][1]);
|
||||||
}
|
}
|
||||||
#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
|
#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
|
||||||
#endif /* I2S0*/
|
#endif /* I2S0*/
|
||||||
|
@ -1037,12 +1055,12 @@ void I2S0_Rx_DriverIRQHandler(void)
|
||||||
void I2S1_Tx_DriverIRQHandler(void)
|
void I2S1_Tx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[1][0]);
|
assert(s_saiHandle[1][0]);
|
||||||
SAI_TransferTxHandleIRQ(I2S1, s_saiHandle[1][0]);
|
s_saiTxIsr(I2S1, s_saiHandle[1][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2S1_Rx_DriverIRQHandler(void)
|
void I2S1_Rx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[1][1]);
|
assert(s_saiHandle[1][1]);
|
||||||
SAI_TransferRxHandleIRQ(I2S1, s_saiHandle[1][1]);
|
s_saiRxIsr(I2S1, s_saiHandle[1][1]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! @file */
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Definitions
|
* Definitions
|
||||||
|
@ -46,7 +45,7 @@
|
||||||
|
|
||||||
/*! @name Driver version */
|
/*! @name Driver version */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) /*!< Version 2.1.0 */
|
#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 1)) /*!< Version 2.1.1 */
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/*! @brief SAI return status*/
|
/*! @brief SAI return status*/
|
||||||
|
@ -168,7 +167,7 @@ typedef enum _sai_fifo_packing
|
||||||
} sai_fifo_packing_t;
|
} sai_fifo_packing_t;
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
|
#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
|
||||||
|
|
||||||
/*! @brief SAI user configure structure */
|
/*! @brief SAI user configuration structure */
|
||||||
typedef struct _sai_config
|
typedef struct _sai_config
|
||||||
{
|
{
|
||||||
sai_protocol_t protocol; /*!< Audio bus protocol in SAI */
|
sai_protocol_t protocol; /*!< Audio bus protocol in SAI */
|
||||||
|
@ -276,7 +275,7 @@ extern "C" {
|
||||||
* because the clock is not enabled.
|
* because the clock is not enabled.
|
||||||
*
|
*
|
||||||
* @param base SAI base pointer
|
* @param base SAI base pointer
|
||||||
* @param config SAI configure structure.
|
* @param config SAI configuration structure.
|
||||||
*/
|
*/
|
||||||
void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
|
|
||||||
|
@ -292,7 +291,7 @@ void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
* because the clock is not enabled.
|
* because the clock is not enabled.
|
||||||
*
|
*
|
||||||
* @param base SAI base pointer
|
* @param base SAI base pointer
|
||||||
* @param config SAI configure structure.
|
* @param config SAI configuration structure.
|
||||||
*/
|
*/
|
||||||
void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
|
void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,12 @@ enum _sai_transfer_state
|
||||||
kSAI_Error /*!< Transfer error occured. */
|
kSAI_Error /*!< Transfer error occured. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*! @brief Typedef for sai tx interrupt handler. */
|
||||||
|
typedef void (*sai_tx_isr_t)(I2S_Type *base, sai_handle_t *saiHandle);
|
||||||
|
|
||||||
|
/*! @brief Typedef for sai rx interrupt handler. */
|
||||||
|
typedef void (*sai_rx_isr_t)(I2S_Type *base, sai_handle_t *saiHandle);
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Prototypes
|
* Prototypes
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
@ -98,6 +104,10 @@ static const IRQn_Type s_saiTxIRQ[] = I2S_TX_IRQS;
|
||||||
static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
|
static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
|
||||||
/* Clock name array */
|
/* Clock name array */
|
||||||
static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
|
static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
|
||||||
|
/*! @brief Pointer to tx IRQ handler for each instance. */
|
||||||
|
static sai_tx_isr_t s_saiTxIsr;
|
||||||
|
/*! @brief Pointer to tx IRQ handler for each instance. */
|
||||||
|
static sai_rx_isr_t s_saiRxIsr;
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Code
|
* Code
|
||||||
|
@ -231,12 +241,13 @@ void SAI_TxInit(I2S_Type *base, const sai_config_t *config)
|
||||||
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
||||||
|
|
||||||
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
||||||
/* Configure Master clock output enable */
|
|
||||||
base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
|
|
||||||
|
|
||||||
/* Master clock source setting */
|
/* Master clock source setting */
|
||||||
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
||||||
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
||||||
|
|
||||||
|
/* Configure Master clock output enable */
|
||||||
|
val = (base->MCR & ~I2S_MCR_MOE_MASK);
|
||||||
|
base->MCR = (val | I2S_MCR_MOE(config->mclkOutputEnable));
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
||||||
|
|
||||||
/* Configure audio protocol */
|
/* Configure audio protocol */
|
||||||
|
@ -332,12 +343,13 @@ void SAI_RxInit(I2S_Type *base, const sai_config_t *config)
|
||||||
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
|
||||||
|
|
||||||
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
|
||||||
/* Configure Master clock output enable */
|
|
||||||
base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
|
|
||||||
|
|
||||||
/* Master clock source setting */
|
/* Master clock source setting */
|
||||||
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
val = (base->MCR & ~I2S_MCR_MICS_MASK);
|
||||||
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
|
||||||
|
|
||||||
|
/* Configure Master clock output enable */
|
||||||
|
val = (base->MCR & ~I2S_MCR_MOE_MASK);
|
||||||
|
base->MCR = (val | I2S_MCR_MOE(config->mclkOutputEnable));
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
#endif /* FSL_FEATURE_SAI_HAS_MCR */
|
||||||
|
|
||||||
/* Configure audio protocol */
|
/* Configure audio protocol */
|
||||||
|
@ -663,6 +675,9 @@ void SAI_TransferTxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transf
|
||||||
handle->callback = callback;
|
handle->callback = callback;
|
||||||
handle->userData = userData;
|
handle->userData = userData;
|
||||||
|
|
||||||
|
/* Set the isr pointer */
|
||||||
|
s_saiTxIsr = SAI_TransferTxHandleIRQ;
|
||||||
|
|
||||||
/* Enable Tx irq */
|
/* Enable Tx irq */
|
||||||
EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
|
EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
|
||||||
}
|
}
|
||||||
|
@ -676,6 +691,9 @@ void SAI_TransferRxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transf
|
||||||
handle->callback = callback;
|
handle->callback = callback;
|
||||||
handle->userData = userData;
|
handle->userData = userData;
|
||||||
|
|
||||||
|
/* Set the isr pointer */
|
||||||
|
s_saiRxIsr = SAI_TransferRxHandleIRQ;
|
||||||
|
|
||||||
/* Enable Rx irq */
|
/* Enable Rx irq */
|
||||||
EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
|
EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
|
||||||
}
|
}
|
||||||
|
@ -1011,24 +1029,24 @@ void I2S0_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
|
if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
|
||||||
{
|
{
|
||||||
SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
|
s_saiRxIsr(I2S0, s_saiHandle[0][1]);
|
||||||
}
|
}
|
||||||
if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
|
if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
|
||||||
{
|
{
|
||||||
SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
|
s_saiTxIsr(I2S0, s_saiHandle[0][0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void I2S0_Tx_DriverIRQHandler(void)
|
void I2S0_Tx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[0][0]);
|
assert(s_saiHandle[0][0]);
|
||||||
SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
|
s_saiTxIsr(I2S0, s_saiHandle[0][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2S0_Rx_DriverIRQHandler(void)
|
void I2S0_Rx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[0][1]);
|
assert(s_saiHandle[0][1]);
|
||||||
SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
|
s_saiRxIsr(I2S0, s_saiHandle[0][1]);
|
||||||
}
|
}
|
||||||
#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
|
#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
|
||||||
#endif /* I2S0*/
|
#endif /* I2S0*/
|
||||||
|
@ -1037,12 +1055,12 @@ void I2S0_Rx_DriverIRQHandler(void)
|
||||||
void I2S1_Tx_DriverIRQHandler(void)
|
void I2S1_Tx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[1][0]);
|
assert(s_saiHandle[1][0]);
|
||||||
SAI_TransferTxHandleIRQ(I2S1, s_saiHandle[1][0]);
|
s_saiTxIsr(I2S1, s_saiHandle[1][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2S1_Rx_DriverIRQHandler(void)
|
void I2S1_Rx_DriverIRQHandler(void)
|
||||||
{
|
{
|
||||||
assert(s_saiHandle[1][1]);
|
assert(s_saiHandle[1][1]);
|
||||||
SAI_TransferRxHandleIRQ(I2S1, s_saiHandle[1][1]);
|
s_saiRxIsr(I2S1, s_saiHandle[1][1]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! @file */
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Definitions
|
* Definitions
|
||||||
|
@ -46,7 +45,7 @@
|
||||||
|
|
||||||
/*! @name Driver version */
|
/*! @name Driver version */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) /*!< Version 2.1.0 */
|
#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 1)) /*!< Version 2.1.1 */
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/*! @brief SAI return status*/
|
/*! @brief SAI return status*/
|
||||||
|
@ -168,7 +167,7 @@ typedef enum _sai_fifo_packing
|
||||||
} sai_fifo_packing_t;
|
} sai_fifo_packing_t;
|
||||||
#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
|
#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
|
||||||
|
|
||||||
/*! @brief SAI user configure structure */
|
/*! @brief SAI user configuration structure */
|
||||||
typedef struct _sai_config
|
typedef struct _sai_config
|
||||||
{
|
{
|
||||||
sai_protocol_t protocol; /*!< Audio bus protocol in SAI */
|
sai_protocol_t protocol; /*!< Audio bus protocol in SAI */
|
||||||
|
@ -276,7 +275,7 @@ extern "C" {
|
||||||
* because the clock is not enabled.
|
* because the clock is not enabled.
|
||||||
*
|
*
|
||||||
* @param base SAI base pointer
|
* @param base SAI base pointer
|
||||||
* @param config SAI configure structure.
|
* @param config SAI configuration structure.
|
||||||
*/
|
*/
|
||||||
void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
|
|
||||||
|
@ -292,7 +291,7 @@ void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
* because the clock is not enabled.
|
* because the clock is not enabled.
|
||||||
*
|
*
|
||||||
* @param base SAI base pointer
|
* @param base SAI base pointer
|
||||||
* @param config SAI configure structure.
|
* @param config SAI configuration structure.
|
||||||
*/
|
*/
|
||||||
void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
|
void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue