mtd: Fix get_mtdparts()
authorPatrice Chotard <patrice.chotard@st.com>
Wed, 23 Jan 2019 17:12:48 +0000 (18:12 +0100)
committerPatrice Chotard <patrice.chotard@st.com>
Thu, 6 Jun 2019 15:40:14 +0000 (17:40 +0200)
When ENV_IS_IN_UBI is enable, get_mtdparts is called before relocation.

During first get_mtdparts() call, mtdparts is not available in environment,
it can be retrieved by calling board_mtdparts_default(), but following
env_set() do nothing as we are before relocation. Finally mtdparts is
still not available in environment.

At second get_mtdparts() call, use_defaults is false, but mtdparts is still
not in environment and is NULL.

Remove use_defaults bool, only mtdparts criteria is useful.

Fixes: commit 5ffcd50612f6 ("mtd: Use default mtdparts/mtids when not defined
in the environment")

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
drivers/mtd/mtd_uboot.c

index d638f700d041e32757f1e3dea3a005085cfd2a12..0a41ed477c1db4e0f09a16f8ea7234f754a3505a 100644 (file)
@@ -122,7 +122,6 @@ static const char *get_mtdparts(void)
 {
        __maybe_unused const char *mtdids = NULL;
        static char tmp_parts[MTDPARTS_MAXLEN];
-       static bool use_defaults = true;
        const char *mtdparts = NULL;
 
        if (gd->flags & GD_FLG_ENV_READY)
@@ -130,7 +129,7 @@ static const char *get_mtdparts(void)
        else if (env_get_f("mtdparts", tmp_parts, sizeof(tmp_parts)) != -1)
                mtdparts = tmp_parts;
 
-       if (mtdparts || !use_defaults)
+       if (mtdparts)
                return mtdparts;
 
 #if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
@@ -144,8 +143,6 @@ static const char *get_mtdparts(void)
        if (mtdparts)
                env_set("mtdparts", mtdparts);
 
-       use_defaults = false;
-
        return mtdparts;
 }