backlight: Match backlight device against struct fb_info.bl_dev
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 5 Mar 2024 16:22:34 +0000 (17:22 +0100)
committerLee Jones <lee@kernel.org>
Thu, 28 Mar 2024 10:08:47 +0000 (10:08 +0000)
commite6c6fea5c314d90dbfca4983f2ea46388aab3bb0
tree0da6b01227e9bc5d55be24dc751b1c5a6669233b
parent4cece764965020c22cff7665b18a012006359095
backlight: Match backlight device against struct fb_info.bl_dev

Framebuffer drivers for devices with dedicated backlight are supposed
to set struct fb_info.bl_dev to the backlight's respective device. Use
the value to match backlight and framebuffer in the backlight core code.

The code first tests against struct backlight_ops.check_ops. If this
test succeeds, it performs the test against fbdev. So backlight drivers
can override the later test as before.

Fbdev's backlight support depends on CONFIG_FB_BACKLIGHT. To avoid
ifdef in the code, the new helper fb_bl_device() returns the backlight
device, or NULL if the config option has been disabled. The test in
the backlight code will then do nothing.

v4:
* declare empty fb_bl_device() as static inline
* export fb_bl_device()
v3:
* hide ifdef in fb_bl_device() (Lee)
* no if-else blocks (Andy)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://lore.kernel.org/r/20240305162425.23845-2-tzimmermann@suse.de
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/video/backlight/backlight.c
drivers/video/fbdev/core/fb_backlight.c
include/linux/fb.h