]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
cmd: ubi: add option to specify volume id
authorLadislav Michl <ladis@linux-mips.org>
Tue, 13 Sep 2016 05:14:01 +0000 (07:14 +0200)
committerHeiko Schocher <hs@denx.de>
Tue, 27 Sep 2016 05:00:12 +0000 (07:00 +0200)
Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
cmd/ubi.c

index b726f3f3bb699b6190fbbd4bc381ffa83d83d888..7d0d7e7a80a7ed7712be84110ca3b61c8da085a0 100644 (file)
--- a/cmd/ubi.c
+++ b/cmd/ubi.c
@@ -162,7 +162,7 @@ bad:
        return err;
 }
 
-static int ubi_create_vol(char *volume, int64_t size, int dynamic)
+static int ubi_create_vol(char *volume, int64_t size, int dynamic, int vol_id)
 {
        struct ubi_mkvol_req req;
        int err;
@@ -172,7 +172,7 @@ static int ubi_create_vol(char *volume, int64_t size, int dynamic)
        else
                req.vol_type = UBI_STATIC_VOLUME;
 
-       req.vol_id = UBI_VOL_NUM_AUTO;
+       req.vol_id = vol_id;
        req.alignment = 1;
        req.bytes = size;
 
@@ -577,10 +577,17 @@ static int do_ubi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        if (strncmp(argv[1], "create", 6) == 0) {
                int dynamic = 1;        /* default: dynamic volume */
+               int id = UBI_VOL_NUM_AUTO;
 
                /* Use maximum available size */
                size = 0;
 
+               /* E.g., create volume size type vol_id */
+               if (argc == 6) {
+                       id = simple_strtoull(argv[5], NULL, 16);
+                       argc--;
+               }
+
                /* E.g., create volume size type */
                if (argc == 5) {
                        if (strncmp(argv[4], "s", 1) == 0)
@@ -603,7 +610,7 @@ static int do_ubi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                }
                /* E.g., create volume */
                if (argc == 3)
-                       return ubi_create_vol(argv[2], size, dynamic);
+                       return ubi_create_vol(argv[2], size, dynamic, id);
        }
 
        if (strncmp(argv[1], "remove", 6) == 0) {
@@ -684,7 +691,7 @@ U_BOOT_CMD(
                " - Display volume and ubi layout information\n"
        "ubi check volumename"
                " - check if volumename exists\n"
-       "ubi create[vol] volume [size] [type]"
+       "ubi create[vol] volume [size] [type] [id]"
                " - create volume name with size\n"
        "ubi write[vol] address volume size"
                " - Write volume from address with size\n"