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>
This commit is contained in:
Michael Trimarchi 2016-06-08 10:18:16 +02:00 committed by Tom Rini
parent 1428d83270
commit 666362356e

View File

@ -181,6 +181,7 @@ static int set_gpt_info(struct blk_desc *dev_desc,
disk_partition_t *parts; disk_partition_t *parts;
int errno = 0; int errno = 0;
uint64_t size_ll, start_ll; uint64_t size_ll, start_ll;
lbaint_t offset = 0;
debug("%s: lba num: 0x%x %d\n", __func__, debug("%s: lba num: 0x%x %d\n", __func__,
(unsigned int)dev_desc->lba, (unsigned int)dev_desc->lba); (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)) if (extract_env(val, &p))
p = val; p = val;
size_ll = ustrtoull(p, &p, 0); if ((strcmp(p, "-") == 0)) {
parts[i].size = lldiv(size_ll, dev_desc->blksz); /* 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); free(val);
/* start address */ /* start address */
@ -310,6 +317,8 @@ static int set_gpt_info(struct blk_desc *dev_desc,
free(val); free(val);
} }
offset += parts[i].size + parts[i].start;
/* bootable */ /* bootable */
if (found_key(tok, "bootable")) if (found_key(tok, "bootable"))
parts[i].bootable = 1; parts[i].bootable = 1;