spi: omap2-mcspi: add runtime PM to set_cs()
Since commitddcad7e906omap2_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
	
	Block a user