projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
env: ti: boot: Show boot status information
[oweals/u-boot.git]
/
drivers
/
dfu
/
dfu_ram.c
diff --git
a/drivers/dfu/dfu_ram.c
b/drivers/dfu/dfu_ram.c
index 335a8e1f2491cd9dc477885f83a76677a1725407..6e3f5316f5ada793bcbcf02be408167a3cca2c37 100644
(file)
--- a/
drivers/dfu/dfu_ram.c
+++ b/
drivers/dfu/dfu_ram.c
@@
-41,34
+41,44
@@
static int dfu_write_medium_ram(struct dfu_entity *dfu, u64 offset,
return dfu_transfer_medium_ram(DFU_OP_WRITE, dfu, offset, buf, len);
}
return dfu_transfer_medium_ram(DFU_OP_WRITE, dfu, offset, buf, len);
}
+int dfu_get_medium_size_ram(struct dfu_entity *dfu, u64 *size)
+{
+ *size = dfu->data.ram.size;
+
+ return 0;
+}
+
static int dfu_read_medium_ram(struct dfu_entity *dfu, u64 offset,
void *buf, long *len)
{
static int dfu_read_medium_ram(struct dfu_entity *dfu, u64 offset,
void *buf, long *len)
{
- if (!*len) {
- *len = dfu->data.ram.size;
- return 0;
- }
-
return dfu_transfer_medium_ram(DFU_OP_READ, dfu, offset, buf, len);
}
return dfu_transfer_medium_ram(DFU_OP_READ, dfu, offset, buf, len);
}
-int dfu_fill_entity_ram(struct dfu_entity *dfu, char *s)
+int dfu_fill_entity_ram(struct dfu_entity *dfu, char *
devstr, char *
s)
{
{
- char *st;
+ const char *argv[3];
+ const char **parg = argv;
+
+ for (; parg < argv + sizeof(argv) / sizeof(*argv); ++parg) {
+ *parg = strsep(&s, " ");
+ if (*parg == NULL) {
+ error("Invalid number of arguments.\n");
+ return -ENODEV;
+ }
+ }
dfu->dev_type = DFU_DEV_RAM;
dfu->dev_type = DFU_DEV_RAM;
- st = strsep(&s, " ");
- if (strcmp(st, "ram")) {
- error("unsupported device: %s\n", st);
+ if (strcmp(argv[0], "ram")) {
+ error("unsupported device: %s\n", argv[0]);
return -ENODEV;
}
dfu->layout = DFU_RAM_ADDR;
return -ENODEV;
}
dfu->layout = DFU_RAM_ADDR;
- dfu->data.ram.start = (void *)simple_strtoul(s, &s, 16);
- s++;
- dfu->data.ram.size = simple_strtoul(s, &s, 16);
+ dfu->data.ram.start = (void *)simple_strtoul(argv[1], NULL, 16);
+ dfu->data.ram.size = simple_strtoul(argv[2], NULL, 16);
dfu->write_medium = dfu_write_medium_ram;
dfu->write_medium = dfu_write_medium_ram;
+ dfu->get_medium_size = dfu_get_medium_size_ram;
dfu->read_medium = dfu_read_medium_ram;
dfu->inited = 0;
dfu->read_medium = dfu_read_medium_ram;
dfu->inited = 0;