From mboxrd@z Thu Jan 1 00:00:00 1970 From: Amit Virdi Date: Fri, 24 Feb 2012 17:53:11 +0530 Subject: [U-Boot] [PATCH 08/11] st_smi: Fix smi read status In-Reply-To: <1330086194-21762-1-git-send-email-amit.virdi@st.com> References: <1330086194-21762-1-git-send-email-amit.virdi@st.com> Message-ID: <1330086194-21762-9-git-send-email-amit.virdi@st.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de From: Vipin Kumar 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 Signed-off-by: Amit Virdi --- drivers/mtd/st_smi.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/mtd/st_smi.c b/drivers/mtd/st_smi.c index eb902b2..e5c803b 100644 --- a/drivers/mtd/st_smi.c +++ b/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 */ -- 1.7.2.2