Re: [PATCH] backlight: use of_find_backlight_by_node stub when backlight class disabled

From: Lee Jones
Date: Tue Nov 04 2014 - 12:15:51 EST


On Tue, 04 Nov 2014, Heiko StÃbner wrote:

> Am Dienstag, 4. November 2014, 14:42:20 schrieb Lee Jones:
> > On Tue, 04 Nov 2014, Jingoo Han wrote:
> > > On Tuesday, November 04, 2014 6:08 PM, Heiko StÃbner wrote:
> > > > On Mon, 03 Nov 2014, Lee Jones wrote:
> > > > > On Wed, 29 Oct 2014, Heiko StÃbner wrote:
> > > > > > Drivers may want to search for an optional backlight even when the
> > > > > > backlight class is disabled. In this case the linker would miss the
> > > > > > function referenced in the backlight header.
> > > > > >
> > > > > > Therefore use the stub function also when the backlight class is
> > > > > > disabled.
> > > > > >
> > > > > > Signed-off-by: Heiko Stuebner <heiko@xxxxxxxxx>
> > > > > > ---
> > > > > >
> > > > > > include/linux/backlight.h | 2 +-
> > > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > >
> > > > > Applied to Backlight -next with Jingoo's Ack.
> > > >
> > > > I've removed this patch, as it causes unexpected:
> > > > Redefinition of of_find_backlight_by_node()
> > >
> > > I reproduced the same build error.
> > >
> > > Then, how about folding the following two patches into
> > > one single patch? These two patches were already sent by Heiko StÃbner.
> > >
> > > [PATCH] backlight: use of_find_backlight_by_node stub when backlight
> > > class disabled [PATCH] backlight: extend of_find_backlight_by_node
> > > stub-check to modules>
> > > Then, the one single patch will do as follows.
> > >
> > > -#ifdef CONFIG_OF
> > > +#if defined(CONFIG_OF) && (defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || \
> > > + defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE))
> > >
> > > In this case, I cannot find any build errors.
> >
> > That's a neat trick. I didn't know you could do that.
> >
> > However, it's bit messy consider different formatting, or a nested
> > #ifdef instead please.
>
> I guess it is a matter of me "not seeing the forrest for the trees", but how
> would a nested ifdef look like, as this would result in 3 possible results
> when for CONFIG_OF first and then for one of the BACKLIGHT_CLASS defines?
>
> Formatting wise, when applied both defined(CONFIG_BACKLIGHT_foo) parts
> are exactly below each other, making it (hopefully) clear where the "or" is
> part of. What would look better?

Actually there is a better way still:

#ifdef CONFIG_OF && IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
struct backlight_device *of_find_backlight_by_node(struct device_node *node);
#else
static inline struct backlight_device *
of_find_backlight_by_node(struct device_node *node)
{
return NULL;
}
#endif


--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org â Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/