summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-04-22 08:59:55 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-04-22 09:23:58 +0200
commit812dc942d537011c00370215294324ca30cd37e5 (patch)
treeacbf5f070f94543e09e6223aa77ac5be66e80238
parent6d1788ab34c91279c1a277cb1a10f3e95a59b96e (diff)
downloadbarebox-812dc942d537011c00370215294324ca30cd37e5.tar.gz
barebox-812dc942d537011c00370215294324ca30cd37e5.tar.xz
of: read resource names from devicetree
Resources can have names and these can also be specified in the devicetree. Add support for it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/of/base.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c
index b8c2e8946b..fde91b3dfc 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -919,8 +919,9 @@ static int add_of_device_resource(struct device_node *node)
struct resource *res, *resp;
struct device_d *dev;
const __be32 *endp, *reg;
+ const char *resname;
int na, nc, n_resources;
- int ret, len;
+ int ret, len, index;
ret = of_add_memory(node, false);
if (ret != -ENXIO)
@@ -938,6 +939,8 @@ static int add_of_device_resource(struct device_node *node)
endp = reg + (len / sizeof(__be32));
+ index = 0;
+
while ((endp - reg) >= (na + nc)) {
address = of_translate_address(node, reg);
if (address == OF_BAD_ADDR) {
@@ -950,8 +953,13 @@ static int add_of_device_resource(struct device_node *node)
resp->start = address;
resp->end = address + size - 1;
+ resname = NULL;
+ of_property_read_string_index(node, "reg-names", index, &resname);
+ if (resname)
+ resp->name = xstrdup(resname);
resp->flags = IORESOURCE_MEM;
resp++;
+ index++;
}
/*