mirror of https://gitee.com/openkylin/linux.git
spi: omap2-mcspi: add runtime PM to set_cs()
Since commitddcad7e906
omap2_mcspi_set_cs() is called without runtime power management requested. This patch fixes the problem by requesting runtime power management in omap2_mcspi_set_cs(). Reported-By: Pali Rohár <pali.rohar@gmail.com> Fixes:ddcad7e906
(spi: omap2-mcspi: Fix native cs with new set_cs) Tested-By: Pavel Machek <pavel@ucw.cz> Signed-off-by: Sebastian Reichel <sre@kernel.org> Acked-by: Michael Welling <mwelling@ieee.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
bc0195aad0
commit
5f74db105b
|
@ -245,6 +245,7 @@ static void omap2_mcspi_set_enable(const struct spi_device *spi, int enable)
|
|||
|
||||
static void omap2_mcspi_set_cs(struct spi_device *spi, bool enable)
|
||||
{
|
||||
struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master);
|
||||
u32 l;
|
||||
|
||||
/* The controller handles the inverted chip selects
|
||||
|
@ -255,6 +256,12 @@ static void omap2_mcspi_set_cs(struct spi_device *spi, bool enable)
|
|||
enable = !enable;
|
||||
|
||||
if (spi->controller_state) {
|
||||
int err = pm_runtime_get_sync(mcspi->dev);
|
||||
if (err < 0) {
|
||||
dev_err(mcspi->dev, "failed to get sync: %d\n", err);
|
||||
return;
|
||||
}
|
||||
|
||||
l = mcspi_cached_chconf0(spi);
|
||||
|
||||
if (enable)
|
||||
|
@ -263,6 +270,9 @@ static void omap2_mcspi_set_cs(struct spi_device *spi, bool enable)
|
|||
l |= OMAP2_MCSPI_CHCONF_FORCE;
|
||||
|
||||
mcspi_write_chconf0(spi, l);
|
||||
|
||||
pm_runtime_mark_last_busy(mcspi->dev);
|
||||
pm_runtime_put_autosuspend(mcspi->dev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue