[PATCH] Zaurus: Fix NAND Flash OOB layout for Borzoi

Eric Miao eric.y.miao at gmail.com
Thu Oct 22 18:18:53 EDT 2009


On Fri, Oct 23, 2009 at 5:05 AM, Stanislav Brabec <utx at penguin.cz> wrote:
> Borzoi, Terrier and Akita use the same NAND Flash OOB layout, which
> seems to be different from Spitz for some reason. Here is a fix.
>
> When the code was ported to the platform data, the map was applied just
> for Akita.
>
> After this patch, Flash works again on Borzoi. Terrier still has a
> problem with partition table different from Borzoi (unfixable without
> reading of the system configuration in flash) and JFFS2 partitions can
> be mounted (with some "Empty flash at ... ends at ..." in the syslog).
>
> Signed-off-by: Stanislav Brabec <utx at penguin.cz>

OK, applied to 'fix'.

>
> diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
> index ee8d603..c382d14 100644
> --- a/arch/arm/mach-pxa/spitz.c
> +++ b/arch/arm/mach-pxa/spitz.c
> @@ -740,11 +783,34 @@ static void __init common_init(void)
>        pxa_set_i2c_info(NULL);
>  }
>
> +#if defined(CONFIG_MACH_AKITA) || defined(CONFIG_MACH_BORZOI)
> +static struct nand_bbt_descr sharpsl_akita_bbt = {
> +       .options = 0,
> +       .offs = 4,
> +       .len = 1,
> +       .pattern = scan_ff_pattern
> +};
> +
> +static struct nand_ecclayout akita_oobinfo = {
> +       .eccbytes = 24,
> +       .eccpos = {
> +                  0x5, 0x1, 0x2, 0x3, 0x6, 0x7, 0x15, 0x11,
> +                  0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23,
> +                  0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37},
> +       .oobfree = {{0x08, 0x09}}
> +};
> +#endif
> +
>  #if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI)
>  static void __init spitz_init(void)
>  {
>        spitz_ficp_platform_data.gpio_pwdown = SPITZ_GPIO_IR_ON;
>
> +       if (machine_is_borzoi()) {
> +               sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt;
> +               sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo;
> +       }
> +
>        platform_scoop_config = &spitz_pcmcia_config;
>
>        common_init();
> @@ -769,22 +835,6 @@ static struct i2c_board_info akita_i2c_board_info[] = {
>        },
>  };
>
> -static struct nand_bbt_descr sharpsl_akita_bbt = {
> -       .options = 0,
> -       .offs = 4,
> -       .len = 1,
> -       .pattern = scan_ff_pattern
> -};
> -
> -static struct nand_ecclayout akita_oobinfo = {
> -       .eccbytes = 24,
> -       .eccpos = {
> -                  0x5, 0x1, 0x2, 0x3, 0x6, 0x7, 0x15, 0x11,
> -                  0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23,
> -                  0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37},
> -       .oobfree = {{0x08, 0x09}}
> -};
> -
>  static void __init akita_init(void)
>  {
>        spitz_ficp_platform_data.gpio_pwdown = AKITA_GPIO_IR_ON;
>
>
>
> ________________________________________________________________________
> Stanislav Brabec
> http://www.penguin.cz/~utx/zaurus
>
>



More information about the linux-arm-kernel mailing list