From: Andreas Larsson <andreas@gaisler.com>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: Grant Likely <grant.likely@secretlab.ca>,
davem@davemloft.net, Rob Herring <rob.herring@calxeda.com>,
sparclinux@vger.kernel.org, software@gaisler.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc agai
Date: Mon, 05 Nov 2012 10:21:04 +0000 [thread overview]
Message-ID: <50979310.9010902@gaisler.com> (raw)
In-Reply-To: <20121102175321.GA6720@merkur.ravnborg.org>
On 2012-11-02 18:53, Sam Ravnborg wrote:
> 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.
I agree that this is a much nicer approach! I'll send a v2 based on this.
Thanks for the feedback!
Cheers,
Andreas
WARNING: multiple messages have this Message-ID (diff)
From: Andreas Larsson <andreas@gaisler.com>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: Grant Likely <grant.likely@secretlab.ca>,
davem@davemloft.net, Rob Herring <rob.herring@calxeda.com>,
sparclinux@vger.kernel.org, software@gaisler.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] of/address: sparc: Declare of_address_to_resource() as an extern function for sparc again
Date: Mon, 05 Nov 2012 11:21:04 +0100 [thread overview]
Message-ID: <50979310.9010902@gaisler.com> (raw)
In-Reply-To: <20121102175321.GA6720@merkur.ravnborg.org>
On 2012-11-02 18:53, Sam Ravnborg wrote:
> 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.
I agree that this is a much nicer approach! I'll send a v2 based on this.
Thanks for the feedback!
Cheers,
Andreas
next prev parent reply other threads:[~2012-11-05 10:21 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
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 ` Andreas Larsson [this message]
2012-11-05 10:21 ` 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50979310.9010902@gaisler.com \
--to=andreas@gaisler.com \
--cc=davem@davemloft.net \
--cc=grant.likely@secretlab.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=rob.herring@calxeda.com \
--cc=sam@ravnborg.org \
--cc=software@gaisler.com \
--cc=sparclinux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.