spi: spi-imx: cleanup wait_for_completion handling
return type of wait_for_completion_timeout is unsigned long not int and always returns >=0 , this patch adds a suitable return variable and simplifies the return value checking as there is no < 0 case. Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
4b5d6aadce
Коммит
56536a7ff5
|
@ -891,6 +891,7 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
|
||||||
{
|
{
|
||||||
struct dma_async_tx_descriptor *desc_tx = NULL, *desc_rx = NULL;
|
struct dma_async_tx_descriptor *desc_tx = NULL, *desc_rx = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
|
unsigned long timeout;
|
||||||
u32 dma;
|
u32 dma;
|
||||||
int left;
|
int left;
|
||||||
struct spi_master *master = spi_imx->bitbang.master;
|
struct spi_master *master = spi_imx->bitbang.master;
|
||||||
|
@ -938,17 +939,17 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
|
||||||
dma_async_issue_pending(master->dma_tx);
|
dma_async_issue_pending(master->dma_tx);
|
||||||
dma_async_issue_pending(master->dma_rx);
|
dma_async_issue_pending(master->dma_rx);
|
||||||
/* Wait SDMA to finish the data transfer.*/
|
/* Wait SDMA to finish the data transfer.*/
|
||||||
ret = wait_for_completion_timeout(&spi_imx->dma_tx_completion,
|
timeout = wait_for_completion_timeout(&spi_imx->dma_tx_completion,
|
||||||
IMX_DMA_TIMEOUT);
|
IMX_DMA_TIMEOUT);
|
||||||
if (!ret) {
|
if (!timeout) {
|
||||||
pr_warn("%s %s: I/O Error in DMA TX\n",
|
pr_warn("%s %s: I/O Error in DMA TX\n",
|
||||||
dev_driver_string(&master->dev),
|
dev_driver_string(&master->dev),
|
||||||
dev_name(&master->dev));
|
dev_name(&master->dev));
|
||||||
dmaengine_terminate_all(master->dma_tx);
|
dmaengine_terminate_all(master->dma_tx);
|
||||||
} else {
|
} else {
|
||||||
ret = wait_for_completion_timeout(&spi_imx->dma_rx_completion,
|
timeout = wait_for_completion_timeout(
|
||||||
IMX_DMA_TIMEOUT);
|
&spi_imx->dma_rx_completion, IMX_DMA_TIMEOUT);
|
||||||
if (!ret) {
|
if (!timeout) {
|
||||||
pr_warn("%s %s: I/O Error in DMA RX\n",
|
pr_warn("%s %s: I/O Error in DMA RX\n",
|
||||||
dev_driver_string(&master->dev),
|
dev_driver_string(&master->dev),
|
||||||
dev_name(&master->dev));
|
dev_name(&master->dev));
|
||||||
|
@ -963,9 +964,9 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
|
||||||
spi_imx->dma_finished = 1;
|
spi_imx->dma_finished = 1;
|
||||||
spi_imx->devtype_data->trigger(spi_imx);
|
spi_imx->devtype_data->trigger(spi_imx);
|
||||||
|
|
||||||
if (!ret)
|
if (!timeout)
|
||||||
ret = -ETIMEDOUT;
|
ret = -ETIMEDOUT;
|
||||||
else if (ret > 0)
|
else
|
||||||
ret = transfer->len;
|
ret = transfer->len;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче