[PATCH v3 1/2] drm/tinydrm: Move tinydrm_of_find_backlight into drm_of.c
Noralf Trønnes
noralf at tronnes.org
Tue Oct 3 17:38:29 UTC 2017
Den 03.10.2017 18.02, skrev Noralf Trønnes:
>
> Den 03.10.2017 16.58, skrev Noralf Trønnes:
>>
>> Den 02.10.2017 10.13, skrev Jani Nikula:
>>> On Mon, 02 Oct 2017, Daniel Vetter <daniel at ffwll.ch> wrote:
>>>> Also adding Jani, who looked at the backlight Kconfig mess in the
>>>> past.
>>> I've even sent patches to fix some of the dependency mess, but the
>>> problem is social not technical. The problem is that people think
>>> "select" is more convenient than "depends" because they can just enable
>>> a config that way, while "depends" would require finding and enabling
>>> all the dependencies before the menu option even shows up.
>>>
>>> I don't deny, that's annoying. But it's also abuse of select, see
>>> Documentation/kbuild/kconfig-language.txt:
>>>
>>> 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.
>>>
>>> The real fix would be making finding and enabling dependencies
>>> recursively more convenient, but I don't see that happening anytime
>>> soon.
>>
>> If we don't select BACKLIGHT in drivers, we can end up with CONFIG_DRM=y
>> and CONFIG_BACKLIGHT_CLASS_DEVICE=m.
>>
>> So we can either do:
>>
>> menuconfig DRM
>> depends on (BACKLIGHT_CLASS_DEVICE || BACKLIGHT_CLASS_DEVICE=n)
>>
>
> No, this was the thing that didn't work:
>
> drivers/gpu/drm/Kconfig:7: symbol DRM depends on
> BACKLIGHT_CLASS_DEVICE
> drivers/video/backlight/Kconfig:158: symbol BACKLIGHT_CLASS_DEVICE
> is selected by DRM_RADEON
> drivers/gpu/drm/Kconfig:164: symbol DRM_RADEON depends on DRM
>
How about putting the dependency in the driver combined with IS_REACHABLE,
but not in backlight.h as I first proposed, that won't work:
menuconfig DRM_TINYDRM
- select BACKLIGHT_LCD_SUPPORT
- select BACKLIGHT_CLASS_DEVICE
+ depends on (BACKLIGHT_CLASS_DEVICE || BACKLIGHT_CLASS_DEVICE=n)
struct backlight_device *drm_of_find_backlight(struct device *dev)
{
struct backlight_device *backlight;
struct device_node *np;
if (!IS_REACHABLE(CONFIG_BACKLIGHT_CLASS_DEVICE))
return NULL;
[...]
}
But the IS_REACHABLE doesn't feel right.
Maybe the problem is putting a function in DRM that really doesn't
belong there. How about calling it of_find_backlight() instead and
put it in backlight.[hc]?
Noralf.
>> Or we can:
>>
>> -#ifdef CONFIG_OF
>> +#if IS_ENABLED(CONFIG_OF) &&
>> IS_REACHABLE(CONFIG_BACKLIGHT_CLASS_DEVICE)
>> struct backlight_device *of_find_backlight_by_node(struct
>> device_node *node);
>> #else
>> static inline struct backlight_device *
>>
>> Using the second one it won't be obvious to users why backlight
>> doesn't work,
>> they have after all enabled backlight (but as module and DRM builtin).
>>
>> So I suppose the first one is preferred.
>> What effect will such a change have on an existing configuration where
>> DRM=y and BACKLIGHT_CLASS_DEVICE=m? Will DRM become a module or will it
>> be disabled?
>>
>> Noralf.
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
More information about the dri-devel
mailing list