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