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:
parent
1428d83270
commit
666362356e
13
cmd/gpt.c
13
cmd/gpt.c
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user