summaryrefslogtreecommitdiff
path: root/drivers/fsl_dspi_edma.c
diff options
context:
space:
mode:
authorDominik Sliwa <dominik.sliwa@toradex.com>2018-02-14 16:53:49 +0100
committerDominik Sliwa <dominik.sliwa@toradex.com>2018-02-28 14:38:45 +0100
commit4a48136e9c6d55ff9d9427a91ef43d44d26333d7 (patch)
treebc8d4630e75c10ba6580cabedbba619a006aeca3 /drivers/fsl_dspi_edma.c
parent3020f5caf0b09fcaf85b3b3fa84fdf688ba22cc0 (diff)
spi, can and general improvements
SPI: -move to single transfer read -clear interrupt register on read -perform multibyte read transfers with DMA -make frame format consistant CAN: -move from mailbox to CAN FIFO -implement buffering -support for reading multiple frames per transfer General: -use PLL at 100MHz -remove debug task -do not compile release with debug console enabled -bumped version to 0.13 Signed-off-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Diffstat (limited to 'drivers/fsl_dspi_edma.c')
-rw-r--r--drivers/fsl_dspi_edma.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/drivers/fsl_dspi_edma.c b/drivers/fsl_dspi_edma.c
index ef0d151..fa26b2f 100644
--- a/drivers/fsl_dspi_edma.c
+++ b/drivers/fsl_dspi_edma.c
@@ -1183,30 +1183,55 @@ status_t DSPI_SlaveTransferEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle
return kStatus_Success;
}
-
+#if 0
static void EDMA_DspiSlaveCallback(edma_handle_t *edmaHandle,
void *g_dspiEdmaPrivateHandle,
bool transferDone,
uint32_t tcds)
{
+
assert(edmaHandle);
assert(g_dspiEdmaPrivateHandle);
dspi_slave_edma_private_handle_t *dspiEdmaPrivateHandle;
+
dspiEdmaPrivateHandle = (dspi_slave_edma_private_handle_t *)g_dspiEdmaPrivateHandle;
DSPI_DisableDMA((dspiEdmaPrivateHandle->base), kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-
+ GPIO_ClearPinsOutput(GPIOE, 1u << 5u);
dspiEdmaPrivateHandle->handle->state = kDSPI_Idle;
if (dspiEdmaPrivateHandle->handle->callback)
{
+
dspiEdmaPrivateHandle->handle->callback(dspiEdmaPrivateHandle->base, dspiEdmaPrivateHandle->handle,
kStatus_Success, dspiEdmaPrivateHandle->handle->userData);
}
}
+#else
+extern dspi_slave_edma_handle_t g_dspi_edma_s_handle;
+static void EDMA_DspiSlaveCallback(edma_handle_t *edmaHandle,
+ void *g_dspiEdmaPrivateHandle,
+ bool transferDone,
+ uint32_t tcds)
+{
+
+ assert(edmaHandle);
+
+ DSPI_DisableDMA(SPI2, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
+
+ g_dspi_edma_s_handle.state = kDSPI_Idle;
+
+ if (g_dspi_edma_s_handle.callback)
+ {
+
+ g_dspi_edma_s_handle.callback(SPI2, &g_dspi_edma_s_handle,
+ kStatus_Success, g_dspi_edma_s_handle.userData);
+ }
+}
+#endif
void DSPI_SlaveTransferAbortEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle)
{
assert(handle);