diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-04-22 08:59:55 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-04-22 09:23:58 +0200 |
commit | 812dc942d537011c00370215294324ca30cd37e5 (patch) | |
tree | acbf5f070f94543e09e6223aa77ac5be66e80238 | |
parent | 6d1788ab34c91279c1a277cb1a10f3e95a59b96e (diff) | |
download | barebox-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.c | 10 |
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++; } /* |