Add command for handling DDR ECC registers on MPC8349EE MDS board.
[oweals/u-boot.git] / common / cmd_nvedit.c
index a3898dda0f521e4503974f689740e3d20967979c..ecf1db489a478799be5bcb08b6099d33ed58b974 100644 (file)
@@ -43,6 +43,7 @@
 #include <command.h>
 #include <environment.h>
 #include <watchdog.h>
+#include <serial.h>
 #include <linux/stddef.h>
 #include <asm/byteorder.h>
 #if (CONFIG_COMMANDS & CFG_CMD_NET)
@@ -53,6 +54,7 @@
     !defined(CFG_ENV_IS_IN_EEPROM)     && \
     !defined(CFG_ENV_IS_IN_FLASH)      && \
     !defined(CFG_ENV_IS_IN_DATAFLASH)  && \
+    !defined(CFG_ENV_IS_IN_NAND)       && \
     !defined(CFG_ENV_IS_NOWHERE)
 # error Define one of CFG_ENV_IS_IN_{NVRAM|EEPROM|FLASH|DATAFLASH|NOWHERE}
 #endif
@@ -122,7 +124,7 @@ int do_printenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
                        for (nxt=j; env_get_char(nxt) != '\0'; ++nxt)
                                ;
-                       k = envmatch(name, j);
+                       k = envmatch((uchar *)name, j);
                        if (k < 0) {
                                continue;
                        }
@@ -155,7 +157,7 @@ int _do_setenv (int flag, int argc, char *argv[])
        int   i, len, oldval;
        int   console = -1;
        uchar *env, *nxt = NULL;
-       uchar *name;
+       char *name;
        bd_t *bd = gd->bd;
 
        uchar *env_data = env_get_addr(0);
@@ -172,7 +174,7 @@ int _do_setenv (int flag, int argc, char *argv[])
        for (env=env_data; *env; env=nxt+1) {
                for (nxt=env; *nxt; ++nxt)
                        ;
-               if ((oldval = envmatch(name, env-env_data)) >= 0)
+               if ((oldval = envmatch((uchar *)name, env-env_data)) >= 0)
                        break;
        }
 
@@ -189,7 +191,7 @@ int _do_setenv (int flag, int argc, char *argv[])
                if ( (strcmp (name, "serial#") == 0) ||
                    ((strcmp (name, "ethaddr") == 0)
 #if defined(CONFIG_OVERWRITE_ETHADDR_ONCE) && defined(CONFIG_ETHADDR)
-                    && (strcmp (env_get_addr(oldval),MK_STR(CONFIG_ETHADDR)) != 0)
+                    && (strcmp ((char *)env_get_addr(oldval),MK_STR(CONFIG_ETHADDR)) != 0)
 #endif /* CONFIG_OVERWRITE_ETHADDR_ONCE && CONFIG_ETHADDR */
                    ) ) {
                        printf ("Can't overwrite \"%s\"\n", name);
@@ -215,6 +217,11 @@ int _do_setenv (int flag, int argc, char *argv[])
                        /* Try assigning specified device */
                        if (console_assign (console, argv[2]) < 0)
                                return 1;
+
+#ifdef CONFIG_SERIAL_MULTI
+                       if (serial_assign (argv[2]) < 0)
+                               return 1;
+#endif
                }
 
                /*
@@ -476,7 +483,7 @@ int do_askenv ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
  * or NULL if not found
  */
 
-char *getenv (uchar *name)
+char *getenv (char *name)
 {
        int i, nxt;
 
@@ -490,15 +497,15 @@ char *getenv (uchar *name)
                                return (NULL);
                        }
                }
-               if ((val=envmatch(name, i)) < 0)
+               if ((val=envmatch((uchar *)name, i)) < 0)
                        continue;
-               return (env_get_addr(val));
+               return ((char *)env_get_addr(val));
        }
 
        return (NULL);
 }
 
-int getenv_r (uchar *name, uchar *buf, unsigned len)
+int getenv_r (char *name, char *buf, unsigned len)
 {
        int i, nxt;
 
@@ -510,7 +517,7 @@ int getenv_r (uchar *name, uchar *buf, unsigned len)
                                return (-1);
                        }
                }
-               if ((val=envmatch(name, i)) < 0)
+               if ((val=envmatch((uchar *)name, i)) < 0)
                        continue;
                /* found; copy out */
                n = 0;
@@ -525,7 +532,9 @@ int getenv_r (uchar *name, uchar *buf, unsigned len)
 
 #if defined(CFG_ENV_IS_IN_NVRAM) || defined(CFG_ENV_IS_IN_EEPROM) || \
     ((CONFIG_COMMANDS & (CFG_CMD_ENV|CFG_CMD_FLASH)) == \
-      (CFG_CMD_ENV|CFG_CMD_FLASH))
+      (CFG_CMD_ENV|CFG_CMD_FLASH)) || \
+    ((CONFIG_COMMANDS & (CFG_CMD_ENV|CFG_CMD_NAND)) == \
+      (CFG_CMD_ENV|CFG_CMD_NAND))
 int do_saveenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
        extern char * env_name_spec;
@@ -579,8 +588,11 @@ U_BOOT_CMD(
        "    - delete environment variable 'name'\n"
 );
 
-#if ((CONFIG_COMMANDS & (CFG_CMD_ENV|CFG_CMD_FLASH)) == (CFG_CMD_ENV|CFG_CMD_FLASH))
-
+#if defined(CFG_ENV_IS_IN_NVRAM) || defined(CFG_ENV_IS_IN_EEPROM) || \
+    ((CONFIG_COMMANDS & (CFG_CMD_ENV|CFG_CMD_FLASH)) == \
+      (CFG_CMD_ENV|CFG_CMD_FLASH)) || \
+    ((CONFIG_COMMANDS & (CFG_CMD_ENV|CFG_CMD_NAND)) == \
+      (CFG_CMD_ENV|CFG_CMD_NAND))
 U_BOOT_CMD(
        saveenv, 1, 0,  do_saveenv,
        "saveenv - save environment variables to persistent storage\n",