add patches.kzm9g/of-address-add-of_find_matching_node_by_address-helper.patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Jul 2012 21:55:28 +0000 (14:55 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Jul 2012 21:55:28 +0000 (14:55 -0700)
This fixes a build error

patches.kzm9g/of-address-add-of_find_matching_node_by_address-helper.patch [new file with mode: 0644]
series

diff --git a/patches.kzm9g/of-address-add-of_find_matching_node_by_address-helper.patch b/patches.kzm9g/of-address-add-of_find_matching_node_by_address-helper.patch
new file mode 100644 (file)
index 0000000..3b44383
--- /dev/null
@@ -0,0 +1,66 @@
+From: Grant Likely <grant.likely@secretlab.ca>
+Subject: of/address: Add of_find_matching_node_by_address helper
+
+of_find_matching_node_by_address() can be used to find a device tree
+node for a device at a specific address.
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+(cherry picked from commit 90e33f62e027d330485d03598e1b2d8db3ff031c)
+
+Signed-off-by: Simon Horman <horms@verge.net.au>
+---
+ drivers/of/address.c       | 18 ++++++++++++++++++
+ include/linux/of_address.h |  4 ++++
+ 2 files changed, 22 insertions(+)
+
+diff --git a/drivers/of/address.c b/drivers/of/address.c
+index b4559c5..da1f4b9 100644
+--- a/drivers/of/address.c
++++ b/drivers/of/address.c
+@@ -577,6 +577,24 @@ int of_address_to_resource(struct device_node *dev, int index,
+ }
+ EXPORT_SYMBOL_GPL(of_address_to_resource);
++struct device_node *of_find_matching_node_by_address(struct device_node *from,
++                                      const struct of_device_id *matches,
++                                      u64 base_address)
++{
++      struct device_node *dn = of_find_matching_node(from, matches);
++      struct resource res;
++
++      while (dn) {
++              if (of_address_to_resource(dn, 0, &res))
++                      continue;
++              if (res.start == base_address)
++                      return dn;
++              dn = of_find_matching_node(dn, matches);
++      }
++
++      return NULL;
++}
++
+ /**
+  * of_iomap - Maps the memory mapped IO for a given device_node
+diff --git a/include/linux/of_address.h b/include/linux/of_address.h
+index 2feda6ee..bdfc20d 100644
+--- a/include/linux/of_address.h
++++ b/include/linux/of_address.h
+@@ -6,6 +6,10 @@
+ extern u64 of_translate_address(struct device_node *np, const __be32 *addr);
+ extern int of_address_to_resource(struct device_node *dev, int index,
+                                 struct resource *r);
++extern struct device_node *of_find_matching_node_by_address(
++                                      struct device_node *from,
++                                      const struct of_device_id *matches,
++                                      u64 base_address);
+ extern void __iomem *of_iomap(struct device_node *device, int index);
+ /* Extract an address from a device, returns the region size and
+-- 
+1.7.10.2.484.gcd07cc5
+
+_______________________________________________
+LTSI-dev mailing list
+LTSI-dev@lists.linuxfoundation.org
+https://lists.linuxfoundation.org/mailman/listinfo/ltsi-dev
diff --git a/series b/series
index 595c637789d3b6fe594b9b4395cc713eae747918..db3d0dd6230a3ccf36056fc94f2db07aea022983 100644 (file)
--- a/series
+++ b/series
@@ -728,6 +728,7 @@ patches.kzm9g/0139-ARM-mach-shmobile-armadillo800eva-Add-FSI-WM8978-sup.patch
 patches.kzm9g/0140-ARM-mach-shmobile-Add-support-for-PINT-though-INTC-m.patch
 patches.kzm9g/0141-irq-Track-the-owner-of-irq-descriptor.patch
 patches.kzm9g/0142-irq-add-irq_domain-translation-infrastructure.patch
+patches.kzm9g/of-address-add-of_find_matching_node_by_address-helper.patch
 patches.kzm9g/0143-dt-irq-add-irq_domain_generate_simple-helper.patch
 patches.kzm9g/0144-irq-Add-declaration-of-irq_domain_simple_ops-to-irqd.patch
 patches.kzm9g/0145-irq-Fix-check-for-already-initialized-irq_domain-in-.patch