summaryrefslogtreecommitdiff
path: root/common/cmd_ubi.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/cmd_ubi.c')
-rw-r--r--common/cmd_ubi.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/common/cmd_ubi.c b/common/cmd_ubi.c
index b99fd58638..9c17d71204 100644
--- a/common/cmd_ubi.c
+++ b/common/cmd_ubi.c
@@ -404,9 +404,6 @@ static int ubi_dev_scan(struct mtd_info *info, char *ubidev)
u8 pnum;
int err;
- if (mtdparts_init() != 0)
- return 1;
-
if (find_dev_and_part(ubidev, &dev, &pnum, &part) != 0)
return 1;
@@ -445,6 +442,11 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
return 1;
}
+ if (mtdparts_init() != 0) {
+ printf("Error initializing mtdparts!\n");
+ return 1;
+ }
+
if (strcmp(argv[1], "part") == 0) {
/* Print current partition */
if (argc == 2) {
@@ -475,7 +477,7 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
}
/*
- * Check for nand|onenand selection
+ * Check for nor|nand|onenand selection
*/
#if defined(CONFIG_CMD_NAND)
if (strcmp(argv[2], "nand") == 0) {
@@ -486,9 +488,23 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
#endif
#if defined(CONFIG_FLASH_CFI_MTD)
if (strcmp(argv[2], "nor") == 0) {
+ char mtd_dev[16];
+ struct mtd_device *dev;
+ struct part_info *part;
+ u8 pnum;
+
+ /*
+ * Search the mtd device number where this partition
+ * is located
+ */
+ if (find_dev_and_part(argv[3], &dev, &pnum, &part)) {
+ printf("Partition %s not found!\n", argv[3]);
+ return 1;
+ }
+ sprintf(mtd_dev, "nor%d", dev->id->num);
+ ubi_dev.mtd_info = get_mtd_device_nm(mtd_dev);
strcpy(ubi_dev.dev_name, "NOR");
ubi_dev.type = DEV_TYPE_NOR;
- ubi_dev.mtd_info = get_mtd_device_nm(CFI_MTD_DEV_NAME);
}
#endif
#if defined(CONFIG_CMD_ONENAND)