diff options
| author | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
|---|---|---|
| committer | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
| commit | 79828b4fa835f73cdaf4bffa48696abdcbea9d02 (patch) | |
| tree | 5e0fa7156acb75ba603022bc807df8f2fedb97a8 /drivers/spi/spi-omap2-mcspi.c | |
| parent | 721b51fcf91898299d96f4b72cb9434cda29dce6 (diff) | |
| parent | 8c1a9d6323abf0fb1e5dad96cf3f1c783505ea5a (diff) | |
Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-fix-rt5645
Diffstat (limited to 'drivers/spi/spi-omap2-mcspi.c')
| -rw-r--r-- | drivers/spi/spi-omap2-mcspi.c | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index 58673841286c..3d09e0b69b73 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c @@ -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);  	}  }  |