Subject: Re: [PATCH] of_net.h: Provide dummy functions if OF_NET is not configured

From: Guenter Roeck <[email-masked]>
Date: Mon, 1 Apr 2013 12:01:00 -0700

On Mon, Apr 01, 2013 at 01:44:24PM -0500, Rob Herring wrote:
> On 04/01/2013 01:19 PM, Guenter Roeck wrote:
> > of_get_mac_address() and of_get_phy_mode() are only provided if OF_NET
> > is configured. While most callers check for the define, not all do, and those
> > who do require #ifdef around the code. For those who don't, the missing check
> > can result in errors such as
> 
> How about removing the ifdef from those callers?
> 
That would be the next step, after/if this one is accepted.
If not, it doesn't make sense to waste my time.

Thanks,
Guenter

> Rob
> 
> > 
> > arch/powerpc/sysdev/tsi108_dev.c:107:3: error: implicit declaration of
> > 	function 'of_get_mac_address' [-Werror=implicit-function-declaration]
> > arch/powerpc/sysdev/mv64x60_dev.c:253:2: error: implicit declaration of
> > 	function 'of_get_mac_address' [-Werror=implicit-function-declaration]
> > 
> > Provide dummy function declarations if OF_NET is not configured. This is safe
> > because all callers do check the return values. If desired, at least some of
> > the #ifdefs in the code can subsequently be removed.
> > 
> > Cc: David Daney <[email-masked]>
> > Signed-off-by: Guenter Roeck <[email-masked]>
> > ---
> >  include/linux/of_net.h |   10 ++++++++++
> >  1 file changed, 10 insertions(+)
> > 
> > diff --git a/include/linux/of_net.h b/include/linux/of_net.h
> > index f474641..61bf53b 100644
> > --- a/include/linux/of_net.h
> > +++ b/include/linux/of_net.h
> > @@ -11,6 +11,16 @@
> >  #include <linux/of.h>
> >  extern const int of_get_phy_mode(struct device_node *np);
> >  extern const void *of_get_mac_address(struct device_node *np);
> > +#else
> > +static inline const int of_get_phy_mode(struct device_node *np)
> > +{
> > +	return -ENODEV;
> > +}
> > +
> > +static inline const void *of_get_mac_address(struct device_node *np)
> > +{
> > +	return NULL;
> > +}
> >  #endif
> >  
> >  #endif /* __LINUX_OF_NET_H */
> > 
> 
>