summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/usart_dma.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/atsam/libraries/libchip/source/usart_dma.c')
-rw-r--r--c/src/lib/libbsp/arm/atsam/libraries/libchip/source/usart_dma.c600
1 files changed, 0 insertions, 600 deletions
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/usart_dma.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/usart_dma.c
deleted file mode 100644
index 51488e6bce..0000000000
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/usart_dma.c
+++ /dev/null
@@ -1,600 +0,0 @@
-/* ---------------------------------------------------------------------------- */
-/* Atmel Microcontroller Software Support */
-/* SAM Software Package License */
-/* ---------------------------------------------------------------------------- */
-/* Copyright (c) 2015, Atmel Corporation */
-/* */
-/* All rights reserved. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following condition is met: */
-/* */
-/* - Redistributions of source code must retain the above copyright notice, */
-/* this list of conditions and the disclaimer below. */
-/* */
-/* Atmel's name may not be used to endorse or promote products derived from */
-/* this software without specific prior written permission. */
-/* */
-/* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
-/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
-/* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
-/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
-/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
-/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
-/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
-/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
-/* ---------------------------------------------------------------------------- */
-
-/**
-* \addtogroup usart_dma_module USART xDMA driver
-* \section Usage
-*
-* <ul>
-* <li> USARTD_Configure() initializes and configures the USART peripheral
-* and xDMA for data transfer.</li>
-* <li> Configures the parameters for the device corresponding to the cs
-* value by USARTD_ConfigureCS(). </li>
-* </ul>
-*
-*/
-
-/**
- * \file
- *
- * Implementation for the USART with xDMA driver.
- *
- */
-
-/*----------------------------------------------------------------------------
- * Headers
- *----------------------------------------------------------------------------*/
-
-#include "chip.h"
-#include "string.h"
-#include "stdlib.h"
-
-/*----------------------------------------------------------------------------
- * Local functions
- *----------------------------------------------------------------------------*/
-
-/**
- * \brief USART xDMA Rx callback
- * Invoked on USART DMA reception done.
- * \param channel DMA channel.
- * \param pArg Pointer to callback argument - Pointer to USARTDma instance.
- */
-static void USARTD_Rx_Cb(uint32_t channel, UsartDma *pArg)
-{
-
- UsartChannel *pUsartdCh = pArg->pRxChannel;
-
- if (channel != pUsartdCh->ChNum)
- return;
-
- /* Release the DMA channels */
- XDMAD_FreeChannel(pArg->pXdmad, pUsartdCh->ChNum);
- pUsartdCh->dmaProgress = 1;
- SCB_InvalidateDCache_by_Addr((uint32_t *)pUsartdCh->pBuff, pUsartdCh->BuffSize);
-
-}
-
-/**
- * \brief USART xDMA Rx callback
- * Invoked on USART DMA reception done.
- * \param channel DMA channel.
- * \param pArg Pointer to callback argument - Pointer to USARTDma instance.
- */
-static void USARTD_Tx_Cb(uint32_t channel, UsartDma *pArg)
-{
- UsartChannel *pUsartdCh = pArg->pTxChannel;
-
- if (channel != pUsartdCh->ChNum)
- return;
-
- /* Release the DMA channels */
- XDMAD_FreeChannel(pArg->pXdmad, pUsartdCh->ChNum);
-
- pUsartdCh->dmaProgress = 1;
-}
-
-/**
- * \brief Configure the USART Rx DMA Destination with Linker List mode.
- *
- * \param UsartChannel Pointer to USART dma channel
- * \returns 0 if the dma multibuffer configuration successfully; otherwise
- * returnsUSARTD_ERROR_XXX.
- */
-static uint8_t _configureRxDma(UsartDma *pUsart, UsartChannel *pUsartRx)
-{
- sXdmadCfg xdmadRxCfg;
- uint32_t xdmaCndc, xdmaInt;
- uint32_t i, LLI_Size;
- Usart *pUsartHwRx = pUsart->pUsartHw;
- sXdmad *pXdmadRx = pUsart->pXdmad;
- uint8_t *pBuff = 0;
-
-
- /* Setup RX Single block */
- if (pUsartRx->dmaProgrammingMode < XDMAD_LLI) {
- xdmadRxCfg.mbr_ubc = pUsartRx->BuffSize;
- xdmadRxCfg.mbr_da = (uint32_t)pUsartRx->pBuff;
-
- xdmadRxCfg.mbr_sa = (uint32_t)&pUsartHwRx->US_RHR;
- xdmadRxCfg.mbr_cfg = XDMAC_CC_TYPE_PER_TRAN |
- XDMAC_CC_MBSIZE_SIXTEEN |
- XDMAC_CC_DSYNC_PER2MEM |
- XDMAC_CC_CSIZE_CHK_1 |
- XDMAC_CC_DWIDTH_BYTE |
- XDMAC_CC_SIF_AHB_IF1 |
- XDMAC_CC_DIF_AHB_IF1 |
- XDMAC_CC_SAM_FIXED_AM |
- XDMAC_CC_DAM_INCREMENTED_AM |
- XDMAC_CC_PERID(XDMAIF_Get_ChannelNumber
- (pUsart->usartId, XDMAD_TRANSFER_RX));
-
- xdmadRxCfg.mbr_bc = 0;
-
- if (pUsartRx->dmaProgrammingMode == XDMAD_MULTI)
- xdmadRxCfg.mbr_bc = pUsartRx->dmaBlockSize;
-
- xdmadRxCfg.mbr_sus = 0;
- xdmadRxCfg.mbr_dus = 0;
- xdmaCndc = 0;
- xdmaInt = (XDMAC_CIE_BIE |
- XDMAC_CIE_DIE |
- XDMAC_CIE_FIE |
- XDMAC_CIE_RBIE |
- XDMAC_CIE_WBIE |
- XDMAC_CIE_ROIE);
- } else if (pUsartRx->dmaProgrammingMode == XDMAD_LLI) {
-
- /* Setup RX Link List */
- LLI_Size = pUsartRx->dmaBlockSize;
- pBuff = pUsartRx->pBuff;
-
- if (pUsartRx->pLLIview != NULL) {
- free(pUsartRx->pLLIview);
- pUsartRx->pLLIview = NULL;
- }
-
- pUsartRx->pLLIview = malloc(sizeof(LinkedListDescriporView1) * LLI_Size);
-
- if (pUsartRx->pLLIview == NULL) {
- TRACE_ERROR(" Can not allocate memory to Rx LLI");
- return USARTD_ERROR;
- }
-
- xdmadRxCfg.mbr_cfg = XDMAC_CC_TYPE_PER_TRAN |
- XDMAC_CC_MBSIZE_SIXTEEN |
- XDMAC_CC_DSYNC_PER2MEM |
- XDMAC_CC_MEMSET_NORMAL_MODE |
- XDMAC_CC_CSIZE_CHK_1 |
- XDMAC_CC_DWIDTH_BYTE |
- XDMAC_CC_SIF_AHB_IF1 |
- XDMAC_CC_DIF_AHB_IF1 |
- XDMAC_CC_SAM_FIXED_AM |
- XDMAC_CC_DAM_INCREMENTED_AM |
- XDMAC_CC_PERID(XDMAIF_Get_ChannelNumber
- (pUsart->usartId, XDMAD_TRANSFER_RX));
- xdmadRxCfg.mbr_bc = 0;
-
- for (i = 0; i < LLI_Size; i++) {
- pUsartRx->pLLIview[i].mbr_ubc = XDMA_UBC_NVIEW_NDV1 |
- XDMA_UBC_NSEN_UNCHANGED |
- XDMA_UBC_NDEN_UPDATED |
- ((i == LLI_Size - 1) ? (
- (pUsartRx->dmaRingBuffer) ?
- XDMA_UBC_NDE_FETCH_EN : 0) :
- XDMA_UBC_NDE_FETCH_EN) |
- pUsartRx->BuffSize;
- pUsartRx->pLLIview[i].mbr_sa = (uint32_t)&pUsartHwRx->US_RHR;
- pUsartRx->pLLIview[i].mbr_da = (uint32_t)pBuff;
- pUsartRx->pLLIview[i].mbr_nda = (i == (LLI_Size - 1)) ?
- ((pUsartRx->dmaRingBuffer) ? (uint32_t)pUsartRx->pLLIview : 0)
- : (uint32_t)&pUsartRx->pLLIview[ i + 1 ];
- pBuff += pUsartRx->BuffSize;
- }
-
- SCB_CleanDCache_by_Addr((uint32_t *)(pUsartRx->pLLIview),
- sizeof(LinkedListDescriporView1)*LLI_Size);
- xdmaCndc = XDMAC_CNDC_NDVIEW_NDV1 |
- XDMAC_CNDC_NDE_DSCR_FETCH_EN |
- XDMAC_CNDC_NDSUP_SRC_PARAMS_UPDATED |
- XDMAC_CNDC_NDDUP_DST_PARAMS_UPDATED;
- xdmaInt = ((pUsartRx->dmaRingBuffer) ? XDMAC_CIE_BIE : XDMAC_CIE_LIE);
- } else
- return 1;
-
- if (XDMAD_ConfigureTransfer(
- pXdmadRx, pUsartRx->ChNum, &xdmadRxCfg, xdmaCndc,
- (uint32_t)pUsartRx->pLLIview, xdmaInt))
- return USARTD_ERROR;
-
- return 0;
-}
-
-/**
- * \brief Configure the USART tx DMA source with Linker List mode.
- *
- * \param UsartChannel Pointer to USART dma channel
- * \returns 0 if the dma multibuffer configuration successfully; otherwise returns
- * USARTD_ERROR_XXX.
- */
-static uint8_t _configureTxDma(UsartDma *pUsart, UsartChannel *pUsartTx)
-{
- sXdmadCfg xdmadTxCfg;
- uint32_t xdmaCndc, xdmaInt, LLI_Size, i;
- uint8_t *pBuff = 0;
- Usart *pUsartHwTx = pUsart->pUsartHw;
- sXdmad *pXdmadTx = pUsart->pXdmad;
-
- /* Setup TX Link List */
-
- if (pUsartTx->dmaProgrammingMode < XDMAD_LLI) {
- /* Number of Data */
- xdmadTxCfg.mbr_ubc = pUsartTx->BuffSize;
- /* Source and Destination address of DMA */
- xdmadTxCfg.mbr_sa = (uint32_t)pUsartTx->pBuff;
- xdmadTxCfg.mbr_da = (uint32_t)&pUsartHwTx->US_THR;
- /* DMA Channel configuration */
- xdmadTxCfg.mbr_cfg = XDMAC_CC_TYPE_PER_TRAN |
- XDMAC_CC_MBSIZE_SIXTEEN |
- XDMAC_CC_DSYNC_MEM2PER |
- XDMAC_CC_CSIZE_CHK_1 |
- XDMAC_CC_DWIDTH_BYTE |
- XDMAC_CC_SIF_AHB_IF1 |
- XDMAC_CC_DIF_AHB_IF1 |
- XDMAC_CC_SAM_INCREMENTED_AM |
- XDMAC_CC_DAM_FIXED_AM |
- XDMAC_CC_PERID(XDMAIF_Get_ChannelNumber
- (pUsart->usartId, XDMAD_TRANSFER_TX));
-
- xdmadTxCfg.mbr_bc = 0;
-
- if (pUsartTx->dmaProgrammingMode == XDMAD_MULTI)
- xdmadTxCfg.mbr_bc = pUsartTx->dmaBlockSize;
-
- xdmadTxCfg.mbr_sus = 0;
- xdmadTxCfg.mbr_dus = 0;
- xdmadTxCfg.mbr_ds = 0;
- xdmaCndc = 0;
- /* Enable End of Block; Read Bus error; Write Bus Error;
- Overflow Error interrupt */
- xdmaInt = (XDMAC_CIE_BIE |
- XDMAC_CIE_RBIE |
- XDMAC_CIE_WBIE |
- XDMAC_CIE_ROIE);
- } else if (pUsartTx->dmaProgrammingMode == XDMAD_LLI) {
- LLI_Size = pUsartTx->dmaBlockSize;
- pBuff = pUsartTx->pBuff;
-
- /* If channel's LLI is already configured and application
- want to reconfigured it, free before re-allocating memory */
- if (pUsartTx->pLLIview != NULL) {
- free(pUsartTx->pLLIview);
- pUsartTx->pLLIview = NULL;
- }
-
- pUsartTx->pLLIview = malloc(sizeof(LinkedListDescriporView1) * LLI_Size);
-
- if (pUsartTx->pLLIview == NULL) {
- TRACE_ERROR(" Can not allocate memory to Tx LLI");
- return USARTD_ERROR;
- }
-
- xdmadTxCfg.mbr_cfg = XDMAC_CC_TYPE_PER_TRAN |
- XDMAC_CC_MBSIZE_SIXTEEN |
- XDMAC_CC_DSYNC_MEM2PER |
- XDMAC_CC_MEMSET_NORMAL_MODE |
- XDMAC_CC_CSIZE_CHK_1 |
- XDMAC_CC_DWIDTH_BYTE |
- XDMAC_CC_SIF_AHB_IF1 |
- XDMAC_CC_DIF_AHB_IF1 |
- XDMAC_CC_SAM_INCREMENTED_AM |
- XDMAC_CC_DAM_FIXED_AM |
- XDMAC_CC_PERID(XDMAIF_Get_ChannelNumber
- (pUsart->usartId, XDMAD_TRANSFER_TX));
- xdmadTxCfg.mbr_bc = 0;
-
- for (i = 0; i < LLI_Size; i++) {
- pUsartTx->pLLIview[i].mbr_ubc = XDMA_UBC_NVIEW_NDV1 |
- XDMA_UBC_NSEN_UPDATED |
- XDMA_UBC_NDEN_UNCHANGED |
- ((i == LLI_Size - 1) ? ((pUsartTx->dmaRingBuffer)
- ? XDMA_UBC_NDE_FETCH_EN : 0) :
- XDMA_UBC_NDE_FETCH_EN) | pUsartTx->BuffSize;
- pUsartTx->pLLIview[i].mbr_sa = (uint32_t)pBuff;
- pUsartTx->pLLIview[i].mbr_da = (uint32_t)&pUsartHwTx->US_THR;
- pUsartTx->pLLIview[i].mbr_nda = (i == (LLI_Size - 1)) ?
- ((pUsartTx->dmaRingBuffer) ? (uint32_t)pUsartTx->pLLIview : 0)
- : (uint32_t)&pUsartTx->pLLIview[ i + 1 ];
- pBuff += pUsartTx->BuffSize;
- }
-
- SCB_CleanDCache_by_Addr((uint32_t *)(pUsartTx->pLLIview),
- sizeof(LinkedListDescriporView1)*LLI_Size);
- xdmaCndc = XDMAC_CNDC_NDVIEW_NDV1 |
- XDMAC_CNDC_NDE_DSCR_FETCH_EN |
- XDMAC_CNDC_NDSUP_SRC_PARAMS_UPDATED |
- XDMAC_CNDC_NDDUP_DST_PARAMS_UPDATED;
- xdmaInt = ((pUsartTx->dmaRingBuffer) ? XDMAC_CIE_BIE : XDMAC_CIE_LIE);
- } else {
- TRACE_ERROR("DmaProgState is incorrect \n\r");
- return 1;
- }
-
- if (XDMAD_ConfigureTransfer(pXdmadTx, pUsartTx->ChNum,
- &xdmadTxCfg, xdmaCndc, (uint32_t)pUsartTx->pLLIview, xdmaInt))
- return USARTD_ERROR;
-
- return 0;
-}
-
-/*----------------------------------------------------------------------------
- * Exported functions
- *----------------------------------------------------------------------------*/
-/**
- * \brief Initializes the USARTDma structure and the corresponding USART & DMA .
- * hardware select value.
- * The driver will uses DMA channel 0 for RX and DMA channel 1 for TX.
- * The DMA channels are freed automatically when no USART command processing.
- *
- * \param pUSARTD Pointer to a UsartDma instance.
- * \param pUsartHw Associated USART peripheral.
- * \param usartId USART peripheral identifier.
- * \param UsartClk USART clock.
- * \param pXdmad Pointer to a Dmad instance.
- */
-uint32_t USARTD_Configure(UsartDma *pUsartd ,
- uint8_t usartId,
- uint32_t UsartMode,
- uint32_t BaudRate,
- uint32_t UsartClk)
-{
- /* Enable the peripheral clock in the PMC*/
- PMC_EnablePeripheral(usartId);
-
- /* Initialize the USART structure */
- pUsartd->usartId = usartId;
-
- if (usartId == ID_USART0)
- pUsartd->pUsartHw = USART0;
-
- if (usartId == ID_USART1)
- pUsartd->pUsartHw = USART1;
-
- if (usartId == ID_USART2)
- pUsartd->pUsartHw = USART2;
-
-
- /* Enable the USART Peripheral ,Execute a software reset of the USART,
- Configure USART in Master Mode*/
- USART_Configure (pUsartd->pUsartHw, UsartMode, BaudRate, UsartClk);
-
- /* Check if DMA IRQ is enable; if not clear pending IRQs in init it */
- if (!(NVIC_GetActive(XDMAC_IRQn)))
- NVIC_ClearPendingIRQ(XDMAC_IRQn);
-
- return 0;
-}
-
-/**
- * \brief This function initialize the appropriate DMA channel for Rx channel
- * of USART
- * \param pUsartd Pointer to a UsartDma instance.
- * \param pRxCh Pointer to TxChannel configuration
- * \returns 0 if the transfer has been started successfully;
- * otherwise returns USARTD_ERROR_LOCK is the driver is in use, or
- * USARTD_ERROR if the command is not valid.
- */
-uint32_t USARTD_EnableRxChannels(UsartDma *pUsartd, UsartChannel *pRxCh)
-{
- uint32_t Channel;
-
- assert(pRxCh);
- /* Init USART Rx Channel. */
- pUsartd->pRxChannel = pRxCh;
-
- /* Enables the USART to receive data. */
- USART_SetReceiverEnabled (pUsartd->pUsartHw , ENABLE);
-
-
- /* Allocate a DMA channel for USART0/1 RX. */
- Channel = XDMAD_AllocateChannel(pUsartd->pXdmad, pUsartd->usartId,
- XDMAD_TRANSFER_MEMORY);
-
- if (Channel == XDMAD_ALLOC_FAILED)
- return USARTD_ERROR;
-
- pRxCh->ChNum = Channel;
-
- /* Setup callbacks for USART RX */
- if (pUsartd->pRxChannel->callback) {
- XDMAD_SetCallback(pUsartd->pXdmad, pRxCh->ChNum,
- (XdmadTransferCallback)pRxCh->callback, pRxCh->pArgument);
- } else {
- XDMAD_SetCallback(pUsartd->pXdmad, pRxCh->ChNum,
- (XdmadTransferCallback)USARTD_Rx_Cb, pUsartd);
- }
-
-
- if (XDMAD_PrepareChannel(pUsartd->pXdmad, pRxCh->ChNum))
- return USARTD_ERROR;
-
- if (_configureRxDma(pUsartd , pUsartd->pRxChannel))
- return USARTD_ERROR_LOCK;
-
- /* Check if DMA IRQ is enable; if not Enable it */
- if (!(NVIC_GetActive(XDMAC_IRQn))) {
- /* Enable interrupt */
- NVIC_EnableIRQ(XDMAC_IRQn);
- }
-
- return 0;
-}
-
-/**
- * \brief This function initialize the appropriate DMA channel for Tx channel
- * of USART
- * \param pUsartd Pointer to a USARTDma instance.
- * \param pTxCh Pointer to TxChannel configuration
- * \returns 0 if the transfer has been started successfully;
- * otherwise returns USARTD_ERROR_LOCK is the driver is in use, or
- * USARTD_ERROR if the command is not valid.
- */
-uint32_t USARTD_EnableTxChannels(UsartDma *pUsartd, UsartChannel *pTxCh)
-{
-
- uint32_t Channel;
-
- assert(pTxCh);
-
- /* Init USART Tx Channel. */
- pUsartd->pTxChannel = pTxCh;
-
- /* Enables the USART to transfer data. */
- USART_SetTransmitterEnabled (pUsartd->pUsartHw , ENABLE);
-
- /* Allocate a DMA channel for USART0/1 TX. */
- Channel = XDMAD_AllocateChannel(pUsartd->pXdmad, XDMAD_TRANSFER_MEMORY,
- pUsartd->usartId);
-
- if (Channel == XDMAD_ALLOC_FAILED)
- return USARTD_ERROR;
-
- pTxCh->ChNum = Channel;
-
- /* Setup callbacks for USART0/1 TX */
- if (pUsartd->pTxChannel->callback) {
- XDMAD_SetCallback(pUsartd->pXdmad, pTxCh->ChNum,
- (XdmadTransferCallback)pTxCh->callback, pTxCh->pArgument);
- } else
- XDMAD_SetCallback(pUsartd->pXdmad, pTxCh->ChNum,
- (XdmadTransferCallback)USARTD_Tx_Cb, pUsartd);
-
- if (XDMAD_PrepareChannel(pUsartd->pXdmad, pTxCh->ChNum))
- return USARTD_ERROR;
-
- if (_configureTxDma(pUsartd , pUsartd->pTxChannel))
- return USARTD_ERROR_LOCK;
-
- /* Check if DMA IRQ is enable; if not Enable it */
- if (!(NVIC_GetActive(XDMAC_IRQn))) {
- /* Enable interrupt */
- NVIC_EnableIRQ(XDMAC_IRQn);
- }
-
- return 0;
-}
-
-/**
- * \brief This function disables the appropriate DMA channel for Rx channel of
- * USART
- * \param pUsartd Pointer to a UsartDma instance.
- * \param pRxCh Pointer to TxChannel configuration
- * \returns 0 if the transfer has been started successfully;
- * otherwise returns USARTD_ERROR_LOCK is the driver is in use, or
- * USARTD_ERROR if the command is not valid.
- */
-uint32_t USARTD_DisableRxChannels(UsartDma *pUsartd, UsartChannel *pRxCh)
-{
- assert(pRxCh);
-
- /* Enables the USART to transfer data. */
- USART_SetReceiverEnabled (pUsartd->pUsartHw , DISABLE);
-
- XDMAD_StopTransfer(pUsartd->pXdmad, pRxCh->ChNum);
-
- XDMAD_SetCallback(pUsartd->pXdmad, pRxCh->ChNum, NULL, NULL);
-
- /* Free allocated DMA channel for USART TX. */
- if (XDMAD_FreeChannel(pUsartd->pXdmad, pRxCh->ChNum) != XDMAD_OK)
- return USARTD_ERROR;
-
- if (pRxCh->dmaProgrammingMode == XDMAD_LLI) {
- free(pRxCh->pLLIview);
- pRxCh->pLLIview = NULL;
- }
-
- pRxCh->dmaProgress = 1;
- return 0;
-}
-
-/**
- * \brief This function disables the appropriate DMA channel for Tx channel of
- * USART
- * \param pUsartd Pointer to a USARTDma instance.
- * \param pTxCh Pointer to TxChannel configuration
- * \returns 0 if the transfer has been started successfully;
- * otherwise returns USARTD_ERROR_LOCK is the driver is in use, or
- * USARTD_ERROR if the command is not valid.
- */
-
-uint32_t USARTD_DisableTxChannels(UsartDma *pUsartd, UsartChannel *pTxCh)
-{
- assert(pTxCh);
-
- /* Enables the USART to transfer data. */
- USART_SetTransmitterEnabled (pUsartd->pUsartHw , DISABLE);
-
- XDMAD_StopTransfer(pUsartd->pXdmad, pTxCh->ChNum);
-
- XDMAD_SetCallback(pUsartd->pXdmad, pTxCh->ChNum, NULL, NULL);
-
- /* Free allocated DMA channel for USART TX. */
- if (XDMAD_FreeChannel(pUsartd->pXdmad, pTxCh->ChNum) != XDMAD_OK)
- return USARTD_ERROR;
-
- if (pTxCh->dmaProgrammingMode == XDMAD_LLI) {
- free(pTxCh->pLLIview);
- pTxCh->pLLIview = NULL;
- }
-
- pTxCh->dmaProgress = 1;
- return 0;
-}
-
-/**
- * \brief Starts a USART master transfer. This is a non blocking function. It
- * will return as soon as the transfer is started.
- *
- * \param pUSARTD Pointer to a USARTDma instance.
- * \returns 0 if the transfer has been started successfully; otherwise returns
- * USARTD_ERROR_LOCK is the driver is in use, or USARTD_ERROR if the command is
- * not valid.
- */
-uint32_t USARTD_SendData(UsartDma *pUsartd)
-{
- /* Start DMA 0(RX) && 1(TX) */
- pUsartd->pTxChannel->dmaProgress = 0;
- SCB_CleanDCache_by_Addr((uint32_t *)pUsartd->pTxChannel->pBuff,
- pUsartd->pTxChannel->BuffSize);
-
- if (XDMAD_StartTransfer(pUsartd->pXdmad, pUsartd->pTxChannel->ChNum))
- return USARTD_ERROR_LOCK;
-
- return 0;
-}
-
-/**
- * \brief Starts a USART master transfer. This is a non blocking function. It will
- * return as soon as the transfer is started.
- *
- * \param pUSARTD Pointer to a USARTDma instance.
- * \returns 0 if the transfer has been started successfully; otherwise returns
- * USARTD_ERROR_LOCK is the driver is in use, or USARTD_ERROR if the command is not
- * valid.
- */
-uint32_t USARTD_RcvData(UsartDma *pUsartd)
-{
- /* Start DMA 0(RX) && 1(TX) */
- pUsartd->pRxChannel->dmaProgress = 0;
-
- if (XDMAD_StartTransfer(pUsartd->pXdmad, pUsartd->pRxChannel->ChNum))
- return USARTD_ERROR_LOCK;
-
- return 0;
-}
-