Commit 57a94607 authored by Tony Lindgren's avatar Tony Lindgren Committed by Mark Brown

spi: Fix regression to return zero on success instead of positive value

Commit d948e6ca ("spi: add power control when set_cs") added generic
runtime PM handling, but also changed the return value to be 1 instead
of 0 that we had earlier as pm_runtime_get functions return a positve
value on success.

This causes SPI devices to return errors for cases where they do:

ret = spi_setup(spi);
if (ret)
	return ret;

As in many cases the SPI devices do not check for if (ret < 0).

Let's fix this by setting the status to 0 on succeess after the
runtime PM calls. Let's not return 0 at the end of the function
as this might break again later on if the function changes and
starts returning status again.

Fixes: d948e6ca ("spi: add power control when set_cs")
Cc: Luhua Xu <luhua.xu@mediatek.com>
Cc: wsd_upstream@mediatek.com
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20191111195334.44833-1-tony@atomide.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 5eb263ef
...@@ -3269,6 +3269,15 @@ int spi_setup(struct spi_device *spi) ...@@ -3269,6 +3269,15 @@ int spi_setup(struct spi_device *spi)
status); status);
return status; return status;
} }
/*
* We do not want to return positive value from pm_runtime_get,
* there are many instances of devices calling spi_setup() and
* checking for a non-zero return value instead of a negative
* return value.
*/
status = 0;
spi_set_cs(spi, false); spi_set_cs(spi, false);
pm_runtime_mark_last_busy(spi->controller->dev.parent); pm_runtime_mark_last_busy(spi->controller->dev.parent);
pm_runtime_put_autosuspend(spi->controller->dev.parent); pm_runtime_put_autosuspend(spi->controller->dev.parent);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment