]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_nvedit.c
IOMUX: Add console multiplexing support.
[karo-tx-uboot.git] / common / cmd_nvedit.c
index cab727f76ca21dd9cbf79836886b24f04bd5c943..85025daec7a37f5ab8b8feb59d603dfbca08636b 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#if !defined(CFG_ENV_IS_IN_NVRAM)      && \
-    !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_IN_ONENAND)    && \
-    !defined(CFG_ENV_IS_NOWHERE)
-# error Define one of CFG_ENV_IS_IN_{NVRAM|EEPROM|FLASH|DATAFLASH|ONENAND|NOWHERE}
+#if !defined(CONFIG_ENV_IS_IN_NVRAM)   && \
+    !defined(CONFIG_ENV_IS_IN_EEPROM)  && \
+    !defined(CONFIG_ENV_IS_IN_FLASH)   && \
+    !defined(CONFIG_ENV_IS_IN_DATAFLASH)       && \
+    !defined(CONFIG_ENV_IS_IN_NAND)    && \
+    !defined(CONFIG_ENV_IS_IN_ONENAND) && \
+    !defined(CONFIG_ENV_IS_IN_SPI_FLASH)       && \
+    !defined(CONFIG_ENV_IS_NOWHERE)
+# error Define one of CONFIG_ENV_IS_IN_{NVRAM|EEPROM|FLASH|DATAFLASH|ONENAND|SPI_FLASH|NOWHERE}
 #endif
 
 #define XMK_STR(x)     #x
@@ -68,23 +69,10 @@ DECLARE_GLOBAL_DATA_PTR;
 /************************************************************************
 ************************************************************************/
 
-/* Function that returns a character from the environment */
-extern uchar (*env_get_char)(int);
-
-/* Function that returns a pointer to a value from the environment */
-/* (Only memory version supported / needed). */
-extern uchar *env_get_addr(int);
-
-/* Function that updates CRC of the enironment */
-extern void env_crc_update (void);
-
-/************************************************************************
-************************************************************************/
-
 /*
  * Table with supported baudrates (defined in config_xyz.h)
  */
-static const unsigned long baudrate_table[] = CFG_BAUDRATE_TABLE;
+static const unsigned long baudrate_table[] = CONFIG_SYS_BAUDRATE_TABLE;
 #define        N_BAUDRATES (sizeof(baudrate_table) / sizeof(baudrate_table[0]))
 
 
@@ -111,7 +99,8 @@ int do_printenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                        }
                }
 
-               printf("\nEnvironment size: %d/%d bytes\n", i, ENV_SIZE);
+               printf("\nEnvironment size: %d/%ld bytes\n",
+                       i, (ulong)ENV_SIZE);
 
                return 0;
        }
@@ -192,11 +181,12 @@ int _do_setenv (int flag, int argc, char *argv[])
                 * Ethernet Address and serial# can be set only once,
                 * ver is readonly.
                 */
+               if (
 #ifdef CONFIG_HAS_UID
                /* Allow serial# forced overwrite with 0xdeaf4add flag */
-               if ( ((strcmp (name, "serial#") == 0) && (flag != 0xdeaf4add)) ||
+                   ((strcmp (name, "serial#") == 0) && (flag != 0xdeaf4add)) ||
 #else
-               if ( (strcmp (name, "serial#") == 0) ||
+                   (strcmp (name, "serial#") == 0) ||
 #endif
                    ((strcmp (name, "ethaddr") == 0)
 #if defined(CONFIG_OVERWRITE_ETHADDR_ONCE) && defined(CONFIG_ETHADDR)
@@ -223,6 +213,11 @@ int _do_setenv (int flag, int argc, char *argv[])
                                return 1;
                        }
 
+#ifdef CONFIG_CONSOLE_MUX
+                       i = iomux_doenv(console, argv[2]);
+                       if (i)
+                               return i;
+#else
                        /* Try assigning specified device */
                        if (console_assign (console, argv[2]) < 0)
                                return 1;
@@ -231,6 +226,7 @@ int _do_setenv (int flag, int argc, char *argv[])
                        if (serial_assign (argv[2]) < 0)
                                return 1;
 #endif
+#endif /* CONFIG_CONSOLE_MUX */
                }
 
                /*
@@ -392,13 +388,13 @@ int _do_setenv (int flag, int argc, char *argv[])
        return 0;
 }
 
-void setenv (char *varname, char *varvalue)
+int setenv (char *varname, char *varvalue)
 {
        char *argv[4] = { "setenv", varname, varvalue, NULL };
        if (varvalue == NULL)
-               _do_setenv (0, 2, argv);
+               return _do_setenv (0, 2, argv);
        else
-               _do_setenv (0, 3, argv);
+               return _do_setenv (0, 3, argv);
 }
 
 #ifdef CONFIG_HAS_UID
@@ -426,9 +422,9 @@ int do_setenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #if defined(CONFIG_CMD_ASKENV)
 int do_askenv ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-       extern char console_buffer[CFG_CBSIZE];
-       char message[CFG_CBSIZE];
-       int size = CFG_CBSIZE - 1;
+       extern char console_buffer[CONFIG_SYS_CBSIZE];
+       char message[CONFIG_SYS_CBSIZE];
+       int size = CONFIG_SYS_CBSIZE - 1;
        int len;
        char *local_args[4];
 
@@ -474,8 +470,8 @@ int do_askenv ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                break;
        }
 
-       if (size >= CFG_CBSIZE)
-               size = CFG_CBSIZE - 1;
+       if (size >= CONFIG_SYS_CBSIZE)
+               size = CONFIG_SYS_CBSIZE - 1;
 
        if (size <= 0)
                return 1;
@@ -513,7 +509,7 @@ char *getenv (char *name)
                int val;
 
                for (nxt=i; env_get_char(nxt) != '\0'; ++nxt) {
-                       if (nxt >= CFG_ENV_SIZE) {
+                       if (nxt >= CONFIG_ENV_SIZE) {
                                return (NULL);
                        }
                }
@@ -533,7 +529,7 @@ int getenv_r (char *name, char *buf, unsigned len)
                int val, n;
 
                for (nxt=i; env_get_char(nxt) != '\0'; ++nxt) {
-                       if (nxt >= CFG_ENV_SIZE) {
+                       if (nxt >= CONFIG_ENV_SIZE) {
                                return (-1);
                        }
                }
@@ -550,11 +546,11 @@ int getenv_r (char *name, char *buf, unsigned len)
        return (-1);
 }
 
-#if ((defined(CFG_ENV_IS_IN_NVRAM) || defined(CFG_ENV_IS_IN_EEPROM) \
+#if ((defined(CONFIG_ENV_IS_IN_NVRAM) || defined(CONFIG_ENV_IS_IN_EEPROM) \
     || (defined(CONFIG_CMD_ENV) && defined(CONFIG_CMD_FLASH)) \
     || (defined(CONFIG_CMD_ENV) && defined(CONFIG_CMD_NAND)) \
     || (defined(CONFIG_CMD_ENV) && defined(CONFIG_CMD_ONENAND))) \
-    && !defined(CFG_ENV_IS_NOWHERE))
+    && !defined(CONFIG_ENV_IS_NOWHERE))
 int do_saveenv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
        extern char * env_name_spec;
@@ -590,7 +586,7 @@ int envmatch (uchar *s1, int i2)
 /**************************************************/
 
 U_BOOT_CMD(
-       printenv, CFG_MAXARGS, 1,       do_printenv,
+       printenv, CONFIG_SYS_MAXARGS, 1,        do_printenv,
        "printenv- print environment variables\n",
        "\n    - print values of all environment variables\n"
        "printenv name ...\n"
@@ -598,7 +594,7 @@ U_BOOT_CMD(
 );
 
 U_BOOT_CMD(
-       setenv, CFG_MAXARGS, 0, do_setenv,
+       setenv, CONFIG_SYS_MAXARGS, 0,  do_setenv,
        "setenv  - set environment variables\n",
        "name value ...\n"
        "    - set environment variable 'name' to 'value ...'\n"
@@ -606,11 +602,11 @@ U_BOOT_CMD(
        "    - delete environment variable 'name'\n"
 );
 
-#if ((defined(CFG_ENV_IS_IN_NVRAM) || defined(CFG_ENV_IS_IN_EEPROM) \
+#if ((defined(CONFIG_ENV_IS_IN_NVRAM) || defined(CONFIG_ENV_IS_IN_EEPROM) \
     || (defined(CONFIG_CMD_ENV) && defined(CONFIG_CMD_FLASH)) \
     || (defined(CONFIG_CMD_ENV) && defined(CONFIG_CMD_NAND)) \
     || (defined(CONFIG_CMD_ENV) && defined(CONFIG_CMD_ONENAND))) \
-    && !defined(CFG_ENV_IS_NOWHERE))
+    && !defined(CONFIG_ENV_IS_NOWHERE))
 U_BOOT_CMD(
        saveenv, 1, 0,  do_saveenv,
        "saveenv - save environment variables to persistent storage\n",
@@ -622,7 +618,7 @@ U_BOOT_CMD(
 #if defined(CONFIG_CMD_ASKENV)
 
 U_BOOT_CMD(
-       askenv, CFG_MAXARGS,    1,      do_askenv,
+       askenv, CONFIG_SYS_MAXARGS,     1,      do_askenv,
        "askenv  - get environment variables from stdin\n",
        "name [message] [size]\n"
        "    - get environment variable 'name' from stdin (max 'size' chars)\n"
@@ -639,7 +635,7 @@ U_BOOT_CMD(
 #if defined(CONFIG_CMD_RUN)
 int do_run (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 U_BOOT_CMD(
-       run,    CFG_MAXARGS,    1,      do_run,
+       run,    CONFIG_SYS_MAXARGS,     1,      do_run,
        "run     - run commands in an environment variable\n",
        "var [...]\n"
        "    - run the commands in the environment variable(s) 'var'\n"