Skip to content

Commit 13681fc

Browse files
committed
firehose: Make "start_sector" a string again
Assumed to be a remnant of early development lead to a recent transition of "start_sector" from being represented as a string to an integer. But it turns out that "start_sector" might be an expression, e.g. to write something at the end of the disk. So transition back to carry "start_sector" as a string. Fixes: b6e0ea3 ("program: Make start_sector unsigned in") Reported-by: Julien Robin Signed-off-by: Bjorn Andersson <[email protected]>
1 parent 3c0405c commit 13681fc

File tree

5 files changed

+9
-9
lines changed

5 files changed

+9
-9
lines changed

firehose.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ static int firehose_erase(struct qdl_device *qdl, struct program *program)
304304
xml_setpropf(node, "PAGES_PER_BLOCK", "%d", program->pages_per_block);
305305
xml_setpropf(node, "SECTOR_SIZE_IN_BYTES", "%d", program->sector_size);
306306
xml_setpropf(node, "num_partition_sectors", "%d", program->num_sectors);
307-
xml_setpropf(node, "start_sector", "%d", program->start_sector);
307+
xml_setpropf(node, "start_sector", "%s", program->start_sector);
308308

309309
ret = firehose_write(qdl, doc);
310310
if (ret < 0) {
@@ -313,7 +313,7 @@ static int firehose_erase(struct qdl_device *qdl, struct program *program)
313313
}
314314

315315
ret = firehose_read(qdl, 30000, firehose_generic_parser, NULL);
316-
fprintf(stderr, "[ERASE] erase 0x%x+0x%x %s\n",
316+
fprintf(stderr, "[ERASE] erase %s+0x%x %s\n",
317317
program->start_sector, program->num_sectors,
318318
ret ? "failed" : "succeeded");
319319

@@ -364,7 +364,7 @@ static int firehose_program(struct qdl_device *qdl, struct program *program, int
364364
xml_setpropf(node, "SECTOR_SIZE_IN_BYTES", "%d", program->sector_size);
365365
xml_setpropf(node, "num_partition_sectors", "%d", num_sectors);
366366
xml_setpropf(node, "physical_partition_number", "%d", program->partition);
367-
xml_setpropf(node, "start_sector", "%d", program->start_sector);
367+
xml_setpropf(node, "start_sector", "%s", program->start_sector);
368368
if (program->filename)
369369
xml_setpropf(node, "filename", "%s", program->filename);
370370

@@ -448,7 +448,7 @@ static int firehose_apply_patch(struct qdl_device *qdl, struct patch *patch)
448448
xml_setpropf(node, "filename", "%s", patch->filename);
449449
xml_setpropf(node, "physical_partition_number", "%d", patch->partition);
450450
xml_setpropf(node, "size_in_bytes", "%d", patch->size_in_bytes);
451-
xml_setpropf(node, "start_sector", "%d", patch->start_sector);
451+
xml_setpropf(node, "start_sector", "%s", patch->start_sector);
452452
xml_setpropf(node, "value", "%s", patch->value);
453453

454454
ret = firehose_write(qdl, doc);

patch.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ int patch_load(const char *patch_file)
7272
patch->filename = attr_as_string(node, "filename", &errors);
7373
patch->partition = attr_as_unsigned(node, "physical_partition_number", &errors);
7474
patch->size_in_bytes = attr_as_unsigned(node, "size_in_bytes", &errors);
75-
patch->start_sector = attr_as_unsigned(node, "start_sector", &errors);
75+
patch->start_sector = attr_as_string(node, "start_sector", &errors);
7676
patch->value = attr_as_string(node, "value", &errors);
7777
patch->what = attr_as_string(node, "what", &errors);
7878

patch.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ struct patch {
99
const char *filename;
1010
unsigned partition;
1111
unsigned size_in_bytes;
12-
unsigned start_sector;
12+
const char *start_sector;
1313
const char *value;
1414
const char *what;
1515

program.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static int load_erase_tag(xmlNode *node, bool is_nand)
6060
program->pages_per_block = attr_as_unsigned(node, "PAGES_PER_BLOCK", &errors);
6161
program->sector_size = attr_as_unsigned(node, "SECTOR_SIZE_IN_BYTES", &errors);
6262
program->num_sectors = attr_as_unsigned(node, "num_partition_sectors", &errors);
63-
program->start_sector = attr_as_unsigned(node, "start_sector", &errors);
63+
program->start_sector = attr_as_string(node, "start_sector", &errors);
6464

6565
if (errors) {
6666
fprintf(stderr, "[PROGRAM] errors while parsing erase tag\n");
@@ -93,7 +93,7 @@ static int load_program_tag(xmlNode *node, bool is_nand)
9393
program->label = attr_as_string(node, "label", &errors);
9494
program->num_sectors = attr_as_unsigned(node, "num_partition_sectors", &errors);
9595
program->partition = attr_as_unsigned(node, "physical_partition_number", &errors);
96-
program->start_sector = attr_as_unsigned(node, "start_sector", &errors);
96+
program->start_sector = attr_as_string(node, "start_sector", &errors);
9797

9898
if (is_nand) {
9999
program->pages_per_block = attr_as_unsigned(node, "PAGES_PER_BLOCK", &errors);

program.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ struct program {
1212
const char *label;
1313
unsigned num_sectors;
1414
unsigned partition;
15-
unsigned start_sector;
15+
const char *start_sector;
1616
unsigned last_sector;
1717

1818
bool is_nand;

0 commit comments

Comments
 (0)