[rtems commit] bsp/atsam: Use standard XDMA throughout

Sebastian Huber sebh at rtems.org
Tue Dec 20 07:50:07 UTC 2016


Module:    rtems
Branch:    master
Commit:    71f29c1206633447da18eaff4293f856aaca640d
Changeset: http://git.rtems.org/rtems/commit/?id=71f29c1206633447da18eaff4293f856aaca640d

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Dec 20 08:49:32 2016 +0100

bsp/atsam: Use standard XDMA throughout

---

 c/src/lib/libbsp/arm/atsam/libraries/libchip/include/xdmad.h  |  5 -----
 c/src/lib/libbsp/arm/atsam/libraries/libchip/source/afe_dma.c |  4 +---
 c/src/lib/libbsp/arm/atsam/libraries/libchip/source/dac_dma.c |  4 +---
 c/src/lib/libbsp/arm/atsam/libraries/libchip/source/spi_dma.c |  4 +---
 c/src/lib/libbsp/arm/atsam/libraries/libchip/source/twid.c    | 11 +----------
 .../lib/libbsp/arm/atsam/libraries/libchip/source/uart_dma.c  |  3 ---
 .../lib/libbsp/arm/atsam/libraries/libchip/source/usart_dma.c |  4 ----
 c/src/lib/libbsp/arm/atsam/libraries/libchip/source/xdmad.c   |  3 ++-
 8 files changed, 6 insertions(+), 32 deletions(-)

diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/include/xdmad.h b/c/src/lib/libbsp/arm/atsam/libraries/libchip/include/xdmad.h
index 20def44..3b5e083 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/include/xdmad.h
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libchip/include/xdmad.h
@@ -222,11 +222,6 @@ extern sXdmad XDMAD_Instance;
  *----------------------------------------------------------------------------*/
 /** \addtogroup dmad_functions DMA Driver Functions
         @{*/
-extern void XDMAD_Initialize(sXdmad *pXdmad,
-							  uint8_t bPollingMode);
-
-extern void XDMAD_Handler(void *arg);
-
 extern uint32_t XDMAD_AllocateChannel(sXdmad *pXdmad,
 									   uint8_t bSrcID, uint8_t bDstID);
 extern eXdmadRC XDMAD_FreeChannel(sXdmad *pXdmad, uint32_t dwChannel);
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/afe_dma.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/afe_dma.c
index b137d01..e47055c 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/afe_dma.c
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/afe_dma.c
@@ -103,8 +103,6 @@ static uint8_t _AfeConfigureDmaChannels(AfeDma *pAfed)
 {
 
 	/* Driver initialize */
-	XDMAD_Initialize(pAfed->pXdmad, 0);
-
 	XDMAD_FreeChannel(pAfed->pXdmad, afeDmaRxChannel);
 
 	/* Allocate a DMA channel for AFE0/1 RX. */
@@ -207,7 +205,7 @@ uint32_t Afe_ConfigureDma(AfeDma *pAfed ,
 	pAfed->afeId  = AfeId;
 	pAfed->semaphore = 1;
 	pAfed->pCurrentCommand = 0;
-	pAfed->pXdmad = pXdmad;
+	assert(pXdmad == &XDMAD_Instance);
 	return 0;
 }
 
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/dac_dma.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/dac_dma.c
index 912c4ef..e18dbb4 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/dac_dma.c
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/dac_dma.c
@@ -96,8 +96,6 @@ static uint8_t _DacConfigureDmaChannels(DacDma *pDacd)
 {
 
 	/* Driver initialize */
-	XDMAD_Initialize(pDacd->pXdmad, 0);
-
 	XDMAD_FreeChannel(pDacd->pXdmad, dacDmaTxChannel);
 
 	/* Allocate a DMA channel for DAC0/1 TX. */
@@ -195,7 +193,7 @@ uint32_t Dac_ConfigureDma(DacDma *pDacd ,
 	pDacd->dacId  = DacId;
 	pDacd->semaphore = 1;
 	pDacd->pCurrentCommand = 0;
-	pDacd->pXdmad = pXdmad;
+	assert(pXdmad == &XDMAD_Instance);
 	return 0;
 }
 
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/spi_dma.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/spi_dma.c
index 1ce3fcd..5f03958 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/spi_dma.c
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/spi_dma.c
@@ -139,8 +139,6 @@ static void SPID_Rx_Cb(uint32_t channel, Spid *pArg)
 static uint8_t _spid_configureDmaChannels(Spid *pSpid)
 {
 	/* Driver initialize */
-	XDMAD_Initialize(pSpid->pXdmad, 0);
-
 	XDMAD_FreeChannel(pSpid->pXdmad, spiDmaTxChannel);
 	XDMAD_FreeChannel(pSpid->pXdmad, spiDmaRxChannel);
 
@@ -290,7 +288,7 @@ uint32_t SPID_Configure(Spid *pSpid ,
 	pSpid->spiId  = spiId;
 	pSpid->semaphore = 1;
 	pSpid->pCurrentCommand = 0;
-	pSpid->pXdmad = pXdmad;
+	assert(pXdmad == &XDMAD_Instance);
 
 	/* Enable the SPI Peripheral ,Execute a software reset of the SPI,
 	    Configure SPI in Master Mode*/
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/twid.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/twid.c
index 91196df..4f77069 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/twid.c
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/twid.c
@@ -508,16 +508,7 @@ void TWID_DmaInitialize(TwihsDma *pTwidma, Twihs *pTwi, uint8_t bPolling)
 	pTwidma->pTwid->pTwi = pTwi;
 	pTwidma->pTwid->pTransfer = 0;
 
-	if (!bPolling) {
-		/* Enable XDMA interrupt and give it priority over any other peripheral
-		interrupt */
-		NVIC_ClearPendingIRQ(XDMAC_IRQn);
-		NVIC_SetPriority(XDMAC_IRQn, 1);
-		NVIC_EnableIRQ(XDMAC_IRQn);
-	}
-
-	/* Initialize XDMA driver instance with polling mode */
-	XDMAD_Initialize(pTwidma->pTwiDma, bPolling);
+	assert(!bPolling);
 }
 
 /**
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/uart_dma.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/uart_dma.c
index 7406b71..606dc83 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/uart_dma.c
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/uart_dma.c
@@ -390,9 +390,6 @@ uint32_t UARTD_Configure(UartDma *pUartd ,
 	    Configure UART in Master Mode*/
 	UART_Configure (pUartd->pUartHw, uartMode, baud, clk);
 
-	/* Driver initialize */
-	XDMAD_Initialize(pUartd->pXdmad, 0);
-
 	/* Check if DMA IRQ is enable; if not clear pending IRQs in init it */
 	if (!(NVIC_GetActive(XDMAC_IRQn)))
 		NVIC_ClearPendingIRQ(XDMAC_IRQn);
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
index 62755d9..51488e6 100644
--- 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
@@ -369,14 +369,10 @@ uint32_t USARTD_Configure(UsartDma *pUsartd ,
 		pUsartd->pUsartHw = USART2;
 
 
-	pUsartd->pXdmad->pXdmacs = XDMAC;
 	/* Enable the USART Peripheral ,Execute a software reset of the USART,
 	    Configure USART in Master Mode*/
 	USART_Configure (pUsartd->pUsartHw, UsartMode, BaudRate, UsartClk);
 
-	/* Driver initialize */
-	XDMAD_Initialize(pUsartd->pXdmad, 0);
-
 	/* Check if DMA IRQ is enable; if not clear pending IRQs in init it */
 	if (!(NVIC_GetActive(XDMAC_IRQn)))
 		NVIC_ClearPendingIRQ(XDMAC_IRQn);
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/xdmad.c b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/xdmad.c
index 36f9e27..0be891d 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/xdmad.c
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libchip/source/xdmad.c
@@ -73,6 +73,7 @@
 /*----------------------------------------------------------------------------
  *        Local functions
  *----------------------------------------------------------------------------*/
+static void XDMAD_Handler(void *arg);
 /**
  * \brief Try to allocate a DMA channel for on given controller.
  * \param pDmad  Pointer to DMA driver instance.
@@ -302,7 +303,7 @@ eXdmadRC XDMAD_PrepareChannel(sXdmad *pXdmad, uint32_t dwChannel)
  * \brief xDMA interrupt handler
  * \param arg Pointer to DMA driver instance.
  */
-void XDMAD_Handler(void *arg)
+static void XDMAD_Handler(void *arg)
 {
 	sXdmad *pDmad;
 	Xdmac *pXdmac;



More information about the vc mailing list