Skip to content

Commit 9859edd

Browse files
AndreySVtrini
authored andcommitted
pstore: Use root address-cells/size-cells as defaults for reserved-memory
u-boot adds reserve-memory node, if it's missing, with following properties: ``` reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; } ``` But with these default address-cells and size-cells values, pstore isn't working on A64. Root node for A64 defines 'address-cells' and 'size-cells' as 1. dtc complains if reserved-memory has different address-cells and size-cells. ``` Warning (ranges_format): /reserved-memory:ranges: empty "ranges" property but its #address-cells (2) differs from / (1) ``` This patch takes into account address-cells and size-cells of the root node and uses them as values for new reserved-memory node. Signed-off-by: Andrey Skvortsov <[email protected]>
1 parent 801c482 commit 9859edd

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

cmd/pstore.c

+8-2
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,8 @@ void fdt_fixup_pstore(void *blob)
486486
{
487487
char node[32];
488488
int nodeoffset; /* node offset from libfdt */
489+
u32 addr_cells_root;
490+
u32 size_cells_root;
489491
u32 addr_cells;
490492
u32 size_cells;
491493

@@ -495,6 +497,8 @@ void fdt_fixup_pstore(void *blob)
495497
log_err("fdt_path_offset() returned %s\n", fdt_strerror(nodeoffset));
496498
return;
497499
}
500+
addr_cells_root = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#address-cells", 2);
501+
size_cells_root = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#size-cells", 2);
498502

499503
nodeoffset = fdt_find_or_add_subnode(blob, nodeoffset, "reserved-memory");
500504
if (nodeoffset < 0) {
@@ -503,8 +507,10 @@ void fdt_fixup_pstore(void *blob)
503507
return;
504508
}
505509

506-
addr_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#address-cells", 2);
507-
size_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#size-cells", 2);
510+
addr_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0,
511+
"#address-cells", addr_cells_root);
512+
size_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0,
513+
"#size-cells", size_cells_root);
508514
fdt_setprop_u32(blob, nodeoffset, "#address-cells", addr_cells);
509515
fdt_setprop_u32(blob, nodeoffset, "#size-cells", size_cells);
510516

0 commit comments

Comments
 (0)