spi: uniphier: fix timeout error
Timeout error was silently ignored. This commit adds timeout error handling and modifies return type of wait_for_completion_timeout(). Signed-off-by: Keiji Hayashibara <hayashibara.keiji@socionext.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
94613d5ae1
commit
e4671df0bf
|
@ -328,7 +328,8 @@ static int uniphier_spi_transfer_one(struct spi_master *master,
|
|||
struct spi_transfer *t)
|
||||
{
|
||||
struct uniphier_spi_priv *priv = spi_master_get_devdata(master);
|
||||
int status;
|
||||
struct device *dev = master->dev.parent;
|
||||
unsigned long time_left;
|
||||
|
||||
uniphier_spi_setup_transfer(spi, t);
|
||||
|
||||
|
@ -338,13 +339,15 @@ static int uniphier_spi_transfer_one(struct spi_master *master,
|
|||
|
||||
uniphier_spi_irq_enable(spi, SSI_IE_RCIE | SSI_IE_RORIE);
|
||||
|
||||
status = wait_for_completion_timeout(&priv->xfer_done,
|
||||
msecs_to_jiffies(SSI_TIMEOUT_MS));
|
||||
time_left = wait_for_completion_timeout(&priv->xfer_done,
|
||||
msecs_to_jiffies(SSI_TIMEOUT_MS));
|
||||
|
||||
uniphier_spi_irq_disable(spi, SSI_IE_RCIE | SSI_IE_RORIE);
|
||||
|
||||
if (status < 0)
|
||||
return status;
|
||||
if (!time_left) {
|
||||
dev_err(dev, "transfer timeout.\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
return priv->error;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user