[U-Boot] [PATCH] cmd: mtdparts: Probe MTD devices in mtdparts_init()

Boris Brezillon
2018-10-30T10:03:54Z

On Tue, 30 Oct 2018 10:51:51 +0100
Stefan Roese <sr@denx.de> wrote:

> Calling "mtdparts" currently fails when its called before any other mtd
> command (or ubi command) has been called. The MTD devices are not
> probed at this point and therefore it fails e.g. with this message:
>
> => mtdparts
> Device spi-nand0 not found!

IIRC, we decided that mtdparts should not call mtd_probe_devices() to
encourage people to stop using it.

>
> This patch adds a call to mtd_probe_devices() to mtdparts_init() to
> solve this issue. This also fixes a problem when calling "ubi part"
> as first flash storage related command.

Hm, this one is unexpected. Miquel, any idea why this happens. Do we
need to enable a specific option if we want mtd_probe_devices() to be
called in the ubi part path?

> Here also the warning from
> above is printed without this patch.
>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Miquel Raynal <miquel.raynal@bootlin.com>
> Cc: Boris Brezillon <boris.brezillon@bootlin.com>
> Cc: Jagan Teki <jagan@openedev.com>
> ---
> cmd/mtdparts.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/cmd/mtdparts.c b/cmd/mtdparts.c
> index f7ed1a0779..d90e568143 100644
> --- a/cmd/mtdparts.c
> +++ b/cmd/mtdparts.c
> @@ -73,6 +73,7 @@
> #include <common.h>
> #include <command.h>
> #include <malloc.h>
> +#include <mtd.h>
> #include <jffs2/load_kernel.h>
> #include <linux/list.h>
> #include <linux/ctype.h>
> @@ -1726,6 +1727,9 @@ int mtdparts_init(void)
> char tmp_ep[PARTITION_MAXLEN + 1];
> char tmp_parts[MTDPARTS_MAXLEN];
>
> + /* First probe all MTD devices */
> + mtd_probe_devices();
> +
> debug("\n---mtdparts_init---\n");
> if (!initialized) {
> INIT_LIST_HEAD(&mtdids);