diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-03-18 12:48:46 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-03-18 12:54:06 +0100 |
commit | 8e48593dfaaf024613a9c0f8a30a1eaae68392a2 (patch) | |
tree | 7f03e1369e234b77c64e920eb539282a65ebcace | |
parent | c00193a57b3c7024dd14b49f0f826bdccbe89153 (diff) | |
download | barebox-8e48593dfaaf024613a9c0f8a30a1eaae68392a2.tar.gz barebox-8e48593dfaaf024613a9c0f8a30a1eaae68392a2.tar.xz |
of: Fix reproducible names for #address-cells != 1
For the new "fixed-partitions" binding we ignore the partitions
subnode for creating reproducible names and set node to its parent.
To get the number of address cells we must call of_n_addr_cells()
before setting node to its parent though, not afterwards. With the
current behaviour we always get OF_ROOT_NODE_ADDR_CELLS_DEFAULT (=1).
This happens to work then the partitioned device is less than 4GiB
in size. On bigger devices #address-cells = <2> is chosen by the
mtd partition fixup code.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reported-by: Bastian Krause <bst@pengutronix.de>
-rw-r--r-- | drivers/of/base.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c index b082f0c656..318ba72cb0 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2274,6 +2274,8 @@ char *of_get_reproducible_name(struct device_node *node) return basprintf("[0x%llx]", addr); } + na = of_n_addr_cells(node); + /* * Special workaround for the of partition binding. In the old binding * the partitions are directly under the hardware devicenode whereas in @@ -2286,8 +2288,6 @@ char *of_get_reproducible_name(struct device_node *node) node = node->parent; } - na = of_n_addr_cells(node); - offset = of_read_number(reg, na); str = of_get_reproducible_name(node->parent); |