Re: [PATCH mmotm] hid-picolcd: depends on LCD_CLASS_DEVICE

From: Randy Dunlap
Date: Wed Apr 07 2010 - 16:13:25 EST


On Wed, 7 Apr 2010 20:44:04 +0200 Bruno Prémont wrote:

> On Tue, 06 April 2010 Randy Dunlap <randy.dunlap@xxxxxxxxxx> wrote:
> > >
> > > One of my attempts did end up with a circular loop with regard to FB
> > > (some of the FB drivers did select INPUT)?
> >
> > (not that I can find)
> >
> > CONFIG_VT does select INPUT
> > and CONFIG_DRM_I915 does
> > select INPUT if ACPI
>
> A newer attempt still produces the same result:
>
> drivers/input/Kconfig:9:error: found recursive dependency: INPUT ->
> HID_SUPPORT -> HID_PICOLCD_FB -> FB -> FB_STI -> VT -> INPUT
>
> (it's only FB which causes the loop, LEDS, LCD and BACKLIGHT are fine)

(yes, so I see)

> This is with following patch on top of the improved deps patch I sent
> a few minutes ago deeper in this thread.
>
> Is there a way around this?
>

Well, lesson #1 is that select is evil^W^W should only be used to enable
library-like code, or as Documentation/kbuild/kconfig-language.txt says:

Note:
select should be used with care. select will force
a symbol to a value without visiting the dependencies.
By abusing select you are able to select a symbol FOO even
if FOO depends on BAR that is not set.
In general use select only for non-visible symbols
(no prompts anywhere) and for symbols with no dependencies.
That will limit the usefulness but on the other hand avoid
the illegal configurations all over.
kconfig should one day warn about such things.



(more below)

>
> diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
> index 782a34e..711c091 100644
> --- a/drivers/hid/Kconfig
> +++ b/drivers/hid/Kconfig
> @@ -285,7 +285,7 @@ config HID_PICOLCD_FB
> bool "Framebuffer support"
> default !EMBEDDED
> depends on HID_PICOLCD
> - depends on HID_PICOLCD=FB || FB=y
> + select FB

If you'll go back to the unpatched (by this patch) version here,
it seems to work OK.

> select FB_DEFERRED_IO
> select FB_SYS_FILLRECT
> select FB_SYS_COPYAREA
> @@ -299,7 +299,8 @@ config HID_PICOLCD_BACKLIGHT
> bool "Backlight control"
> default !EMBEDDED
> depends on HID_PICOLCD
> - depends on HID_PICOLCD=BACKLIGHT_CLASS_DEVICE || BACKLIGHT_CLASS_DEVICE=y
> + select BACKLIGHT_LCD_SUPPORT
> + select BACKLIGHT_CLASS_DEVICE
> ---help---
> Provide access to PicoLCD's backlight control via backlight
> class.
> @@ -308,7 +309,8 @@ config HID_PICOLCD_LCD
> bool "Contrast control"
> default !EMBEDDED
> depends on HID_PICOLCD
> - depends on HID_PICOLCD=LCD_CLASS_DEVICE || LCD_CLASS_DEVICE=y
> + select BACKLIGHT_LCD_SUPPORT
> + select LCD_CLASS_DEVICE
> ---help---
> Provide access to PicoLCD's LCD contrast via lcd class.
>
> @@ -316,7 +318,8 @@ config HID_PICOLCD_LEDS
> bool "GPO via leds class"
> default !EMBEDDED
> depends on HID_PICOLCD
> - depends on HID_PICOLCD=LEDS_CLASS || LEDS_CLASS=y
> + select NEW_LEDS
> + select LEDS_CLASS
> ---help---
> Provide access to PicoLCD's GPO pins via leds class.


---
~Randy
--
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/