On Tue, 13 Nov 2018 12:01:06 +0100
Marek Vasut <marek.va...@gmail.com> wrote:

> On 11/12/2018 09:28 AM, Boris Brezillon wrote:
> > U-boot provides a mean to define default values for mtdids and mtdparts
> > when they're not defined in the environment. Patch mtd_probe_devices()
> > to use those default values when env_get("mtdparts") or
> > env_get("mtdids") return NULL.
> > 
> > This implementation is based on the logic found in cmd/mtdparts.c.
> > 
> > Fixes: 5db66b3aee6f ("cmd: mtd: add 'mtd' command")
> > Reported-by: Stefan Roese <s...@denx.de>
> > Signed-off-by: Boris Brezillon <boris.brezil...@bootlin.com>
> > Tested-by: Stefan Roese <s...@denx.de>
> > ---
> > Changes in v2:
> > - none
> > ---
> >  drivers/mtd/mtd_uboot.c | 62 +++++++++++++++++++++++++++++++++++++++--
> >  1 file changed, 60 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c
> > index 7d7a11c990d6..1d0a505754f2 100644
> > --- a/drivers/mtd/mtd_uboot.c
> > +++ b/drivers/mtd/mtd_uboot.c
> > @@ -92,12 +92,70 @@ static void mtd_probe_uclass_mtd_devs(void) { }
> >  #endif
> >  
> >  #if defined(CONFIG_MTD_PARTITIONS)
> > +extern void board_mtdparts_default(const char **mtdids,
> > +                              const char **mtdparts);
> > +
> > +static const char *get_mtdids(void)
> > +{
> > +   __maybe_unused const char *mtdparts = NULL;
> > +   const char *mtdids = env_get("mtdids");
> > +
> > +   if (mtdids)
> > +           return mtdids;
> > +
> > +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
> > +   board_mtdparts_default(&mtdids, &mtdparts);
> > +#elif defined(MTDIDS_DEFAULT)
> > +   mtdids = MTDIDS_DEFAULT;
> > +#elif defined(CONFIG_MTDIDS_DEFAULT)
> > +   mtdids = CONFIG_MTDIDS_DEFAULT;
> > +#endif
> > +
> > +   if (mtdids)
> > +           env_set("mtdids", mtdids);
> > +
> > +   return mtdids;
> > +}
> > +
> > +#define MTDPARTS_MAXLEN         512
> > +
> > +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)
> > +           mtdparts = env_get("mtdparts");
> > +   else if (env_get_f("mtdparts", tmp_parts, sizeof(tmp_parts) != -1))  
> sizeof(tmp_parts) != -1 is always true, the parenthesis are misplaced.
> 
> Also, include/common.h says that
>   * env_get_f() - Look up the value of an environment variable (early)
> ...
>   * @return value of variable, or NULL if not found

That's clearly not matching the implementation [1].

[1]https://elixir.bootlin.com/u-boot/v2018.11-rc3/source/cmd/nvedit.c#L680
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to