[DNX#2006040142000241] [U-Boot-Users] IMPORTANT NOTE to all maintainers w [...]
DENX Support System
support at denx.de
Sat Apr 1 00:20:12 CEST 2006
Hello list,
inside the automatic U-Boot patch tracking system a new ticket
[DNX#2006040142000241] was created:
<snip>
> On Fri, Mar 24, 2006 at 01:55:35AM +0100, Wolfgang Denk wrote:
> > Meaning - the comment is IMHO necessary. Thanks.
>
> I hope it makes enough sense...
>
> Best regards,
> ladis
>
> Signed-off-by Ladislav Michl <ladis at linux-mips.org>
>
> CHANGELOG
> * Implement NAND OOB erase command
> Patch by Ladislav Michl, 24 Mar 2006
>
> diff --git a/common/cmd_nand.c b/common/cmd_nand.c
> index 21adb1b..d443086 100644
> --- a/common/cmd_nand.c
> +++ b/common/cmd_nand.c
> @@ -197,14 +197,23 @@ int do_nand(cmd_tbl_t * cmdtp, int flag,
> return 0;
> }
>
> + /*
> + * Syntax is:
> + * 0 1 2 3 4
> + * nand erase [clean] [off size]
> + */
> if (strcmp(cmd, "erase") == 0) {
> - arg_off_size(argc - 2, argv + 2, &off, &size, nand->size);
> + /* "clean" at index 2 means request to erase OOB */
> + int clean = (argc > 2 && strcmp(argv[2], "clean") == 0) ? 1 : 0;
> + int o = clean ? 3 : 2;
> + /* skip first two or three arguments, look for offset and size */
> + arg_off_size(argc - o, argv + o, &off, &size, nand->size);
> if (off == 0 && size == 0)
> - return 1;
> + size = nand->size;
>
> printf("\nNAND erase: device %d offset 0x%x, size 0x%x ",
> nand_curr_device, off, size);
> - ret = nand_erase(nand, off, size);
> + ret = nand_erase(nand, off, size, clean);
> printf("%s\n", ret ? "ERROR" : "OK");
>
> return ret == 0 ? 0 : 1;
> @@ -275,7 +284,6 @@ U_BOOT_CMD(nand, 5, 1, do_nand,
> " offset `off' (entire device if not specified)\n"
> "nand bad - show bad blocks\n"
> "nand dump[.oob] off - dump page\n"
> - "nand scrub - really clean NAND erasing bad blocks (UNSAFE)\n"
> "nand markbad off - mark bad block at offset (UNSAFE)\n"
> "nand biterr off - make a bit error at offset (UNSAFE)\n");
>
> diff --git a/common/env_nand.c b/common/env_nand.c
> index dd27f7b..97371e9 100644
> --- a/common/env_nand.c
> +++ b/common/env_nand.c
> @@ -116,7 +116,7 @@ int saveenv(void)
> int ret = 0;
>
> puts ("Erasing Nand...");
> - if (nand_erase(&nand_info[0], CFG_ENV_OFFSET, CFG_ENV_SIZE))
> + if (nand_erase(&nand_info[0], CFG_ENV_OFFSET, CFG_ENV_SIZE, 0))
> return 1;
>
> puts ("Writing to Nand... ");
> diff --git a/include/nand.h b/include/nand.h
> index 905115b..ccac9c1 100644
> --- a/include/nand.h
> +++ b/include/nand.h
> @@ -48,7 +48,7 @@ static inline int nand_block_isbad(nand_
> return info->block_isbad(info, ofs);
> }
>
> -static inline int nand_erase(nand_info_t *info, ulong off, ulong size)
> +static inline int nand_erase(nand_info_t *info, ulong off, ulong size,
> int clean)
> {
> struct erase_info instr;
>
> @@ -57,7 +57,7 @@ static inline int nand_erase(nand_info_t
> instr.len = size;
> instr.callback = 0;
>
> - return info->erase(info, &instr);
> + return nand_erase_nand(info, &instr, clean);
> }
>
> #endif
</snip>
Your U-Boot support team
More information about the U-Boot
mailing list