diff options
author | Clement Leger <cleger@kalray.eu> | 2020-03-25 18:27:36 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-03-30 07:31:16 +0200 |
commit | e0ed32ee61676ef2e4090fe44220c63b8a66beaf (patch) | |
tree | 732a1f0ee7066af43284275436889f51768356cf /drivers/of | |
parent | 631ecb7c36c6b7b0987cf516d82685d548af06c7 (diff) | |
download | barebox-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.c | 11 |
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; |