提交 69eeefaa 编写于 作者: V Vignesh R 提交者: Jagan Teki

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: NVignesh R <vigneshr@ti.com>
Reviewed-by: NJagan Teki <jteki@openedev.com>
Reviewed-by: NMugunthan V N <mugunthanvnm@ti.com>
上级 6bde34f1
......@@ -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) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册