All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc again
@ 2012-11-02 11:03 ` Andreas Larsson
  0 siblings, 0 replies; 14+ messages in thread
From: Andreas Larsson @ 2012-11-02 11:03 UTC (permalink / raw)
  To: Grant Likely, davem; +Cc: Rob Herring, sparclinux, software, sam, linux-kernel

This bug-fix makes sure that of_address_to_resource is defined extern for sparc
so that the sparc-specific implementation of of_address_to_resource() is once
again used when including include/linux/of_address.h in a sparc context. A
number of drivers in mainline relies on this function working for sparc.

The bug was introduced in a850a7554442f08d3e910c6eeb4ee216868dda1e, "of/address:
add empty static inlines for !CONFIG_OF". Contrary to that commit title, the
static inlines are added for !CONFIG_OF_ADRESS, and CONFIG_OF_ADRESS is never
defined for sparc. This is good behavior for the other functions in
include/linux/of_address.h, as the extern functions defined in
drivers/of/address.c only gets linked when OF_ADDRESS is configured. However,
for of_address_to_resource is that there exists a sparc-specific implementation
in arch/sparc/arch/sparc/kernel/of_device_common.c

A similar solution is already in place for irq_of_parse_and_map() in
include/linux/of_irq.h.

Signed-off-by: Andreas Larsson <andreas@gaisler.com>
---
 include/linux/of_address.h |   22 +++++++++++++++-------
 1 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/include/linux/of_address.h b/include/linux/of_address.h
index a1984dd..66adde9 100644
--- a/include/linux/of_address.h
+++ b/include/linux/of_address.h
@@ -4,11 +4,24 @@
 #include <linux/errno.h>
 #include <linux/of.h>
 
+/* of_address_to_resource() is used by all OF enabled platforms; but SPARC
+ * implements it differently. However, the prototype is the same for all,
+ * so declare it here for sparc as well as when CONFIG_OF_ADDRESS is set.
+ */
+#if defined(CONFIG_OF_ADDRESS) || defined(CONFIG_SPARC)
+extern int of_address_to_resource(struct device_node *dev, int index,
+				  struct resource *r);
+#else
+static inline int of_address_to_resource(struct device_node *dev, int index,
+					 struct resource *r)
+{
+	return -EINVAL;
+}
+#endif
+
 #ifdef CONFIG_OF_ADDRESS
 extern u64 of_translate_address(struct device_node *np, const __be32 *addr);
 extern bool of_can_translate_address(struct device_node *dev);
-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,
@@ -28,11 +41,6 @@ static inline unsigned long pci_address_to_pio(phys_addr_t addr) { return -1; }
 #endif
 
 #else /* CONFIG_OF_ADDRESS */
-static inline int of_address_to_resource(struct device_node *dev, int index,
-					 struct resource *r)
-{
-	return -EINVAL;
-}
 static inline struct device_node *of_find_matching_node_by_address(
 					struct device_node *from,
 					const struct of_device_id *matches,
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-11-10  3:49 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-02 11:03 [PATCH] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc again Andreas Larsson
2012-11-02 11:03 ` Andreas Larsson
2012-11-02 17:53 ` [PATCH] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc agai Sam Ravnborg
2012-11-02 17:53   ` [PATCH] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc again Sam Ravnborg
2012-11-05 10:21   ` [PATCH] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc agai Andreas Larsson
2012-11-05 10:21     ` [PATCH] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc again Andreas Larsson
2012-11-05 10:53     ` [PATCH v2] " Andreas Larsson
2012-11-05 10:53       ` Andreas Larsson
2012-11-05 16:12       ` [PATCH v2] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc a Rob Herring
2012-11-05 16:12         ` [PATCH v2] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc again Rob Herring
2012-11-06 10:12         ` [PATCH v3] " Andreas Larsson
2012-11-06 10:12           ` Andreas Larsson
2012-11-10  3:49       ` [PATCH v2] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc a David Miller
2012-11-10  3:49         ` [PATCH v2] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc again David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.