summaryrefslogtreecommitdiffstats
path: root/drivers/of
diff options
context:
space:
mode:
authorClement Leger <cleger@kalray.eu>2020-03-25 18:27:36 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2020-03-30 07:31:16 +0200
commite0ed32ee61676ef2e4090fe44220c63b8a66beaf (patch)
tree732a1f0ee7066af43284275436889f51768356cf /drivers/of
parent631ecb7c36c6b7b0987cf516d82685d548af06c7 (diff)
downloadbarebox-e0ed32ee61676ef2e4090fe44220c63b8a66beaf.tar.gz
barebox-e0ed32ee61676ef2e4090fe44220c63b8a66beaf.tar.xz
of: base: allow of_add_memory to be called multiple times
Currently, of_add_memory can't be called multiple times because it will always create memory banks by restarting at value 0. This means that, when adding a second memory bank by calling again of_add_memory, it will be named ram0 and overwrite the previous one. Fix that by using a static variable to store the current memory bank number in order to be preserved from one call to another. Signed-off-by: Clement Leger <cleger@kalray.eu> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/of')
-rw-r--r--drivers/of/base.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 9ede052274..2ea8d75160 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2019,6 +2019,8 @@ int of_set_property(struct device_node *np, const char *name, const void *val, i
return 0;
}
+static int mem_bank_num;
+
int of_add_memory(struct device_node *node, bool dump)
{
const char *device_type;
@@ -2030,14 +2032,13 @@ int of_add_memory(struct device_node *node, bool dump)
return -ENXIO;
while (!of_address_to_resource(node, n, &res)) {
- if (!resource_size(&res)) {
- n++;
+ n++;
+ if (!resource_size(&res))
continue;
- }
- of_add_memory_bank(node, dump, n,
+ of_add_memory_bank(node, dump, mem_bank_num,
res.start, resource_size(&res));
- n++;
+ mem_bank_num++;
}
return 0;