ubi: add new ubi command "ubi detach"
authorHeiko Schocher <hs@denx.de>
Tue, 7 Jun 2016 06:55:40 +0000 (08:55 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 9 Jun 2016 17:53:11 +0000 (13:53 -0400)
simple detachs ubi from the mtd partition.

Signed-off-by: Heiko Schocher <hs@denx.de>
cmd/ubi.c

index 753a4dba3d782965dedb421cfbdab0d62b1a128a..4a92d840b6ccd9e2239838fe180b8381a697f765 100644 (file)
--- a/cmd/ubi.c
+++ b/cmd/ubi.c
@@ -443,14 +443,8 @@ static int ubi_dev_scan(struct mtd_info *info, char *ubidev,
        return 0;
 }
 
-int ubi_part(char *part_name, const char *vid_header_offset)
+int ubi_detach(void)
 {
-       int err = 0;
-       char mtd_dev[16];
-       struct mtd_device *dev;
-       struct part_info *part;
-       u8 pnum;
-
        if (mtdparts_init() != 0) {
                printf("Error initializing mtdparts!\n");
                return 1;
@@ -466,17 +460,28 @@ int ubi_part(char *part_name, const char *vid_header_offset)
                cmd_ubifs_umount();
 #endif
 
-       /* todo: get dev number for NAND... */
-       ubi_dev.nr = 0;
-
        /*
         * Call ubi_exit() before re-initializing the UBI subsystem
         */
        if (ubi_initialized) {
                ubi_exit();
                del_mtd_partitions(ubi_dev.mtd_info);
+               ubi_initialized = 0;
        }
 
+       ubi_dev.selected = 0;
+       return 0;
+}
+
+int ubi_part(char *part_name, const char *vid_header_offset)
+{
+       int err = 0;
+       char mtd_dev[16];
+       struct mtd_device *dev;
+       struct part_info *part;
+       u8 pnum;
+
+       ubi_detach();
        /*
         * Search the mtd device number where this partition
         * is located
@@ -517,6 +522,15 @@ static int do_ubi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (argc < 2)
                return CMD_RET_USAGE;
 
+
+       if (strcmp(argv[1], "detach") == 0) {
+               if (argc < 2)
+                       return CMD_RET_USAGE;
+
+               return ubi_detach();
+       }
+
+
        if (strcmp(argv[1], "part") == 0) {
                const char *vid_header_offset = NULL;
 
@@ -661,7 +675,9 @@ static int do_ubi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 U_BOOT_CMD(
        ubi, 6, 1, do_ubi,
        "ubi commands",
-       "part [part] [offset]\n"
+       "detach"
+               " - detach ubi from a mtd partition\n"
+       "ubi part [part] [offset]\n"
                " - Show or set current partition (with optional VID"
                " header offset)\n"
        "ubi info [l[ayout]]"