Re: [U-Boot] [PATCH v2 03/17] SPEAr : SMI erase and write timeouts increased

2010-05-03 Thread Vipin KUMAR
On 5/3/2010 5:03 AM, Tom Rix wrote:
> Vipin KUMAR wrote:
>> SMI driver fails because of low timeout values. Increasing the erase
>> and write
>> timeouts to 3 seconds
>>
>> Signed-off-by: Vipin Kumar 
>> ---
>>  arch/arm/include/asm/arch-spear/spr_smi.h |6 +++---
>>  drivers/mtd/spr_smi.c |8 
>>  2 files changed, 7 insertions(+), 7 deletions(-)
>>
>> diff --git a/arch/arm/include/asm/arch-spear/spr_smi.h
>> b/arch/arm/include/asm/arch-spear/spr_smi.h
>> index 06df745..e2e5e8f 100644
>> --- a/arch/arm/include/asm/arch-spear/spr_smi.h
>> +++ b/arch/arm/include/asm/arch-spear/spr_smi.h
>> @@ -108,8 +108,8 @@ struct flash_dev {
>>  ushort sector_count;
>>  };
>>  
>> -#define SFLASH_PAGE_SIZE0x100/* flash page size */
>> -#define XFER_FINISH_TOUT2/* xfer finish timeout */
>> -#define WMODE_TOUT2/* write enable timeout */
>> +#define SFLASH_PAGE_SIZE0x100/* flash page size */
>> +#define XFER_FINISH_TOUT(3 * CONFIG_SYS_HZ)
>> +#define WMODE_TOUT(3 * CONFIG_SYS_HZ)
>>  
> 
> Restore the comments for xfer and write timeouts

OK

>>  #endif
>> diff --git a/drivers/mtd/spr_smi.c b/drivers/mtd/spr_smi.c
>> index 9a70a19..189ee6d 100644
>> --- a/drivers/mtd/spr_smi.c
>> +++ b/drivers/mtd/spr_smi.c
>> @@ -60,11 +60,11 @@ static struct flash_dev flash_ids[] = {
>>   */
>>  static void smi_wait_xfer_finish(int timeout)
>>  {
>> -while (timeout--) {
>> +do {
>>  if (readl(&smicntl->smi_sr) & TFF)
>>  break;
>>  udelay(1000);
>> -}
>> +} while (timeout--);
>>  }
>>  
> 
> Earlier (Jan 11), I recommended that if there is timeout, that this is a
> failure
> The status of the failure must be passed up.
> 
> smi_write_enable checks the timeout
> smi_read_id,  smi_read_sr does not
> 

Mistake. It should have been done already.
Please find these changes in v3 patch

> Why was the logic for the loops changed?
> If you want to change the logic, you should also change
> smi_wait_till_ready to be consistent.

OK. Please find the changes in v3

> Tom
> 
>>  /*
>> @@ -215,11 +215,11 @@ static int smi_write_enable(int bank)
>>  /* Restore the CTRL REG1 state */
>>  writel(ctrlreg1, &smicntl->smi_cr1);
>>  
>> -while (timeout--) {
>> +do {
>>  if (smi_read_sr(bank) & (1 << (bank + WM_SHIFT)))
>>  break;
>>  udelay(1000);
>> -}
>> +} while (timeout--);
>>  
>>  if (timeout)
>>  return 0;
> 
> 

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 03/17] SPEAr : SMI erase and write timeouts increased

2010-05-02 Thread Tom Rix
Vipin KUMAR wrote:
> SMI driver fails because of low timeout values. Increasing the erase and write
> timeouts to 3 seconds
> 
> Signed-off-by: Vipin Kumar 
> ---
>  arch/arm/include/asm/arch-spear/spr_smi.h |6 +++---
>  drivers/mtd/spr_smi.c |8 
>  2 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/include/asm/arch-spear/spr_smi.h 
> b/arch/arm/include/asm/arch-spear/spr_smi.h
> index 06df745..e2e5e8f 100644
> --- a/arch/arm/include/asm/arch-spear/spr_smi.h
> +++ b/arch/arm/include/asm/arch-spear/spr_smi.h
> @@ -108,8 +108,8 @@ struct flash_dev {
>   ushort sector_count;
>  };
>  
> -#define SFLASH_PAGE_SIZE 0x100   /* flash page size */
> -#define XFER_FINISH_TOUT 2   /* xfer finish timeout */
> -#define WMODE_TOUT   2   /* write enable timeout */
> +#define SFLASH_PAGE_SIZE 0x100   /* flash page size */
> +#define XFER_FINISH_TOUT (3 * CONFIG_SYS_HZ)
> +#define WMODE_TOUT   (3 * CONFIG_SYS_HZ)
>  

Restore the comments for xfer and write timeouts

>  #endif
> diff --git a/drivers/mtd/spr_smi.c b/drivers/mtd/spr_smi.c
> index 9a70a19..189ee6d 100644
> --- a/drivers/mtd/spr_smi.c
> +++ b/drivers/mtd/spr_smi.c
> @@ -60,11 +60,11 @@ static struct flash_dev flash_ids[] = {
>   */
>  static void smi_wait_xfer_finish(int timeout)
>  {
> - while (timeout--) {
> + do {
>   if (readl(&smicntl->smi_sr) & TFF)
>   break;
>   udelay(1000);
> - }
> + } while (timeout--);
>  }
>  

Earlier (Jan 11), I recommended that if there is timeout, that this is a failure
The status of the failure must be passed up.

smi_write_enable checks the timeout
smi_read_id,  smi_read_sr does not

Why was the logic for the loops changed?
If you want to change the logic, you should also change
smi_wait_till_ready to be consistent.

Tom

>  /*
> @@ -215,11 +215,11 @@ static int smi_write_enable(int bank)
>   /* Restore the CTRL REG1 state */
>   writel(ctrlreg1, &smicntl->smi_cr1);
>  
> - while (timeout--) {
> + do {
>   if (smi_read_sr(bank) & (1 << (bank + WM_SHIFT)))
>   break;
>   udelay(1000);
> - }
> + } while (timeout--);
>  
>   if (timeout)
>   return 0;

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 03/17] SPEAr : SMI erase and write timeouts increased

2010-04-25 Thread Vipin KUMAR
SMI driver fails because of low timeout values. Increasing the erase and write
timeouts to 3 seconds

Signed-off-by: Vipin Kumar 
---
 arch/arm/include/asm/arch-spear/spr_smi.h |6 +++---
 drivers/mtd/spr_smi.c |8 
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/arch/arm/include/asm/arch-spear/spr_smi.h 
b/arch/arm/include/asm/arch-spear/spr_smi.h
index 06df745..e2e5e8f 100644
--- a/arch/arm/include/asm/arch-spear/spr_smi.h
+++ b/arch/arm/include/asm/arch-spear/spr_smi.h
@@ -108,8 +108,8 @@ struct flash_dev {
ushort sector_count;
 };
 
-#define SFLASH_PAGE_SIZE   0x100   /* flash page size */
-#define XFER_FINISH_TOUT   2   /* xfer finish timeout */
-#define WMODE_TOUT 2   /* write enable timeout */
+#define SFLASH_PAGE_SIZE   0x100   /* flash page size */
+#define XFER_FINISH_TOUT   (3 * CONFIG_SYS_HZ)
+#define WMODE_TOUT (3 * CONFIG_SYS_HZ)
 
 #endif
diff --git a/drivers/mtd/spr_smi.c b/drivers/mtd/spr_smi.c
index 9a70a19..189ee6d 100644
--- a/drivers/mtd/spr_smi.c
+++ b/drivers/mtd/spr_smi.c
@@ -60,11 +60,11 @@ static struct flash_dev flash_ids[] = {
  */
 static void smi_wait_xfer_finish(int timeout)
 {
-   while (timeout--) {
+   do {
if (readl(&smicntl->smi_sr) & TFF)
break;
udelay(1000);
-   }
+   } while (timeout--);
 }
 
 /*
@@ -215,11 +215,11 @@ static int smi_write_enable(int bank)
/* Restore the CTRL REG1 state */
writel(ctrlreg1, &smicntl->smi_cr1);
 
-   while (timeout--) {
+   do {
if (smi_read_sr(bank) & (1 << (bank + WM_SHIFT)))
break;
udelay(1000);
-   }
+   } while (timeout--);
 
if (timeout)
return 0;
-- 
1.6.0.2

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot