summaryrefslogtreecommitdiffstats
path: root/drivers/of/address.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/of/address.c')
-rw-r--r--drivers/of/address.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/of/address.c b/drivers/of/address.c
index 72c33fbe451d..66d96f14c274 100644
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -14,7 +14,7 @@
14static struct of_bus *of_match_bus(struct device_node *np); 14static struct of_bus *of_match_bus(struct device_node *np);
15static int __of_address_to_resource(struct device_node *dev, 15static int __of_address_to_resource(struct device_node *dev,
16 const __be32 *addrp, u64 size, unsigned int flags, 16 const __be32 *addrp, u64 size, unsigned int flags,
17 struct resource *r); 17 const char *name, struct resource *r);
18 18
19/* Debug utility */ 19/* Debug utility */
20#ifdef DEBUG 20#ifdef DEBUG
@@ -215,7 +215,7 @@ int of_pci_address_to_resource(struct device_node *dev, int bar,
215 addrp = of_get_pci_address(dev, bar, &size, &flags); 215 addrp = of_get_pci_address(dev, bar, &size, &flags);
216 if (addrp == NULL) 216 if (addrp == NULL)
217 return -EINVAL; 217 return -EINVAL;
218 return __of_address_to_resource(dev, addrp, size, flags, r); 218 return __of_address_to_resource(dev, addrp, size, flags, NULL, r);
219} 219}
220EXPORT_SYMBOL_GPL(of_pci_address_to_resource); 220EXPORT_SYMBOL_GPL(of_pci_address_to_resource);
221#endif /* CONFIG_PCI */ 221#endif /* CONFIG_PCI */
@@ -529,7 +529,7 @@ EXPORT_SYMBOL(of_get_address);
529 529
530static int __of_address_to_resource(struct device_node *dev, 530static int __of_address_to_resource(struct device_node *dev,
531 const __be32 *addrp, u64 size, unsigned int flags, 531 const __be32 *addrp, u64 size, unsigned int flags,
532 struct resource *r) 532 const char *name, struct resource *r)
533{ 533{
534 u64 taddr; 534 u64 taddr;
535 535
@@ -551,7 +551,8 @@ static int __of_address_to_resource(struct device_node *dev,
551 r->end = taddr + size - 1; 551 r->end = taddr + size - 1;
552 } 552 }
553 r->flags = flags; 553 r->flags = flags;
554 r->name = dev->full_name; 554 r->name = name ? name : dev->full_name;
555
555 return 0; 556 return 0;
556} 557}
557 558
@@ -569,11 +570,16 @@ int of_address_to_resource(struct device_node *dev, int index,
569 const __be32 *addrp; 570 const __be32 *addrp;
570 u64 size; 571 u64 size;
571 unsigned int flags; 572 unsigned int flags;
573 const char *name = NULL;
572 574
573 addrp = of_get_address(dev, index, &size, &flags); 575 addrp = of_get_address(dev, index, &size, &flags);
574 if (addrp == NULL) 576 if (addrp == NULL)
575 return -EINVAL; 577 return -EINVAL;
576 return __of_address_to_resource(dev, addrp, size, flags, r); 578
579 /* Get optional "reg-names" property to add a name to a resource */
580 of_property_read_string_index(dev, "reg-names", index, &name);
581
582 return __of_address_to_resource(dev, addrp, size, flags, name, r);
577} 583}
578EXPORT_SYMBOL_GPL(of_address_to_resource); 584EXPORT_SYMBOL_GPL(of_address_to_resource);
579 585