Commit 1395b9cf authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'spi-v3.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi

Pull spi bugfixes from Mark Brown:
 "A couple of small driver fixes for v3.18, both quite problematic if
  you hit a use case that's affected"

* tag 'spi-v3.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
  spi: pxa2xx: toggle clocks on suspend if not disabled by runtime PM
  spi: fsl-dspi: Fix CTAR selection
parents ed78bb84 4e72b427
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
#define SPI_TCR 0x08 #define SPI_TCR 0x08
#define SPI_CTAR(x) (0x0c + (x * 4)) #define SPI_CTAR(x) (0x0c + (((x) & 0x3) * 4))
#define SPI_CTAR_FMSZ(x) (((x) & 0x0000000f) << 27) #define SPI_CTAR_FMSZ(x) (((x) & 0x0000000f) << 27)
#define SPI_CTAR_CPOL(x) ((x) << 26) #define SPI_CTAR_CPOL(x) ((x) << 26)
#define SPI_CTAR_CPHA(x) ((x) << 25) #define SPI_CTAR_CPHA(x) ((x) << 25)
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
#define SPI_PUSHR 0x34 #define SPI_PUSHR 0x34
#define SPI_PUSHR_CONT (1 << 31) #define SPI_PUSHR_CONT (1 << 31)
#define SPI_PUSHR_CTAS(x) (((x) & 0x00000007) << 28) #define SPI_PUSHR_CTAS(x) (((x) & 0x00000003) << 28)
#define SPI_PUSHR_EOQ (1 << 27) #define SPI_PUSHR_EOQ (1 << 27)
#define SPI_PUSHR_CTCNT (1 << 26) #define SPI_PUSHR_CTCNT (1 << 26)
#define SPI_PUSHR_PCS(x) (((1 << x) & 0x0000003f) << 16) #define SPI_PUSHR_PCS(x) (((1 << x) & 0x0000003f) << 16)
......
...@@ -1274,7 +1274,9 @@ static int pxa2xx_spi_suspend(struct device *dev) ...@@ -1274,7 +1274,9 @@ static int pxa2xx_spi_suspend(struct device *dev)
if (status != 0) if (status != 0)
return status; return status;
write_SSCR0(0, drv_data->ioaddr); write_SSCR0(0, drv_data->ioaddr);
clk_disable_unprepare(ssp->clk);
if (!pm_runtime_suspended(dev))
clk_disable_unprepare(ssp->clk);
return 0; return 0;
} }
...@@ -1288,7 +1290,8 @@ static int pxa2xx_spi_resume(struct device *dev) ...@@ -1288,7 +1290,8 @@ static int pxa2xx_spi_resume(struct device *dev)
pxa2xx_spi_dma_resume(drv_data); pxa2xx_spi_dma_resume(drv_data);
/* Enable the SSP clock */ /* Enable the SSP clock */
clk_prepare_enable(ssp->clk); if (!pm_runtime_suspended(dev))
clk_prepare_enable(ssp->clk);
/* Restore LPSS private register bits */ /* Restore LPSS private register bits */
lpss_ssp_setup(drv_data); lpss_ssp_setup(drv_data);
......
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