summaryrefslogtreecommitdiff
path: root/drivers/spi/ti_qspi.c
diff options
context:
space:
mode:
authorVignesh R <vigneshr@ti.com>2016-07-22 10:55:48 +0530
committerJagan Teki <jteki@openedev.com>2016-07-30 00:15:00 +0530
commit69eeefaa060a848cd6acd8c94d1c43c9022adf53 (patch)
tree72f5bacaa41ced53ebb3ea3e4af30d9e99315f82 /drivers/spi/ti_qspi.c
parent6bde34f1ae2a3fd253b0bc9b51686e30649ba7d8 (diff)
spi: ti_qspi: Fix failure on multiple READ_ID cmd
Populating QSPI_RD_SNGL bit(0x1) in priv->cmd means that value QSPI_INVAL (0x4) is not written to CMD field of QSPI_SPI_CMD_REG in ti_qspi_cs_deactivate(). Therefore CS is never deactivated between successive READ ID which results in sf probe to fail. Fix this by not populating priv->cmd with QSPI_RD_SNGL and OR it wih priv->cmd as required (similar to the convention followed in the driver). Signed-off-by: Vignesh R <vigneshr@ti.com> Reviewed-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Mugunthan V N <mugunthanvnm@ti.com>
Diffstat (limited to 'drivers/spi/ti_qspi.c')
-rw-r--r--drivers/spi/ti_qspi.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
index 9a372ad31d..a850aa26ec 100644
--- a/drivers/spi/ti_qspi.c
+++ b/drivers/spi/ti_qspi.c
@@ -247,13 +247,12 @@ static int __ti_qspi_xfer(struct ti_qspi_priv *priv, unsigned int bitlen,
debug("tx done, status %08x\n", status);
}
if (rxp) {
- priv->cmd |= QSPI_RD_SNGL;
debug("rx cmd %08x dc %08x\n",
- priv->cmd, priv->dc);
+ ((u32)(priv->cmd | QSPI_RD_SNGL)), priv->dc);
#ifdef CONFIG_DRA7XX
udelay(500);
#endif
- writel(priv->cmd, &priv->base->cmd);
+ writel(priv->cmd | QSPI_RD_SNGL, &priv->base->cmd);
status = readl(&priv->base->status);
timeout = QSPI_TIMEOUT;
while ((status & QSPI_WC_BUSY) != QSPI_XFER_DONE) {