summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2018-11-13 19:50:01 -0500
committerTom Rini <trini@konsulko.com>2018-11-13 19:50:01 -0500
commit20274b0626b41a5709530afcf6cea6dd9c256e6c (patch)
treee6329be04a31d84e77005713f94b17a5bdd89d1c
parent4114a2614b0b7e3f147e2903a8e1d498c4cfb4ba (diff)
parent1f758b793649a18b76252bf507312465310637ad (diff)
Merge branch 'master' of git://git.denx.de/u-boot-spi
-rw-r--r--cmd/Kconfig5
-rw-r--r--cmd/ubi.c5
-rw-r--r--drivers/dfu/Kconfig1
-rw-r--r--drivers/mtd/Kconfig6
-rw-r--r--drivers/mtd/mtd_uboot.c62
5 files changed, 63 insertions, 16 deletions
diff --git a/cmd/Kconfig b/cmd/Kconfig
index d66f710ad0..ad14c9ce71 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1728,14 +1728,14 @@ config CMD_MTDPARTS
config MTDIDS_DEFAULT
string "Default MTD IDs"
- depends on CMD_MTD || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+ depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
help
Defines a default MTD IDs list for use with MTD partitions in the
Linux MTD command line partitions format.
config MTDPARTS_DEFAULT
string "Default MTD partition scheme"
- depends on CMD_MTD || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+ depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
help
Defines a default MTD partitioning scheme in the Linux MTD command
line partitions format
@@ -1856,7 +1856,6 @@ endmenu
config CMD_UBI
tristate "Enable UBI - Unsorted block images commands"
- select CMD_MTDPARTS
select CRC32
select MTD_UBI
help
diff --git a/cmd/ubi.c b/cmd/ubi.c
index 767a4a4536..2b74a98144 100644
--- a/cmd/ubi.c
+++ b/cmd/ubi.c
@@ -417,11 +417,6 @@ static int ubi_dev_scan(struct mtd_info *info, const char *vid_header_offset)
int ubi_detach(void)
{
- if (mtdparts_init() != 0) {
- printf("Error initializing mtdparts!\n");
- return 1;
- }
-
#ifdef CONFIG_CMD_UBIFS
/*
* Automatically unmount UBIFS partition when user
diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig
index 51ab484c2a..4692736c9d 100644
--- a/drivers/dfu/Kconfig
+++ b/drivers/dfu/Kconfig
@@ -30,6 +30,7 @@ config DFU_MMC
config DFU_NAND
bool "NAND back end for DFU"
+ depends on CMD_MTDPARTS
help
This option enables using DFU to read and write to NAND based
storage.
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index 11cf12bb55..0050fb2b9b 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -22,12 +22,6 @@ config MTD_DEVICE
Adds the MTD device infrastructure from the Linux kernel.
Needed for mtdparts command support.
-config MTD_PARTITIONS
- bool "Add MTD Partioning infrastructure"
- help
- Adds the MTD partitioning infrastructure from the Linux
- kernel. Needed for UBI support.
-
config FLASH_CFI_DRIVER
bool "Enable CFI Flash driver"
help
diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c
index 7d7a11c990..5ca560c968 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;