[PATCH] mtd: Nand Atmel: add On Flash BBT support

simon polette spolette at gmail.com
Wed May 27 06:00:54 EDT 2009


2009/5/27 Artem Bityutskiy <dedekind at infradead.org>:
> On Tue, 2009-05-26 at 13:55 +0200, simon polette wrote:
>> 2009/5/26 simon polette <spolette at gmail.com>:
>> > 2009/5/26 simon polette <spolette at gmail.com>:
>> >> 2009/5/26 Artem Bityutskiy <dedekind at infradead.org>:
>> >>> On Tue, 2009-05-26 at 11:40 +0200, simon polette wrote:
>> >>>> 2009/5/26 Artem Bityutskiy <dedekind at infradead.org>:
>> >>>> > On Mon, 2009-05-25 at 17:44 +0200, simon polette wrote:
>> >>>> >> +config       MTD_NAND_ATMEL_FLASH_BBT
>> >>>> >> +     bool "Use On-Flash Bad Block Table"
>> >>>> >> +     depends on MTD_NAND_ATMEL
>> >>>> >> +     help
>> >>>> >> +       This enables the On-Flash BBT, which mean that the bad blocks
>> >>>> >> +       will be scanned one time then the BBT will be stored
>> >>>> >> +       in flash, so scanning Nand flash for bad blocks will be no more
>> >>>> >> +       necessary for the next boots.
>> >>>> >> +
>> >>>> >
>> >>>> > I do not think you need a config option for this. It should be
>> >>>> > a module parameter instead.
>> >>>> >
>> >>>> > --
>> >>>> > Best regards,
>> >>>> > Artem Bityutskiy (Битюцкий Артём)
>> >>>> >
>> >>>> >
>> >>>>
>> >>>> Yes, good idea, but do you think that I can keep a config option to
>> >>>> define the default state of that param, it means doing something like
>> >>>> :
>> >>>> #ifdef CONFIG_MTD_NAND_ATMEL_FLASH_BBT
>> >>>> static int use_on_flash_bbt = 1;
>> >>>> #else
>> >>>> static int use_on_flash_bbt = 0;
>> >>>> #endif
>> >>>> module_param(use_on_flash_bbt, int, 0);
>> >>>
>> >>> I think it is generally bad idea if each nand driver will
>> >>> introduce a separate config option for this kind of stuff.
>> >>>
>> >>> You may always boot your kernel with something like
>> >>> atmel_nand.on_flash_bbt=1 in the kernel parameters.
>> >>>
>> >>> --
>> >>> Best regards,
>> >>> Artem Bityutskiy (Битюцкий Артём)
>> >>>
>> >>>
>> >>
>> >> Ok, I asked this question cause it's what have been done in the nand
>> >> diskonchip driver.
>> >> I'll send you a new patch soon.
>> >>
>> >> Best regards,
>> >>
>> >> Simon Polette
>> >> Adeneo - Adetelgroup
>> >>
>> >
>> > So here is the new patch :
>> >
>> > Signed-off-by: Simon Polette <spolette at adetelgroup.com>
>> > ---
>> >  drivers/mtd/nand/atmel_nand.c |    9 +++++++++
>> >  1 files changed, 9 insertions(+), 0 deletions(-)
>> >
>> > diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
>> > index 47a33ce..e113594 100644
>> > --- a/drivers/mtd/nand/atmel_nand.c
>> > +++ b/drivers/mtd/nand/atmel_nand.c
>> > @@ -24,6 +24,7 @@
>> >
>> >  #include <linux/slab.h>
>> >  #include <linux/module.h>
>> > +#include <linux/moduleparam.h>
>> >  #include <linux/platform_device.h>
>> >  #include <linux/mtd/mtd.h>
>> >  #include <linux/mtd/nand.h>Signed-off-by: Simon Polette
>> > <spolette at adetelgroup.com>
>> > @@ -47,6 +48,9 @@
>> >  #define no_ecc         0
>> >  #endif
>> >
>> > +static int on_flash_bbt = 0;
>> > +module_param(on_flash_bbt, int, 0);
>> > +
>> >  /* Register access macros */
>> >  #define ecc_readl(add, reg)                            \
>> >        __raw_readl(add + ATMEL_ECC_##reg)
>> > @@ -465,6 +469,11 @@ static int __init atmel_nand_probe(struct
>> > platform_device *pdev)
>> >                }
>> >        }
>> >
>> > +       if (on_flash_bbt) {
>> > +               printk("atmel_nand: Use On Flash BBT\n");
>> > +               nand_chip->options |= NAND_USE_FLASH_BBT;
>> > +       }
>> > +
>> >        /* first scan to find the device and get the page size */
>> >        if (nand_scan_ident(mtd, 1)) {
>> >                res = -ENXIO;
>> > --
>> > 1.6.0.4
>> >
>> > --
>> > Best regards,
>> >
>> > Simon Polette
>> > Adeneo - Adetelgroup
>> >
>> A line have been mistakenly inserted into the patch, probably by a
>> middle click, sorry for the inconvenience.
>>
>>
>> Signed-off-by: Simon Polette <spolette at adetelgroup.com>
>> ---
>>  drivers/mtd/nand/atmel_nand.c |    9 +++++++++
>>  1 files changed, 9 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
>> index 47a33ce..e113594 100644
>> --- a/drivers/mtd/nand/atmel_nand.c
>> +++ b/drivers/mtd/nand/atmel_nand.c
>> @@ -24,6 +24,7 @@
>>
>>  #include <linux/slab.h>
>>  #include <linux/module.h>
>> +#include <linux/moduleparam.h>
>>  #include <linux/platform_device.h>
>>  #include <linux/mtd/mtd.h>
>>  #include <linux/mtd/nand.h>
>> @@ -47,6 +48,9 @@
>>  #define no_ecc               0
>>  #endif
>>
>> +static int on_flash_bbt = 0;
>> +module_param(on_flash_bbt, int, 0);
>> +
>>  /* Register access macros */
>>  #define ecc_readl(add, reg)                          \
>>       __raw_readl(add + ATMEL_ECC_##reg)
>> @@ -465,6 +469,11 @@ static int __init atmel_nand_probe(struct
>> platform_device *pdev)
>>               }
>>       }
>>
>> +     if (on_flash_bbt) {
>> +             printk("atmel_nand: Use On Flash BBT\n");
>> +             nand_chip->options |= NAND_USE_FLASH_BBT;
>> +     }
>
> Is it please also possible to add KERN_INFO to the 'printk()'
> please. And also add it to the already existing 'printk()' in
> the driver: printk("No SmartMedia card inserted.\n");
>
> --
> Best regards,
> Artem Bityutskiy (Битюцкий Артём)
>
>
Hoping the patch is correct now :
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mtd-atmel-nand-Add-on-flash-bbt-support.patch
Type: text/x-diff
Size: 1321 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-mtd/attachments/20090527/972bff7d/attachment.bin>


More information about the linux-mtd mailing list