]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - common/cmd_mem.c
* Fix CONFIG_NET_MULTI support in include/net.h
[karo-tx-uboot.git] / common / cmd_mem.c
index d77b04728a810df2d2a624ff84a56716a7fc0ff1..bbfe958482cfd35c748b5a9f4b4170fec2b864a7 100644 (file)
@@ -30,6 +30,9 @@
 #include <common.h>
 #include <command.h>
 #include <cmd_mem.h>
+#if (CONFIG_COMMANDS & CFG_CMD_MMC)
+#include <mmc.h>
+#endif
 
 #if (CONFIG_COMMANDS & (CFG_CMD_MEMORY | CFG_CMD_PCI | CFG_CMD_I2C\
                        | CMD_CMD_PORTIO))
@@ -323,6 +326,46 @@ int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        }
 #endif
 
+#if (CONFIG_COMMANDS & CFG_CMD_MMC)
+       if (mmc2info(dest)) {
+               int rc;
+
+               printf ("Copy to MMC... ");
+               switch (rc = mmc_write ((uchar *)addr, dest, count*size)) {
+               case 0:
+                       printf ("\n");
+                       return 1;
+               case -1:
+                       printf("failed\n");
+                       return 1;
+               default:
+                       printf ("%s[%d] FIXME: rc=%d\n",__FILE__,__LINE__,rc);
+                       return 1;
+               }
+               puts ("done\n");
+               return 0;
+       }
+
+       if (mmc2info(addr)) {
+               int rc;
+
+               printf ("Copy from MMC... ");
+               switch (rc = mmc_read (addr, (uchar *)dest, count*size)) {
+               case 0:
+                       printf ("\n");
+                       return 1;
+               case -1:
+                       printf("failed\n");
+                       return 1;
+               default:
+                       printf ("%s[%d] FIXME: rc=%d\n",__FILE__,__LINE__,rc);
+                       return 1;
+               }
+               puts ("done\n");
+               return 0;
+       }
+#endif
+
        while (count-- > 0) {
                if (size == 4)
                        *((ulong  *)dest) = *((ulong  *)addr);
@@ -820,30 +863,29 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char *argv[])
 
 int do_mem_crc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-       ulong   addr, length;
-       ulong   crc;
-       ulong   *ptr;
+       ulong addr, length;
+       ulong crc;
+       ulong *ptr;
 
        if (argc < 3) {
                printf ("Usage:\n%s\n", cmdtp->usage);
                return 1;
        }
 
-       addr = simple_strtoul(argv[1], NULL, 16);
+       addr = simple_strtoul (argv[1], NULL, 16);
        addr += base_address;
 
-       length = simple_strtoul(argv[2], NULL, 16);
+       length = simple_strtoul (argv[2], NULL, 16);
 
-       crc = crc32 (0, (const uchar *)addr, length);
+       crc = crc32 (0, (const uchar *) addr, length);
 
        printf ("CRC32 for %08lx ... %08lx ==> %08lx\n",
-               addr, addr + length -1, crc);
+                       addr, addr + length - 1, crc);
 
-       if (argc > 3)
-         {
-           ptr = (ulong *)simple_strtoul(argv[3], NULL, 16);
-           *ptr = crc;
-         }
+       if (argc > 3) {
+               ptr = (ulong *) simple_strtoul (argv[3], NULL, 16);
+               *ptr = crc;
+       }
 
        return 0;
 }