summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorKunal Agrawal <kunala@nvidia.com>2012-09-25 20:52:49 +0530
committerSimone Willett <swillett@nvidia.com>2012-10-11 14:41:49 -0700
commit07b72196d3ef5140269d5afc889e33c5f8357b44 (patch)
treedc9a8a6a58e643cf6d4abec8aba138dc4778bf0e /drivers/spi
parent020b99ceac3630851047d8f0d49840dda116ca9b (diff)
spi: tegra: fix dma based transfer issue
Tegra11 spi controller not require the Tx fifo to be fill before enabling dma. Removing this checks. Signed-off-by: Kunal Agrawal <kunala@nvidia.com> Reviewed-on: http://git-master/r/135160 (cherry picked from commit c9f0787bd10a9dc17eeb6587a67493e0d042160a) Change-Id: I366c191b9db6d713389307a1bc9904b2d8b0b064 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/143266 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi-tegra11.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/spi/spi-tegra11.c b/drivers/spi/spi-tegra11.c
index 2fd8eb8dfea4..119a5e5fec23 100644
--- a/drivers/spi/spi-tegra11.c
+++ b/drivers/spi/spi-tegra11.c
@@ -545,7 +545,7 @@ static int spi_tegra_start_dma_based_transfer(
/* Make sure that Rx and Tx fifo are empty */
test_val = spi_tegra_readl(tspi, SPI_FIFO_STATUS);
- if (((test_val >> 16) & 0x3FFF) != 0x7F)
+ if (((test_val >> 16) & 0x3FFF) != 0x40)
dev_err(&tspi->pdev->dev,
"The Rx and Tx fifo are not empty status 0x%08lx\n",
test_val);
@@ -586,11 +586,6 @@ static int spi_tegra_start_dma_based_transfer(
"Error in starting tx dma error = %d\n", ret);
return ret;
}
-
- /* Wait for tx fifo to be fill before starting SPI */
- test_val = spi_tegra_readl(tspi, SPI_FIFO_STATUS);
- while (!(test_val & SPI_TX_FIFO_FULL))
- test_val = spi_tegra_readl(tspi, SPI_FIFO_STATUS);
}
if (tspi->cur_direction & DATA_DIR_RX) {
@@ -639,6 +634,7 @@ static int spi_tegra_start_cpu_based_transfer(
spi_tegra_writel(tspi, val, SPI_DMA_CTL);
tspi->dma_control_reg = val;
+ tspi->is_curr_dma_xfer = false;
val = tspi->command1_reg;
val |= SPI_PIO;
spi_tegra_writel(tspi, val, SPI_COMMAND1);