diff options
author | Boris Brezillon <boris.brezillon@bootlin.com> | 2018-12-02 10:54:23 +0100 |
---|---|---|
committer | Jagan Teki <jagan@amarulasolutions.com> | 2018-12-06 00:45:36 +0530 |
commit | 779c9c0565a44e7dc5f72919d88f67fb7e280880 (patch) | |
tree | 7d684b290883f483b076e1b5ade1347d22e08b41 /drivers/mtd/mtd_uboot.c | |
parent | 4c47fd0b6bce62162e11b8a22e2eaf0d8f6673b1 (diff) | |
download | u-boot-779c9c0565a44e7dc5f72919d88f67fb7e280880.tar.gz |
mtd: Parse mtdparts/mtdids again when the MTD list has been updated
Updates to the MTD device list should trigger a new parsing of the
mtdids/mtdparts vars even if those vars haven't changed.
Fixes: 5db66b3aee6f ("cmd: mtd: add 'mtd' command")
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Tested-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'drivers/mtd/mtd_uboot.c')
-rw-r--r-- | drivers/mtd/mtd_uboot.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c index 5ca560c968..6a3e64395d 100644 --- a/drivers/mtd/mtd_uboot.c +++ b/drivers/mtd/mtd_uboot.c @@ -161,9 +161,13 @@ int mtd_probe_devices(void) mtd_probe_uclass_mtd_devs(); - /* Check if mtdparts/mtdids changed since last call, otherwise: exit */ + /* + * Check if mtdparts/mtdids changed or if the MTD dev list was updated + * since last call, otherwise: exit + */ if ((!mtdparts && !old_mtdparts && !mtdids && !old_mtdids) || (mtdparts && old_mtdparts && mtdids && old_mtdids && + !mtd_dev_list_updated() && !strcmp(mtdparts, old_mtdparts) && !strcmp(mtdids, old_mtdids))) return 0; @@ -201,6 +205,12 @@ int mtd_probe_devices(void) } } + /* + * Call mtd_dev_list_updated() to clear updates generated by our own + * parts removal loop. + */ + mtd_dev_list_updated(); + /* If either mtdparts or mtdids is empty, then exit */ if (!mtdparts || !mtdids) return 0; @@ -281,6 +291,12 @@ int mtd_probe_devices(void) put_mtd_device(mtd); } + /* + * Call mtd_dev_list_updated() to clear updates generated by our own + * parts registration loop. + */ + mtd_dev_list_updated(); + return 0; } #else |