st_smi: Fix smi read status

smi_read_sr fails sometimes because of TFF not getting set within assumed time.
This condition may arise because of, for example, smi memory being in a erase
mode.

This fix is to enable reading the status register until timeout.

Signed-off-by: Vipin Kumar <vipin.kumar@st.com>
Signed-off-by: Amit Virdi <amit.virdi@st.com>
Signed-off-by: Stefan Roese <sr@denx.de>
master
Vipin Kumar 12 years ago committed by Albert ARIBAUD
parent a59c7b37b9
commit a5ad7ccd74
  1. 8
      drivers/mtd/st_smi.c

@ -188,9 +188,7 @@ static int smi_wait_till_ready(int bank, int timeout)
but potentially three seconds (!) after page erase. */
do {
sr = smi_read_sr(bank);
if (sr < 0)
continue; /* try until timeout */
else if (!(sr & WIP_BIT))
if ((sr >= 0) && (!(sr & WIP_BIT)))
return 0;
/* Try again after 1m-sec */
@ -231,9 +229,7 @@ static int smi_write_enable(int bank)
do {
sr = smi_read_sr(bank);
if (sr < 0)
break;
else if (sr & (1 << (bank + WM_SHIFT)))
if ((sr >= 0) && (sr & (1 << (bank + WM_SHIFT))))
return 0;
/* Try again after 1m-sec */

Loading…
Cancel
Save