summaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-sirf.c
diff options
context:
space:
mode:
authorQipan Li <Qipan.Li@csr.com>2014-09-02 17:02:34 +0800
committerMark Brown <broonie@kernel.org>2014-09-04 23:37:23 +0100
commit810a58b0256b24f194dda5ca1e705204ca703f7b (patch)
tree1367104413c64322be9636aca122df7b0dd4d4c1 /drivers/spi/spi-sirf.c
parentf2a08b404691ef3e7be6ce81c185335cfc68b6db (diff)
downloadlinux-810a58b0256b24f194dda5ca1e705204ca703f7b.tar.gz
linux-810a58b0256b24f194dda5ca1e705204ca703f7b.tar.bz2
linux-810a58b0256b24f194dda5ca1e705204ca703f7b.zip
spi: sirf: add fifo reset/start for cmd transfer
for command mode spi transfer, HW spec requires to do fifo reset work to clear FIFO status. Signed-off-by: Qipan Li <Qipan.Li@csr.com> Signed-off-by: Barry Song <Baohua.Song@csr.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-sirf.c')
-rw-r--r--drivers/spi/spi-sirf.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/spi/spi-sirf.c b/drivers/spi/spi-sirf.c
index 1a5161336730..6f0602fd7401 100644
--- a/drivers/spi/spi-sirf.c
+++ b/drivers/spi/spi-sirf.c
@@ -312,6 +312,8 @@ static int spi_sirfsoc_cmd_transfer(struct spi_device *spi,
u32 cmd;
sspi = spi_master_get_devdata(spi->master);
+ writel(SIRFSOC_SPI_FIFO_RESET, sspi->base + SIRFSOC_SPI_TXFIFO_OP);
+ writel(SIRFSOC_SPI_FIFO_START, sspi->base + SIRFSOC_SPI_TXFIFO_OP);
memcpy(&cmd, sspi->tx, t->len);
if (sspi->word_width == 1 && !(spi->mode & SPI_LSB_FIRST))
cmd = cpu_to_be32(cmd) >>