mirror of
https://github.com/smaeul/u-boot.git
synced 2025-11-27 06:14:41 +00:00
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 <andrej.skvortzov@gmail.com>
This commit is contained in:
parent
801c482207
commit
9859edd3fc
10
cmd/pstore.c
10
cmd/pstore.c
@ -486,6 +486,8 @@ void fdt_fixup_pstore(void *blob)
|
||||
{
|
||||
char node[32];
|
||||
int nodeoffset; /* node offset from libfdt */
|
||||
u32 addr_cells_root;
|
||||
u32 size_cells_root;
|
||||
u32 addr_cells;
|
||||
u32 size_cells;
|
||||
|
||||
@ -495,6 +497,8 @@ void fdt_fixup_pstore(void *blob)
|
||||
log_err("fdt_path_offset() returned %s\n", fdt_strerror(nodeoffset));
|
||||
return;
|
||||
}
|
||||
addr_cells_root = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#address-cells", 2);
|
||||
size_cells_root = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#size-cells", 2);
|
||||
|
||||
nodeoffset = fdt_find_or_add_subnode(blob, nodeoffset, "reserved-memory");
|
||||
if (nodeoffset < 0) {
|
||||
@ -503,8 +507,10 @@ void fdt_fixup_pstore(void *blob)
|
||||
return;
|
||||
}
|
||||
|
||||
addr_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#address-cells", 2);
|
||||
size_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0, "#size-cells", 2);
|
||||
addr_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0,
|
||||
"#address-cells", addr_cells_root);
|
||||
size_cells = fdt_getprop_u32_default_node(blob, nodeoffset, 0,
|
||||
"#size-cells", size_cells_root);
|
||||
fdt_setprop_u32(blob, nodeoffset, "#address-cells", addr_cells);
|
||||
fdt_setprop_u32(blob, nodeoffset, "#size-cells", size_cells);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user