mirror of https://github.com/ARMmbed/mbed-os.git
K64F DSPI Driver: Fix errors where DSPI state is incorrectly kept busy
Signed-off-by: Mahadevan Mahesh <Mahesh.Mahadevan@nxp.com>pull/3467/head
parent
7ad3026e76
commit
c54fd786e6
|
@ -162,8 +162,6 @@ status_t DSPI_MasterTransferEDMA(SPI_Type *base, dspi_master_edma_handle_t *hand
|
||||||
|
|
||||||
handle->txBuffIfNull = ((uint32_t)DSPI_DUMMY_DATA << 8) | DSPI_DUMMY_DATA;
|
handle->txBuffIfNull = ((uint32_t)DSPI_DUMMY_DATA << 8) | DSPI_DUMMY_DATA;
|
||||||
|
|
||||||
handle->state = kDSPI_Busy;
|
|
||||||
|
|
||||||
dspi_command_data_config_t commandStruct;
|
dspi_command_data_config_t commandStruct;
|
||||||
DSPI_StopTransfer(base);
|
DSPI_StopTransfer(base);
|
||||||
DSPI_FlushFifo(base, true, true);
|
DSPI_FlushFifo(base, true, true);
|
||||||
|
@ -222,6 +220,8 @@ status_t DSPI_MasterTransferEDMA(SPI_Type *base, dspi_master_edma_handle_t *hand
|
||||||
return kStatus_InvalidArgument;
|
return kStatus_InvalidArgument;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handle->state = kDSPI_Busy;
|
||||||
|
|
||||||
DSPI_DisableDMA(base, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
|
DSPI_DisableDMA(base, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
|
||||||
|
|
||||||
EDMA_SetCallback(handle->edmaRxRegToRxDataHandle, EDMA_DspiMasterCallback,
|
EDMA_SetCallback(handle->edmaRxRegToRxDataHandle, EDMA_DspiMasterCallback,
|
||||||
|
@ -706,13 +706,13 @@ static void EDMA_DspiMasterCallback(edma_handle_t *edmaHandle,
|
||||||
|
|
||||||
DSPI_DisableDMA((dspiEdmaPrivateHandle->base), kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
|
DSPI_DisableDMA((dspiEdmaPrivateHandle->base), kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
|
||||||
|
|
||||||
|
dspiEdmaPrivateHandle->handle->state = kDSPI_Idle;
|
||||||
|
|
||||||
if (dspiEdmaPrivateHandle->handle->callback)
|
if (dspiEdmaPrivateHandle->handle->callback)
|
||||||
{
|
{
|
||||||
dspiEdmaPrivateHandle->handle->callback(dspiEdmaPrivateHandle->base, dspiEdmaPrivateHandle->handle,
|
dspiEdmaPrivateHandle->handle->callback(dspiEdmaPrivateHandle->base, dspiEdmaPrivateHandle->handle,
|
||||||
kStatus_Success, dspiEdmaPrivateHandle->handle->userData);
|
kStatus_Success, dspiEdmaPrivateHandle->handle->userData);
|
||||||
}
|
}
|
||||||
|
|
||||||
dspiEdmaPrivateHandle->handle->state = kDSPI_Idle;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSPI_MasterTransferAbortEDMA(SPI_Type *base, dspi_master_edma_handle_t *handle)
|
void DSPI_MasterTransferAbortEDMA(SPI_Type *base, dspi_master_edma_handle_t *handle)
|
||||||
|
|
Loading…
Reference in New Issue