[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20121102175321.GA6720@merkur.ravnborg.org>
Date: Fri, 2 Nov 2012 18:53:21 +0100
From: Sam Ravnborg <sam@...nborg.org>
To: Andreas Larsson <andreas@...sler.com>
Cc: Grant Likely <grant.likely@...retlab.ca>, davem@...emloft.net,
Rob Herring <rob.herring@...xeda.com>,
sparclinux@...r.kernel.org, software@...sler.com,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] of/address: sparc: Declare of_address_to_resource() as
an extern function for sparc again
Hi Andreas.
On Fri, Nov 02, 2012 at 12:03:56PM +0100, Andreas Larsson wrote:
> 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.
How about following (untested) approach.
diff --git a/arch/sparc/include/asm/prom.h b/arch/sparc/include/asm/prom.h
index c287651..8194801 100644
--- a/arch/sparc/include/asm/prom.h
+++ b/arch/sparc/include/asm/prom.h
@@ -63,5 +63,8 @@ extern char *of_console_options;
extern void irq_trans_init(struct device_node *dp);
extern char *build_path_component(struct device_node *dp);
+/* SPARC has a local implementation */
+#define of_address_to_resource of_address_to_resource
+
#endif /* __KERNEL__ */
#endif /* _SPARC_PROM_H */
diff --git a/include/linux/of_address.h b/include/linux/of_address.h
index a1984dd..e20e3af 100644
--- a/include/linux/of_address.h
+++ b/include/linux/of_address.h
@@ -28,11 +28,13 @@ static inline unsigned long pci_address_to_pio(phys_addr_t addr) { return -1; }
#endif
#else /* CONFIG_OF_ADDRESS */
+#ifndef of_address_to_resource
static inline int of_address_to_resource(struct device_node *dev, int index,
struct resource *r)
{
return -EINVAL;
}
+#endif
static inline struct device_node *of_find_matching_node_by_address(
struct device_node *from,
const struct of_device_id *matches,
We use prom.h to teach the general of layer what SPARC provides.
In prom.h we define the symbol of_address_to_resource which tell
of_address.h that we have a local definition of this function, and
the static version is skipped.
This looks more elegant as we do not have to hardcode SPARC in of_address.h
and this is easy to re-use the sme pattern in other places.
Also pci_address_to_pio already uses the same approach in the same file.
pci_address_to_pio is defined if it was not defined before - I see no
reason to do so which is why I omitted it in the above.
Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists