All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 1/5] mtd: Use default mtdparts/mtids when not defined in the environment
@ 2018-11-12  8:28 Boris Brezillon
  2018-11-12  8:28 ` [U-Boot] [PATCH v2 2/5] dfu: nand: Add missing dependency on CMD_MTDPARTS Boris Brezillon
                   ` (7 more replies)
  0 siblings, 8 replies; 18+ messages in thread
From: Boris Brezillon @ 2018-11-12  8:28 UTC (permalink / raw)
  To: u-boot

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 <sr@denx.de>
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Tested-by: Stefan Roese <sr@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))
+		mtdparts = tmp_parts;
+
+	if (mtdparts || !use_defaults)
+		return mtdparts;
+
+#if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
+	board_mtdparts_default(&mtdids, &mtdparts);
+#elif defined(MTDPARTS_DEFAULT)
+	mtdparts = MTDPARTS_DEFAULT;
+#elif defined(CONFIG_MTDPARTS_DEFAULT)
+	mtdparts = CONFIG_MTDPARTS_DEFAULT;
+#endif
+
+	if (mtdparts)
+		env_set("mtdparts", mtdparts);
+
+	use_defaults = false;
+
+	return mtdparts;
+}
+
 int mtd_probe_devices(void)
 {
 	static char *old_mtdparts;
 	static char *old_mtdids;
-	const char *mtdparts = env_get("mtdparts");
-	const char *mtdids = env_get("mtdids");
+	const char *mtdparts = get_mtdparts();
+	const char *mtdids = get_mtdids();
 	bool remaining_partitions = true;
 	struct mtd_info *mtd;
 
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2018-11-13 12:14 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-12  8:28 [U-Boot] [PATCH v2 1/5] mtd: Use default mtdparts/mtids when not defined in the environment Boris Brezillon
2018-11-12  8:28 ` [U-Boot] [PATCH v2 2/5] dfu: nand: Add missing dependency on CMD_MTDPARTS Boris Brezillon
2018-11-12 11:00   ` Lukasz Majewski
2018-11-12  8:28 ` [U-Boot] [PATCH v2 3/5] mtd: Make {MTDIDS, MTDPARTS}_DEFAULT visible when MTD_PARTITIONS is selected Boris Brezillon
2018-11-12 11:00   ` Lukasz Majewski
2018-11-12  8:28 ` [U-Boot] [PATCH v2 4/5] cmd: ubi: Remove useless call to mtdparts_init() Boris Brezillon
2018-11-12 11:01   ` Lukasz Majewski
2018-11-12  8:28 ` [U-Boot] [PATCH v2 5/5] mtd: Drop duplicate MTD_PARTITIONS Kconfig option Boris Brezillon
2018-11-12 11:01   ` Lukasz Majewski
2018-11-12  9:24 ` [U-Boot] [PATCH v2 1/5] mtd: Use default mtdparts/mtids when not defined in the environment Miquel Raynal
2018-11-12 10:09   ` Jagan Teki
2018-11-12 11:00     ` Miquel Raynal
2018-11-12 10:25 ` Jagan Teki
2018-11-12 15:51   ` Boris Brezillon
2018-11-12 10:59 ` Lukasz Majewski
2018-11-13 11:01 ` Marek Vasut
2018-11-13 11:34   ` Boris Brezillon
2018-11-13 12:14     ` Marek Vasut

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.