Fix do_div() usage in nand process output
authorMatthias Fuchs <matthias.fuchs@esd-electronics.com>
Tue, 11 Sep 2007 15:04:00 +0000 (17:04 +0200)
committerWolfgang Denk <wd@denx.de>
Sat, 15 Sep 2007 19:38:38 +0000 (21:38 +0200)
Fix usage of do_div() in nand erase|read|write process output.

The last patch to nand_util.c introduced do_div() instead of libgcc's
implementation. But do_div() returns the quotient in its first
macro parameter and not as result.

Signed-off-by: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
common/cmd_nand.c
drivers/nand/nand_util.c

index aeb76e5fb717f37181dbd919f633a9a1bd786f77..1fdd7a67f60b7aa9962136652a84952e0f948c7c 100644 (file)
@@ -456,7 +456,7 @@ U_BOOT_CMD(nand, 5, 1, do_nand,
        "info                  - show available NAND devices\n"
        "nand device [dev]     - show or set current device\n"
        "nand read[.jffs2]     - addr off|partition size\n"
-       "nand write[.jffs2]    - addr off|partiton size - read/write `size' bytes starting\n"
+       "nand write[.jffs2]    - addr off|partition size - read/write `size' bytes starting\n"
        "    at offset `off' to/from memory address `addr'\n"
        "nand erase [clean] [off size] - erase `size' bytes from\n"
        "    offset `off' (entire device if not specified)\n"
index cf05043c0af5d2e79b6dc8d6d8599533c0699af3..4fd4e166e6ad6c36ed9d7ac9a8178b36e8ec6d9b 100644 (file)
@@ -210,9 +210,12 @@ int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts)
 
                if (!opts->quiet) {
                        unsigned long long n =(unsigned long long)
-                                (erase.addr+meminfo->erasesize-opts->offset)
-                                * 100;
-                       int percent = (int)do_div(n, erase_length);
+                               (erase.addr + meminfo->erasesize - opts->offset)
+                               * 100;
+                       int percent;
+
+                       do_div(n, erase_length);
+                       percent = (int)n;
 
                        /* output progress message only at whole percent
                         * steps to reduce the number of messages printed
@@ -478,7 +481,11 @@ int nand_write_opts(nand_info_t *meminfo, const nand_write_options_t *opts)
                if (!opts->quiet) {
                        unsigned long long n = (unsigned long long)
                                 (opts->length-imglen) * 100;
-                       int percent = (int)do_div(n, opts->length);
+                       int percent;
+
+                       do_div(n, opts->length);
+                       percent = (int)n;
+
                        /* output progress message only at whole percent
                         * steps to reduce the number of messages printed
                         * on (slow) serial consoles
@@ -653,7 +660,11 @@ int nand_read_opts(nand_info_t *meminfo, const nand_read_options_t *opts)
                if (!opts->quiet) {
                        unsigned long long n = (unsigned long long)
                                 (opts->length-imglen) * 100;
-                       int percent = (int)do_div(n ,opts->length);
+                       int percent;
+
+                       do_div(n, opts->length);
+                       percent = (int)n;
+
                        /* output progress message only at whole percent
                         * steps to reduce the number of messages printed
                         * on (slow) serial consoles