aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorMichael Trimarchi2016-06-08 10:18:16 +0200
committerTom Rini2016-06-12 13:14:57 -0400
commit666362356e1ccc0df91c03b1d3f97939968b9c04 (patch)
tree0f1b690e3d85eca3bcecc97abbbe34d8b552ef78 /cmd
parent1428d8327006445a861e347e8b1640e8eb9c5edf (diff)
cmd: gpt: add - partition size parsing
This patch try to parse name=userdata,size=-,uuid=${uuid_gpt_userdata}; gpt mmc write 0 $partitions gpt mmc verify 0 $partitions Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/gpt.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/cmd/gpt.c b/cmd/gpt.c
index 8ffaef30f56..3d9706b679c 100644
--- a/cmd/gpt.c
+++ b/cmd/gpt.c
@@ -181,6 +181,7 @@ static int set_gpt_info(struct blk_desc *dev_desc,
disk_partition_t *parts;
int errno = 0;
uint64_t size_ll, start_ll;
+ lbaint_t offset = 0;
debug("%s: lba num: 0x%x %d\n", __func__,
(unsigned int)dev_desc->lba, (unsigned int)dev_desc->lba);
@@ -296,8 +297,14 @@ static int set_gpt_info(struct blk_desc *dev_desc,
}
if (extract_env(val, &p))
p = val;
- size_ll = ustrtoull(p, &p, 0);
- parts[i].size = lldiv(size_ll, dev_desc->blksz);
+ if ((strcmp(p, "-") == 0)) {
+ /* remove first usable lba and last block */
+ parts[i].size = dev_desc->lba - 34 - 1 - offset;
+ } else {
+ size_ll = ustrtoull(p, &p, 0);
+ parts[i].size = lldiv(size_ll, dev_desc->blksz);
+ }
+
free(val);
/* start address */
@@ -310,6 +317,8 @@ static int set_gpt_info(struct blk_desc *dev_desc,
free(val);
}
+ offset += parts[i].size + parts[i].start;
+
/* bootable */
if (found_key(tok, "bootable"))
parts[i].bootable = 1;