On Wednesday, July 16, 2014 4:19 PM, Bean Huo wrote:
> 
> For some Norflashes,the size of the buffer program has been
> increased from 256 bytes to 512 bytes,2ms maximum timeout can
> not adapt to all the different vendor's norflash.There maximum
> timeout information in the CFI area,so the best way is to choose
> the result calculated according to timeout field of struct cfi_ident
> that probed from norflash's CFI aera.This is also a standard defined
> by CFI.If haven't probed this information,or smaller than 2000us,then
> specify a defualt value 2000us.
> 
> Tested with Micron JS28F512M29EWx and Micron MT28EW512ABA flash devices.
> 
> Signed-off-by: bean huo <bean...@outlook.com>
> ---
> changes
>       v1->v2:Deleted unused parameters in this patch
>               (word_write_time_max and erase_time_max).Using usecs_to_jiffies
>               instead of msecs_to_jiffies for convert timeout value into 
> jiffies.
>       v2->v3:Removed unnecessary messages form comments and deleted trailing 
> whitespace.
>       V3->v4:If haven't probed timeout information,or smaller than 
> 2000us,specify default
>              2000us.
>       v4->v5:add one whitespace
>  drivers/mtd/chips/cfi_cmdset_0002.c |   28 ++++++++++++++++++++++++++--
>  1 file changed, 26 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c 
> b/drivers/mtd/chips/cfi_cmdset_0002.c
> index e21fde9..c248a8c 100644
> --- a/drivers/mtd/chips/cfi_cmdset_0002.c
> +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> @@ -628,6 +628,24 @@ struct mtd_info *cfi_cmdset_0002(struct map_info *map, 
> int primary)
>               cfi->chips[i].word_write_time = 
> 1<<cfi->cfiq->WordWriteTimeoutTyp;
>               cfi->chips[i].buffer_write_time = 
> 1<<cfi->cfiq->BufWriteTimeoutTyp;
>               cfi->chips[i].erase_time = 1<<cfi->cfiq->BlockEraseTimeoutTyp;
> +             /*
> +              * First calculate the timeout max according to timeout
> +              * field of struct cfi_ident that probed from chip's CFI
> +              * aera.If haven't probed this information,or smaller than
> +              * 2000us,we will specify defualt value 2000us,and the time
> +              * unit is us.
> +              */
> +             if (cfi->cfiq->BufWriteTimeoutTyp &&
> +                     cfi->cfiq->BufWriteTimeoutMax){
> +                     cfi->chips[i].buffer_write_time_max =
> +                             1<<(cfi->cfiq->BufWriteTimeoutTyp +
> +                                     cfi->cfiq->BufWriteTimeoutMax);
> +                     } else {
> +                             cfi->chips[i].buffer_write_time_max = 0;
> +                             }

Please keep the coding style as below.

                if ( ) {
                        ...
                } else {
                        ...
                }

Best regards,
Jingoo Han

> +             cfi->chips[i].buffer_write_time_max =
> +                     ((cfi->chips[i].buffer_write_time_max>= 2000)
> +                      ? cfi->chips[i].buffer_write_time_max : 2000);
>               cfi->chips[i].ref_point_counter = 0;
>               init_waitqueue_head(&(cfi->chips[i].wq));
>       }
> @@ -1462,8 +1480,14 @@ static int __xipram do_write_buffer(struct map_info 
> *map, struct flchip *chip,
>  {
>       struct cfi_private *cfi = map->fldrv_priv;
>       unsigned long timeo = jiffies + HZ;
> -     /* see comments in do_write_oneword() regarding uWriteTimeo. */
> -     unsigned long uWriteTimeout = ( HZ / 1000 ) + 1;
> +     /*
> +      * Use the result that calculated according to timeout field
> +      * of struct cfi_ident that probed from norflash's CFI aera.
> +      * See more comments in cfi_cmdset_0002().uWriteTimeout is
> +      * used for timeout step,it must be concerted into jiffies.
> +      */
> +     unsigned long uWriteTimeout =
> +                             usecs_to_jiffies(chip->buffer_write_time_max);
>       int ret = -EIO;
>       unsigned long cmd_adr;
>       int z, words;
> --
> 1.7.9.5                                         =

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to