* [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd
@ 2016-07-11 5:30 Vignesh R
2016-07-11 5:30 ` [U-Boot] [PATCH 2/2] spi: ti_qspi: Fix compiler warning when DEBUG macro is set Vignesh R
2016-07-11 6:35 ` [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd Jagan Teki
0 siblings, 2 replies; 4+ messages in thread
From: Vignesh R @ 2016-07-11 5:30 UTC (permalink / raw)
To: u-boot
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>
---
drivers/spi/ti_qspi.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
index 9a372ad31dae..376fe378ed63 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);
#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) {
--
2.9.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH 2/2] spi: ti_qspi: Fix compiler warning when DEBUG macro is set
2016-07-11 5:30 [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd Vignesh R
@ 2016-07-11 5:30 ` Vignesh R
2016-07-11 6:35 ` [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd Jagan Teki
1 sibling, 0 replies; 4+ messages in thread
From: Vignesh R @ 2016-07-11 5:30 UTC (permalink / raw)
To: u-boot
clk_div is uninitialized at the beginning of ti_spi_set_speed(), move
debug() print after clk_div calculation to avoid compiler warning and to
have proper value of clk_div printed during debugging.
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
drivers/spi/ti_qspi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
index 376fe378ed63..9da80355a417 100644
--- a/drivers/spi/ti_qspi.c
+++ b/drivers/spi/ti_qspi.c
@@ -110,13 +110,13 @@ static void ti_spi_set_speed(struct ti_qspi_priv *priv, uint hz)
{
uint clk_div;
- debug("ti_spi_set_speed: hz: %d, clock divider %d\n", hz, clk_div);
-
if (!hz)
clk_div = 0;
else
clk_div = (QSPI_FCLK / hz) - 1;
+ debug("ti_spi_set_speed: hz: %d, clock divider %d\n", hz, clk_div);
+
/* disable SCLK */
writel(readl(&priv->base->clk_ctrl) & ~QSPI_CLK_EN,
&priv->base->clk_ctrl);
--
2.9.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd
2016-07-11 5:30 [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd Vignesh R
2016-07-11 5:30 ` [U-Boot] [PATCH 2/2] spi: ti_qspi: Fix compiler warning when DEBUG macro is set Vignesh R
@ 2016-07-11 6:35 ` Jagan Teki
2016-07-11 16:39 ` R, Vignesh
1 sibling, 1 reply; 4+ messages in thread
From: Jagan Teki @ 2016-07-11 6:35 UTC (permalink / raw)
To: u-boot
On 11 July 2016 at 11:00, Vignesh R <vigneshr@ti.com> wrote:
> 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>
> ---
> drivers/spi/ti_qspi.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
> index 9a372ad31dae..376fe378ed63 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);
| QSPI_RD_SNGL on debug statement as well.
> #ifdef CONFIG_DRA7XX
> udelay(500);
> #endif
Can't we fix this delay, still need?
thanks!
--
Jagan.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd
2016-07-11 6:35 ` [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd Jagan Teki
@ 2016-07-11 16:39 ` R, Vignesh
0 siblings, 0 replies; 4+ messages in thread
From: R, Vignesh @ 2016-07-11 16:39 UTC (permalink / raw)
To: u-boot
On 7/11/2016 12:05 PM, Jagan Teki wrote:
> On 11 July 2016 at 11:00, Vignesh R <vigneshr@ti.com> wrote:
>> 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>
>> ---
>> drivers/spi/ti_qspi.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
>> index 9a372ad31dae..376fe378ed63 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);
>
> | QSPI_RD_SNGL on debug statement as well.
Thanks, will fix this in v2.
>
>> #ifdef CONFIG_DRA7XX
>> udelay(500);
>> #endif
>
> Can't we fix this delay, still need?
The patch that added this delay ( b545a98f5dc563 spi: ti_qspi: Add delay
for successful bulk erase) says its added to meet bulk erase timing
constraints (AFAIK, I believe bulk erase is same as chip erase which is
not supported by sf erase but may be supported in future). I will
experiment a bit and convince myself whether this delay is really
applicable or not.
Regards
Vignesh
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-07-11 16:39 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-11 5:30 [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd Vignesh R
2016-07-11 5:30 ` [U-Boot] [PATCH 2/2] spi: ti_qspi: Fix compiler warning when DEBUG macro is set Vignesh R
2016-07-11 6:35 ` [U-Boot] [PATCH 1/2] spi: ti_qspi: Fix failure on multiple READ_ID cmd Jagan Teki
2016-07-11 16:39 ` R, Vignesh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox