* [PATCH 00/10] backlight: Replace struct fb_info in interfaces
@ 2024-02-12 16:16 Thomas Zimmermann
2024-02-12 16:16 ` [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
` (10 more replies)
0 siblings, 11 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
Backlight drivers implement struct backlight_ops.check_fb, which
uses struct fb_info in its interface. Replace the callback with one
the does not use fb_info.
In DRM, we have several drivers that implement backlight support. By
including <linux/backlight.h> these drivers depend on <linux/fb.h>.
At the same time, fbdev is deprecated for new drivers and likely to
be replaced on many systems.
This patchset is part of a larger effort to implement the backlight
code without depending on fbdev.
Patch 1 makes the backlight core match backlight and framebuffer
devices via struct fb_info.bl_dev. Patches 2 to 9 then go through
drivers and remove unnecessary implementations of check_fb. Finally,
patch 10 replaces the check_fb hook with controls_device, which
uses the framebuffer's Linux device instead of the framebuffer.
Thomas Zimmermann (10):
backlight: Match backlight device against struct fb_info.bl_dev
auxdisplay/ht16k33: Remove struct backlight_ops.check_fb
hid/hid-picolcd: Fix initialization order
hid/hid-picolcd: Remove struct backlight_ops.check_fb
backlight/aat2870-backlight: Remove struct backlight.check_fb
backlight/pwm-backlight: Remove struct backlight_ops.check_fb
fbdev/sh_mobile_lcdc_fb: Remove struct backlight_ops.check_fb
fbdev/ssd1307fb: Init backlight before registering framebuffer
fbdev/ssd1307fb: Remove struct backlight_ops.check_fb
backlight: Add controls_device callback to struct backlight_ops
drivers/auxdisplay/ht16k33.c | 8 ------
drivers/hid/hid-picolcd_backlight.c | 7 ------
drivers/hid/hid-picolcd_core.c | 14 +++++------
drivers/hid/hid-picolcd_fb.c | 4 +++
drivers/video/backlight/aat2870_bl.c | 7 ------
drivers/video/backlight/backlight.c | 9 +++++--
drivers/video/backlight/bd6107.c | 12 ++++-----
drivers/video/backlight/gpio_backlight.c | 12 ++++-----
drivers/video/backlight/lv5207lp.c | 12 ++++-----
drivers/video/backlight/pwm_bl.c | 12 ---------
drivers/video/fbdev/sh_mobile_lcdcfb.c | 7 ------
drivers/video/fbdev/ssd1307fb.c | 31 +++++++++---------------
include/linux/backlight.h | 16 ++++++------
include/linux/pwm_backlight.h | 1 -
14 files changed, 55 insertions(+), 97 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-15 12:02 ` Daniel Thompson
2024-02-20 9:17 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb Thomas Zimmermann
` (9 subsequent siblings)
10 siblings, 2 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
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.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/video/backlight/backlight.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
index 86e1cdc8e3697..48844a4f28ad3 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
@@ -98,7 +98,8 @@ static int fb_notifier_callback(struct notifier_block *self,
{
struct backlight_device *bd;
struct fb_event *evdata = data;
- int node = evdata->info->node;
+ struct fb_info *info = evdata->info;
+ int node = info->node;
int fb_blank = 0;
/* If we aren't interested in this event, skip it immediately ... */
@@ -110,8 +111,12 @@ static int fb_notifier_callback(struct notifier_block *self,
if (!bd->ops)
goto out;
- if (bd->ops->check_fb && !bd->ops->check_fb(bd, evdata->info))
+ else if (bd->ops->check_fb && !bd->ops->check_fb(bd, info))
goto out;
+#if IS_ENABLED(CONFIG_FB_BACKLIGHT)
+ else if (info->bl_dev && info->bl_dev != bd)
+ goto out;
+#endif
fb_blank = *(int *)evdata->data;
if (fb_blank == FB_BLANK_UNBLANK && !bd->fb_bl_on[node]) {
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
2024-02-12 16:16 ` [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-13 13:17 ` Robin van der Gracht
2024-02-20 9:18 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 03/10] hid/hid-picolcd: Fix initialization order Thomas Zimmermann
` (8 subsequent siblings)
10 siblings, 2 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Robin van der Gracht
The driver sets struct fb_info.bl_dev to the correct backlight
device. Thus rely on the backlight core code to match backlight
and framebuffer devices, and remove the extra check_fb function
from struct backlight_ops.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Robin van der Gracht <robin@protonic.nl>
---
drivers/auxdisplay/ht16k33.c | 8 --------
1 file changed, 8 deletions(-)
diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
index a90430b7d07ba..0a858db32486b 100644
--- a/drivers/auxdisplay/ht16k33.c
+++ b/drivers/auxdisplay/ht16k33.c
@@ -325,16 +325,8 @@ static int ht16k33_bl_update_status(struct backlight_device *bl)
return ht16k33_brightness_set(priv, brightness);
}
-static int ht16k33_bl_check_fb(struct backlight_device *bl, struct fb_info *fi)
-{
- struct ht16k33_priv *priv = bl_get_data(bl);
-
- return (fi == NULL) || (fi->par == priv);
-}
-
static const struct backlight_ops ht16k33_bl_ops = {
.update_status = ht16k33_bl_update_status,
- .check_fb = ht16k33_bl_check_fb,
};
/*
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 03/10] hid/hid-picolcd: Fix initialization order
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
2024-02-12 16:16 ` [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
2024-02-12 16:16 ` [PATCH 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-20 9:19 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
` (7 subsequent siblings)
10 siblings, 1 reply; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Bruno Prémont
For drivers that support backlight, LCD and fbdev devices, fbdev has
to be initialized last. See documentation for struct fbinfo.bl_dev.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: "Bruno Prémont" <bonbons@linux-vserver.org>
---
drivers/hid/hid-picolcd_core.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/hid/hid-picolcd_core.c b/drivers/hid/hid-picolcd_core.c
index bbda231a7ce30..5ddebe25eb91f 100644
--- a/drivers/hid/hid-picolcd_core.c
+++ b/drivers/hid/hid-picolcd_core.c
@@ -474,11 +474,6 @@ static int picolcd_probe_lcd(struct hid_device *hdev, struct picolcd_data *data)
if (error)
goto err;
- /* Set up the framebuffer device */
- error = picolcd_init_framebuffer(data);
- if (error)
- goto err;
-
/* Setup lcd class device */
error = picolcd_init_lcd(data, picolcd_out_report(REPORT_CONTRAST, hdev));
if (error)
@@ -489,6 +484,11 @@ static int picolcd_probe_lcd(struct hid_device *hdev, struct picolcd_data *data)
if (error)
goto err;
+ /* Set up the framebuffer device */
+ error = picolcd_init_framebuffer(data);
+ if (error)
+ goto err;
+
/* Setup the LED class devices */
error = picolcd_init_leds(data, picolcd_out_report(REPORT_LED_STATE, hdev));
if (error)
@@ -502,9 +502,9 @@ static int picolcd_probe_lcd(struct hid_device *hdev, struct picolcd_data *data)
return 0;
err:
picolcd_exit_leds(data);
+ picolcd_exit_framebuffer(data);
picolcd_exit_backlight(data);
picolcd_exit_lcd(data);
- picolcd_exit_framebuffer(data);
picolcd_exit_cir(data);
picolcd_exit_keys(data);
return error;
@@ -623,9 +623,9 @@ static void picolcd_remove(struct hid_device *hdev)
/* Cleanup LED */
picolcd_exit_leds(data);
/* Clean up the framebuffer */
+ picolcd_exit_framebuffer(data);
picolcd_exit_backlight(data);
picolcd_exit_lcd(data);
- picolcd_exit_framebuffer(data);
/* Cleanup input */
picolcd_exit_cir(data);
picolcd_exit_keys(data);
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
` (2 preceding siblings ...)
2024-02-12 16:16 ` [PATCH 03/10] hid/hid-picolcd: Fix initialization order Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-13 14:53 ` kernel test robot
` (3 more replies)
2024-02-12 16:16 ` [PATCH 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb Thomas Zimmermann
` (6 subsequent siblings)
10 siblings, 4 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Bruno Prémont
The driver sets struct fb_info.bl_dev to the correct backlight
device. Thus rely on the backlight core code to match backlight
and framebuffer devices, and remove the extra check_fb function
from struct backlight_ops.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: "Bruno Prémont" <bonbons@linux-vserver.org>
---
drivers/hid/hid-picolcd_backlight.c | 7 -------
drivers/hid/hid-picolcd_fb.c | 4 ++++
2 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/hid/hid-picolcd_backlight.c b/drivers/hid/hid-picolcd_backlight.c
index 5bd2a8c4bbd66..08d16917eb60b 100644
--- a/drivers/hid/hid-picolcd_backlight.c
+++ b/drivers/hid/hid-picolcd_backlight.c
@@ -9,7 +9,6 @@
#include <linux/hid.h>
-#include <linux/fb.h>
#include <linux/backlight.h>
#include "hid-picolcd.h"
@@ -39,15 +38,9 @@ static int picolcd_set_brightness(struct backlight_device *bdev)
return 0;
}
-static int picolcd_check_bl_fb(struct backlight_device *bdev, struct fb_info *fb)
-{
- return fb && fb == picolcd_fbinfo((struct picolcd_data *)bl_get_data(bdev));
-}
-
static const struct backlight_ops picolcd_blops = {
.update_status = picolcd_set_brightness,
.get_brightness = picolcd_get_brightness,
- .check_fb = picolcd_check_bl_fb,
};
int picolcd_init_backlight(struct picolcd_data *data, struct hid_report *report)
diff --git a/drivers/hid/hid-picolcd_fb.c b/drivers/hid/hid-picolcd_fb.c
index d7dddd99d325e..4500f6e03d32f 100644
--- a/drivers/hid/hid-picolcd_fb.c
+++ b/drivers/hid/hid-picolcd_fb.c
@@ -493,6 +493,10 @@ int picolcd_init_framebuffer(struct picolcd_data *data)
info->fix = picolcdfb_fix;
info->fix.smem_len = PICOLCDFB_SIZE*8;
+#ifdef CONFIG_HID_PICOLCD_BACKLIGHT
+ info->bl_dev = data->backlight;
+#endif
+
fbdata = info->par;
spin_lock_init(&fbdata->lock);
fbdata->picolcd = data;
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
` (3 preceding siblings ...)
2024-02-12 16:16 ` [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-15 12:06 ` Daniel Thompson
2024-02-20 9:26 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
` (5 subsequent siblings)
10 siblings, 2 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
The driver's implementation of check_fb always returns true, which
is the default if no implementation has been set. So remove the code
from the driver.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/video/backlight/aat2870_bl.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/drivers/video/backlight/aat2870_bl.c b/drivers/video/backlight/aat2870_bl.c
index 81fde3abb92c4..b4c3354a1a8a6 100644
--- a/drivers/video/backlight/aat2870_bl.c
+++ b/drivers/video/backlight/aat2870_bl.c
@@ -12,7 +12,6 @@
#include <linux/platform_device.h>
#include <linux/mutex.h>
#include <linux/delay.h>
-#include <linux/fb.h>
#include <linux/backlight.h>
#include <linux/mfd/aat2870.h>
@@ -90,15 +89,9 @@ static int aat2870_bl_update_status(struct backlight_device *bd)
return 0;
}
-static int aat2870_bl_check_fb(struct backlight_device *bd, struct fb_info *fi)
-{
- return 1;
-}
-
static const struct backlight_ops aat2870_bl_ops = {
.options = BL_CORE_SUSPENDRESUME,
.update_status = aat2870_bl_update_status,
- .check_fb = aat2870_bl_check_fb,
};
static int aat2870_bl_probe(struct platform_device *pdev)
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
` (4 preceding siblings ...)
2024-02-12 16:16 ` [PATCH 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-12 17:25 ` Uwe Kleine-König
` (2 more replies)
2024-02-12 16:16 ` [PATCH 07/10] fbdev/sh_mobile_lcdc_fb: " Thomas Zimmermann
` (4 subsequent siblings)
10 siblings, 3 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Uwe Kleine-König
The internal check_fb callback from struct pwm_bl_data is never
implemented. thus the driver's implementation of check_fb always
returns true, which is the backlight core's default if no
implementation has been set. So remove the code from the driver.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
---
drivers/video/backlight/pwm_bl.c | 12 ------------
include/linux/pwm_backlight.h | 1 -
2 files changed, 13 deletions(-)
diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
index ffcebf6aa76a9..61d30bc98eea5 100644
--- a/drivers/video/backlight/pwm_bl.c
+++ b/drivers/video/backlight/pwm_bl.c
@@ -11,7 +11,6 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
-#include <linux/fb.h>
#include <linux/backlight.h>
#include <linux/err.h>
#include <linux/pwm.h>
@@ -34,7 +33,6 @@ struct pwm_bl_data {
int brightness);
void (*notify_after)(struct device *,
int brightness);
- int (*check_fb)(struct device *, struct fb_info *);
void (*exit)(struct device *);
};
@@ -129,17 +127,8 @@ static int pwm_backlight_update_status(struct backlight_device *bl)
return 0;
}
-static int pwm_backlight_check_fb(struct backlight_device *bl,
- struct fb_info *info)
-{
- struct pwm_bl_data *pb = bl_get_data(bl);
-
- return !pb->check_fb || pb->check_fb(pb->dev, info);
-}
-
static const struct backlight_ops pwm_backlight_ops = {
.update_status = pwm_backlight_update_status,
- .check_fb = pwm_backlight_check_fb,
};
#ifdef CONFIG_OF
@@ -482,7 +471,6 @@ static int pwm_backlight_probe(struct platform_device *pdev)
pb->notify = data->notify;
pb->notify_after = data->notify_after;
- pb->check_fb = data->check_fb;
pb->exit = data->exit;
pb->dev = &pdev->dev;
pb->enabled = false;
diff --git a/include/linux/pwm_backlight.h b/include/linux/pwm_backlight.h
index cdd2ac366bc72..0bf80e98d5b40 100644
--- a/include/linux/pwm_backlight.h
+++ b/include/linux/pwm_backlight.h
@@ -19,7 +19,6 @@ struct platform_pwm_backlight_data {
int (*notify)(struct device *dev, int brightness);
void (*notify_after)(struct device *dev, int brightness);
void (*exit)(struct device *dev);
- int (*check_fb)(struct device *dev, struct fb_info *info);
};
#endif
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 07/10] fbdev/sh_mobile_lcdc_fb: Remove struct backlight_ops.check_fb
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
` (5 preceding siblings ...)
2024-02-12 16:16 ` [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-20 9:27 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer Thomas Zimmermann
` (3 subsequent siblings)
10 siblings, 1 reply; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
The driver sets struct fb_info.bl_dev to the correct backlight
device. Thus rely on the backlight core code to match backlight
and framebuffer devices, and remove the extra check_fb function
from struct backlight_ops.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/video/fbdev/sh_mobile_lcdcfb.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/drivers/video/fbdev/sh_mobile_lcdcfb.c b/drivers/video/fbdev/sh_mobile_lcdcfb.c
index eb2297b37504c..bf34c8ec1a26c 100644
--- a/drivers/video/fbdev/sh_mobile_lcdcfb.c
+++ b/drivers/video/fbdev/sh_mobile_lcdcfb.c
@@ -2140,17 +2140,10 @@ static int sh_mobile_lcdc_get_brightness(struct backlight_device *bdev)
return ch->bl_brightness;
}
-static int sh_mobile_lcdc_check_fb(struct backlight_device *bdev,
- struct fb_info *info)
-{
- return (info->bl_dev == bdev);
-}
-
static const struct backlight_ops sh_mobile_lcdc_bl_ops = {
.options = BL_CORE_SUSPENDRESUME,
.update_status = sh_mobile_lcdc_update_bl,
.get_brightness = sh_mobile_lcdc_get_brightness,
- .check_fb = sh_mobile_lcdc_check_fb,
};
static struct backlight_device *sh_mobile_lcdc_bl_probe(struct device *parent,
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
` (6 preceding siblings ...)
2024-02-12 16:16 ` [PATCH 07/10] fbdev/sh_mobile_lcdc_fb: " Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-20 9:32 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb Thomas Zimmermann
` (2 subsequent siblings)
10 siblings, 1 reply; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
For drivers that support backlight, LCD and fbdev devices, fbdev has
to be initialized last. See documentation for struct fbinfo.bl_dev.
The backlight name's index number comes from register_framebuffer(),
which now happens after initializing the backlight device. So like
in all other backlight drivers, we now give the backlight device a
generic name without the fbdev index.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/video/fbdev/ssd1307fb.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c
index 1a4f90ea7d5a8..0d1590c61eb06 100644
--- a/drivers/video/fbdev/ssd1307fb.c
+++ b/drivers/video/fbdev/ssd1307fb.c
@@ -594,7 +594,6 @@ static int ssd1307fb_probe(struct i2c_client *client)
{
struct device *dev = &client->dev;
struct backlight_device *bl;
- char bl_name[12];
struct fb_info *info;
struct fb_deferred_io *ssd1307fb_defio;
u32 vmem_size;
@@ -733,31 +732,30 @@ static int ssd1307fb_probe(struct i2c_client *client)
if (ret)
goto regulator_enable_error;
- ret = register_framebuffer(info);
- if (ret) {
- dev_err(dev, "Couldn't register the framebuffer\n");
- goto panel_init_error;
- }
-
- snprintf(bl_name, sizeof(bl_name), "ssd1307fb%d", info->node);
- bl = backlight_device_register(bl_name, dev, par, &ssd1307fb_bl_ops,
+ bl = backlight_device_register("ssd1307fb-bl", dev, par, &ssd1307fb_bl_ops,
NULL);
if (IS_ERR(bl)) {
ret = PTR_ERR(bl);
dev_err(dev, "unable to register backlight device: %d\n", ret);
- goto bl_init_error;
+ goto panel_init_error;
+ }
+ info->bl_dev = bl;
+
+ ret = register_framebuffer(info);
+ if (ret) {
+ dev_err(dev, "Couldn't register the framebuffer\n");
+ goto fb_init_error;
}
bl->props.brightness = par->contrast;
bl->props.max_brightness = MAX_CONTRAST;
- info->bl_dev = bl;
dev_info(dev, "fb%d: %s framebuffer device registered, using %d bytes of video memory\n", info->node, info->fix.id, vmem_size);
return 0;
-bl_init_error:
- unregister_framebuffer(info);
+fb_init_error:
+ backlight_device_unregister(bl);
panel_init_error:
pwm_disable(par->pwm);
pwm_put(par->pwm);
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
` (7 preceding siblings ...)
2024-02-12 16:16 ` [PATCH 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-20 9:32 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 10/10] backlight: Add controls_device callback to struct backlight_ops Thomas Zimmermann
2024-02-15 12:13 ` [PATCH 00/10] backlight: Replace struct fb_info in interfaces Daniel Thompson
10 siblings, 1 reply; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
The driver sets struct fb_info.bl_dev to the correct backlight
device. Thus rely on the backlight core code to match backlight
and framebuffer devices, and remove the extra check_fb function
from struct backlight_ops.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/video/fbdev/ssd1307fb.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c
index 0d1590c61eb06..3f30af3c059e0 100644
--- a/drivers/video/fbdev/ssd1307fb.c
+++ b/drivers/video/fbdev/ssd1307fb.c
@@ -530,17 +530,10 @@ static int ssd1307fb_get_brightness(struct backlight_device *bdev)
return par->contrast;
}
-static int ssd1307fb_check_fb(struct backlight_device *bdev,
- struct fb_info *info)
-{
- return (info->bl_dev == bdev);
-}
-
static const struct backlight_ops ssd1307fb_bl_ops = {
.options = BL_CORE_SUSPENDRESUME,
.update_status = ssd1307fb_update_bl,
.get_brightness = ssd1307fb_get_brightness,
- .check_fb = ssd1307fb_check_fb,
};
static struct ssd1307fb_deviceinfo ssd1307fb_ssd1305_deviceinfo = {
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 10/10] backlight: Add controls_device callback to struct backlight_ops
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
` (8 preceding siblings ...)
2024-02-12 16:16 ` [PATCH 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-02-12 16:16 ` Thomas Zimmermann
2024-02-15 12:09 ` Daniel Thompson
2024-02-20 9:35 ` Javier Martinez Canillas
2024-02-15 12:13 ` [PATCH 00/10] backlight: Replace struct fb_info in interfaces Daniel Thompson
10 siblings, 2 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-12 16:16 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, javierm
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
Replace check_fb with controls_device in struct backlight_ops. The
new callback interface takes a Linux device instead of a framebuffer.
Resolves one of the dependencies of backlight.h on fb.h.
The few drivers that had custom implementations of check_fb can easily
use the framebuffer's Linux device instead. Update them accordingly.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/video/backlight/backlight.c | 2 +-
drivers/video/backlight/bd6107.c | 12 ++++++------
drivers/video/backlight/gpio_backlight.c | 12 ++++++------
drivers/video/backlight/lv5207lp.c | 12 ++++++------
include/linux/backlight.h | 16 ++++++++--------
5 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
index 48844a4f28ad3..18a0ac4bd6005 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
@@ -111,7 +111,7 @@ static int fb_notifier_callback(struct notifier_block *self,
if (!bd->ops)
goto out;
- else if (bd->ops->check_fb && !bd->ops->check_fb(bd, info))
+ else if (bd->ops->controls_device && !bd->ops->controls_device(bd, info->device))
goto out;
#if IS_ENABLED(CONFIG_FB_BACKLIGHT)
else if (info->bl_dev && info->bl_dev != bd)
diff --git a/drivers/video/backlight/bd6107.c b/drivers/video/backlight/bd6107.c
index c95a12bf0ce26..d124ede084ef9 100644
--- a/drivers/video/backlight/bd6107.c
+++ b/drivers/video/backlight/bd6107.c
@@ -99,18 +99,18 @@ static int bd6107_backlight_update_status(struct backlight_device *backlight)
return 0;
}
-static int bd6107_backlight_check_fb(struct backlight_device *backlight,
- struct fb_info *info)
+static bool bd6107_backlight_controls_device(struct backlight_device *backlight,
+ struct device *display_dev)
{
struct bd6107 *bd = bl_get_data(backlight);
- return !bd->pdata->dev || bd->pdata->dev == info->device;
+ return !bd->pdata->dev || bd->pdata->dev == display_dev;
}
static const struct backlight_ops bd6107_backlight_ops = {
- .options = BL_CORE_SUSPENDRESUME,
- .update_status = bd6107_backlight_update_status,
- .check_fb = bd6107_backlight_check_fb,
+ .options = BL_CORE_SUSPENDRESUME,
+ .update_status = bd6107_backlight_update_status,
+ .controls_device = bd6107_backlight_controls_device,
};
static int bd6107_probe(struct i2c_client *client)
diff --git a/drivers/video/backlight/gpio_backlight.c b/drivers/video/backlight/gpio_backlight.c
index d28c30b2a35d2..c0cff685ea848 100644
--- a/drivers/video/backlight/gpio_backlight.c
+++ b/drivers/video/backlight/gpio_backlight.c
@@ -30,18 +30,18 @@ static int gpio_backlight_update_status(struct backlight_device *bl)
return 0;
}
-static int gpio_backlight_check_fb(struct backlight_device *bl,
- struct fb_info *info)
+static bool gpio_backlight_controls_device(struct backlight_device *bl,
+ struct device *display_dev)
{
struct gpio_backlight *gbl = bl_get_data(bl);
- return !gbl->dev || gbl->dev == info->device;
+ return !gbl->dev || gbl->dev == display_dev;
}
static const struct backlight_ops gpio_backlight_ops = {
- .options = BL_CORE_SUSPENDRESUME,
- .update_status = gpio_backlight_update_status,
- .check_fb = gpio_backlight_check_fb,
+ .options = BL_CORE_SUSPENDRESUME,
+ .update_status = gpio_backlight_update_status,
+ .controls_device = gpio_backlight_controls_device,
};
static int gpio_backlight_probe(struct platform_device *pdev)
diff --git a/drivers/video/backlight/lv5207lp.c b/drivers/video/backlight/lv5207lp.c
index 1f1d06b4e119a..0cf00fee0f605 100644
--- a/drivers/video/backlight/lv5207lp.c
+++ b/drivers/video/backlight/lv5207lp.c
@@ -62,18 +62,18 @@ static int lv5207lp_backlight_update_status(struct backlight_device *backlight)
return 0;
}
-static int lv5207lp_backlight_check_fb(struct backlight_device *backlight,
- struct fb_info *info)
+static bool lv5207lp_backlight_controls_device(struct backlight_device *backlight,
+ struct device *display_dev)
{
struct lv5207lp *lv = bl_get_data(backlight);
- return !lv->pdata->dev || lv->pdata->dev == info->device;
+ return !lv->pdata->dev || lv->pdata->dev == display_dev;
}
static const struct backlight_ops lv5207lp_backlight_ops = {
- .options = BL_CORE_SUSPENDRESUME,
- .update_status = lv5207lp_backlight_update_status,
- .check_fb = lv5207lp_backlight_check_fb,
+ .options = BL_CORE_SUSPENDRESUME,
+ .update_status = lv5207lp_backlight_update_status,
+ .controls_device = lv5207lp_backlight_controls_device,
};
static int lv5207lp_probe(struct i2c_client *client)
diff --git a/include/linux/backlight.h b/include/linux/backlight.h
index 614653e07e3a8..2db4c70053c46 100644
--- a/include/linux/backlight.h
+++ b/include/linux/backlight.h
@@ -13,6 +13,7 @@
#include <linux/fb.h>
#include <linux/mutex.h>
#include <linux/notifier.h>
+#include <linux/types.h>
/**
* enum backlight_update_reason - what method was used to update backlight
@@ -110,7 +111,6 @@ enum backlight_scale {
};
struct backlight_device;
-struct fb_info;
/**
* struct backlight_ops - backlight operations
@@ -160,18 +160,18 @@ struct backlight_ops {
int (*get_brightness)(struct backlight_device *);
/**
- * @check_fb: Check the framebuffer device.
+ * @controls_device: Check against the display device
*
- * Check if given framebuffer device is the one bound to this backlight.
- * This operation is optional and if not implemented it is assumed that the
- * fbdev is always the one bound to the backlight.
+ * Check if the backlight controls the given display device. This
+ * operation is optional and if not implemented it is assumed that
+ * the display is always the one controlled by the backlight.
*
* RETURNS:
*
- * If info is NULL or the info matches the fbdev bound to the backlight return true.
- * If info does not match the fbdev bound to the backlight return false.
+ * If display_dev is NULL or display_dev matches the device controlled by
+ * the backlight, return true. Otherwise return false.
*/
- int (*check_fb)(struct backlight_device *bd, struct fb_info *info);
+ bool (*controls_device)(struct backlight_device *bd, struct device *display_dev);
};
/**
--
2.43.0
^ permalink raw reply related [flat|nested] 37+ messages in thread
* Re: [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-02-12 17:25 ` Uwe Kleine-König
2024-02-15 12:08 ` Daniel Thompson
2024-02-20 9:27 ` Javier Martinez Canillas
2 siblings, 0 replies; 37+ messages in thread
From: Uwe Kleine-König @ 2024-02-12 17:25 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, daniel.thompson, jingoohan1, deller, javierm, dri-devel,
linux-fbdev, linux-input, linux-pwm
[-- Attachment #1: Type: text/plain, Size: 734 bytes --]
Hello Thomas,
On Mon, Feb 12, 2024 at 05:16:39PM +0100, Thomas Zimmermann wrote:
> The internal check_fb callback from struct pwm_bl_data is never
> implemented. thus the driver's implementation of check_fb always
> returns true, which is the backlight core's default if no
> implementation has been set. So remove the code from the driver.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Looks reasonable.
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-02-13 13:17 ` Robin van der Gracht
2024-02-20 9:18 ` Javier Martinez Canillas
1 sibling, 0 replies; 37+ messages in thread
From: Robin van der Gracht @ 2024-02-13 13:17 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, daniel.thompson, jingoohan1, deller, javierm, dri-devel,
linux-fbdev, linux-input, linux-pwm
On Mon, 12 Feb 2024 17:16:35 +0100
Thomas Zimmermann <tzimmermann@suse.de> wrote:
> The driver sets struct fb_info.bl_dev to the correct backlight
> device. Thus rely on the backlight core code to match backlight
> and framebuffer devices, and remove the extra check_fb function
> from struct backlight_ops.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Robin van der Gracht <robin@protonic.nl>
> ---
> drivers/auxdisplay/ht16k33.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
> index a90430b7d07ba..0a858db32486b 100644
> --- a/drivers/auxdisplay/ht16k33.c
> +++ b/drivers/auxdisplay/ht16k33.c
> @@ -325,16 +325,8 @@ static int ht16k33_bl_update_status(struct backlight_device *bl)
> return ht16k33_brightness_set(priv, brightness);
> }
>
> -static int ht16k33_bl_check_fb(struct backlight_device *bl, struct fb_info *fi)
> -{
> - struct ht16k33_priv *priv = bl_get_data(bl);
> -
> - return (fi == NULL) || (fi->par == priv);
> -}
> -
> static const struct backlight_ops ht16k33_bl_ops = {
> .update_status = ht16k33_bl_update_status,
> - .check_fb = ht16k33_bl_check_fb,
> };
When combined with the previous patch:
[01/10] backlight: Match backlight device against struct fb_info.bl_dev
(I wasn't in the CC)
Acked-By: Robin van der Gracht <robin@protonic.nl>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-02-13 14:53 ` kernel test robot
2024-02-13 21:57 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 0 replies; 37+ messages in thread
From: kernel test robot @ 2024-02-13 14:53 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller, javierm
Cc: llvm, oe-kbuild-all, dri-devel, linux-fbdev, linux-input,
linux-pwm, Thomas Zimmermann, Bruno Prémont
Hi Thomas,
kernel test robot noticed the following build errors:
[auto build test ERROR on lee-backlight/for-backlight-next]
[also build test ERROR on lee-backlight/for-backlight-fixes hid/for-next lee-leds/for-leds-next linus/master v6.8-rc4 next-20240213]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/backlight-Match-backlight-device-against-struct-fb_info-bl_dev/20240213-002853
base: https://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git for-backlight-next
patch link: https://lore.kernel.org/r/20240212162645.5661-5-tzimmermann%40suse.de
patch subject: [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20240213/202402132248.A5ky78Hx-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240213/202402132248.A5ky78Hx-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402132248.A5ky78Hx-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/hid/hid-picolcd_fb.c:497:8: error: no member named 'bl_dev' in 'struct fb_info'
497 | info->bl_dev = data->backlight;
| ~~~~ ^
1 error generated.
vim +497 drivers/hid/hid-picolcd_fb.c
459
460 static DEVICE_ATTR(fb_update_rate, 0664, picolcd_fb_update_rate_show,
461 picolcd_fb_update_rate_store);
462
463 /* initialize Framebuffer device */
464 int picolcd_init_framebuffer(struct picolcd_data *data)
465 {
466 struct device *dev = &data->hdev->dev;
467 struct fb_info *info = NULL;
468 struct picolcd_fb_data *fbdata = NULL;
469 int i, error = -ENOMEM;
470 u32 *palette;
471
472 /* The extra memory is:
473 * - 256*u32 for pseudo_palette
474 * - struct fb_deferred_io
475 */
476 info = framebuffer_alloc(256 * sizeof(u32) +
477 sizeof(struct fb_deferred_io) +
478 sizeof(struct picolcd_fb_data) +
479 PICOLCDFB_SIZE, dev);
480 if (!info)
481 goto err_nomem;
482
483 info->fbdefio = info->par;
484 *info->fbdefio = picolcd_fb_defio;
485 info->par += sizeof(struct fb_deferred_io);
486 palette = info->par;
487 info->par += 256 * sizeof(u32);
488 for (i = 0; i < 256; i++)
489 palette[i] = i > 0 && i < 16 ? 0xff : 0;
490 info->pseudo_palette = palette;
491 info->fbops = &picolcdfb_ops;
492 info->var = picolcdfb_var;
493 info->fix = picolcdfb_fix;
494 info->fix.smem_len = PICOLCDFB_SIZE*8;
495
496 #ifdef CONFIG_HID_PICOLCD_BACKLIGHT
> 497 info->bl_dev = data->backlight;
498 #endif
499
500 fbdata = info->par;
501 spin_lock_init(&fbdata->lock);
502 fbdata->picolcd = data;
503 fbdata->update_rate = PICOLCDFB_UPDATE_RATE_DEFAULT;
504 fbdata->bpp = picolcdfb_var.bits_per_pixel;
505 fbdata->force = 1;
506 fbdata->vbitmap = info->par + sizeof(struct picolcd_fb_data);
507 fbdata->bitmap = vmalloc(PICOLCDFB_SIZE*8);
508 if (fbdata->bitmap == NULL) {
509 dev_err(dev, "can't get a free page for framebuffer\n");
510 goto err_nomem;
511 }
512 info->flags |= FBINFO_VIRTFB;
513 info->screen_buffer = fbdata->bitmap;
514 info->fix.smem_start = (unsigned long)fbdata->bitmap;
515 memset(fbdata->vbitmap, 0xff, PICOLCDFB_SIZE);
516 data->fb_info = info;
517
518 error = picolcd_fb_reset(data, 1);
519 if (error) {
520 dev_err(dev, "failed to configure display\n");
521 goto err_cleanup;
522 }
523
524 error = device_create_file(dev, &dev_attr_fb_update_rate);
525 if (error) {
526 dev_err(dev, "failed to create sysfs attributes\n");
527 goto err_cleanup;
528 }
529
530 fb_deferred_io_init(info);
531 error = register_framebuffer(info);
532 if (error) {
533 dev_err(dev, "failed to register framebuffer\n");
534 goto err_sysfs;
535 }
536 return 0;
537
538 err_sysfs:
539 device_remove_file(dev, &dev_attr_fb_update_rate);
540 fb_deferred_io_cleanup(info);
541 err_cleanup:
542 data->fb_info = NULL;
543
544 err_nomem:
545 if (fbdata)
546 vfree(fbdata->bitmap);
547 framebuffer_release(info);
548 return error;
549 }
550
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-13 14:53 ` kernel test robot
@ 2024-02-13 21:57 ` kernel test robot
2024-02-15 12:06 ` Daniel Thompson
2024-02-20 9:24 ` Javier Martinez Canillas
3 siblings, 0 replies; 37+ messages in thread
From: kernel test robot @ 2024-02-13 21:57 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller, javierm
Cc: oe-kbuild-all, dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Bruno Prémont
Hi Thomas,
kernel test robot noticed the following build errors:
[auto build test ERROR on lee-backlight/for-backlight-next]
[also build test ERROR on lee-backlight/for-backlight-fixes hid/for-next lee-leds/for-leds-next linus/master v6.8-rc4 next-20240213]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/backlight-Match-backlight-device-against-struct-fb_info-bl_dev/20240213-002853
base: https://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git for-backlight-next
patch link: https://lore.kernel.org/r/20240212162645.5661-5-tzimmermann%40suse.de
patch subject: [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
config: x86_64-rhel-8.3 (https://download.01.org/0day-ci/archive/20240214/202402140514.sb1rerJx-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240214/202402140514.sb1rerJx-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402140514.sb1rerJx-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/hid/hid-picolcd_fb.c: In function 'picolcd_init_framebuffer':
>> drivers/hid/hid-picolcd_fb.c:497:13: error: 'struct fb_info' has no member named 'bl_dev'
497 | info->bl_dev = data->backlight;
| ^~
vim +497 drivers/hid/hid-picolcd_fb.c
459
460 static DEVICE_ATTR(fb_update_rate, 0664, picolcd_fb_update_rate_show,
461 picolcd_fb_update_rate_store);
462
463 /* initialize Framebuffer device */
464 int picolcd_init_framebuffer(struct picolcd_data *data)
465 {
466 struct device *dev = &data->hdev->dev;
467 struct fb_info *info = NULL;
468 struct picolcd_fb_data *fbdata = NULL;
469 int i, error = -ENOMEM;
470 u32 *palette;
471
472 /* The extra memory is:
473 * - 256*u32 for pseudo_palette
474 * - struct fb_deferred_io
475 */
476 info = framebuffer_alloc(256 * sizeof(u32) +
477 sizeof(struct fb_deferred_io) +
478 sizeof(struct picolcd_fb_data) +
479 PICOLCDFB_SIZE, dev);
480 if (!info)
481 goto err_nomem;
482
483 info->fbdefio = info->par;
484 *info->fbdefio = picolcd_fb_defio;
485 info->par += sizeof(struct fb_deferred_io);
486 palette = info->par;
487 info->par += 256 * sizeof(u32);
488 for (i = 0; i < 256; i++)
489 palette[i] = i > 0 && i < 16 ? 0xff : 0;
490 info->pseudo_palette = palette;
491 info->fbops = &picolcdfb_ops;
492 info->var = picolcdfb_var;
493 info->fix = picolcdfb_fix;
494 info->fix.smem_len = PICOLCDFB_SIZE*8;
495
496 #ifdef CONFIG_HID_PICOLCD_BACKLIGHT
> 497 info->bl_dev = data->backlight;
498 #endif
499
500 fbdata = info->par;
501 spin_lock_init(&fbdata->lock);
502 fbdata->picolcd = data;
503 fbdata->update_rate = PICOLCDFB_UPDATE_RATE_DEFAULT;
504 fbdata->bpp = picolcdfb_var.bits_per_pixel;
505 fbdata->force = 1;
506 fbdata->vbitmap = info->par + sizeof(struct picolcd_fb_data);
507 fbdata->bitmap = vmalloc(PICOLCDFB_SIZE*8);
508 if (fbdata->bitmap == NULL) {
509 dev_err(dev, "can't get a free page for framebuffer\n");
510 goto err_nomem;
511 }
512 info->flags |= FBINFO_VIRTFB;
513 info->screen_buffer = fbdata->bitmap;
514 info->fix.smem_start = (unsigned long)fbdata->bitmap;
515 memset(fbdata->vbitmap, 0xff, PICOLCDFB_SIZE);
516 data->fb_info = info;
517
518 error = picolcd_fb_reset(data, 1);
519 if (error) {
520 dev_err(dev, "failed to configure display\n");
521 goto err_cleanup;
522 }
523
524 error = device_create_file(dev, &dev_attr_fb_update_rate);
525 if (error) {
526 dev_err(dev, "failed to create sysfs attributes\n");
527 goto err_cleanup;
528 }
529
530 fb_deferred_io_init(info);
531 error = register_framebuffer(info);
532 if (error) {
533 dev_err(dev, "failed to register framebuffer\n");
534 goto err_sysfs;
535 }
536 return 0;
537
538 err_sysfs:
539 device_remove_file(dev, &dev_attr_fb_update_rate);
540 fb_deferred_io_cleanup(info);
541 err_cleanup:
542 data->fb_info = NULL;
543
544 err_nomem:
545 if (fbdata)
546 vfree(fbdata->bitmap);
547 framebuffer_release(info);
548 return error;
549 }
550
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev
2024-02-12 16:16 ` [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
@ 2024-02-15 12:02 ` Daniel Thompson
2024-02-20 9:17 ` Javier Martinez Canillas
1 sibling, 0 replies; 37+ messages in thread
From: Daniel Thompson @ 2024-02-15 12:02 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, jingoohan1, deller, javierm, dri-devel, linux-fbdev,
linux-input, linux-pwm
On Mon, Feb 12, 2024 at 05:16:34PM +0100, Thomas Zimmermann wrote:
> 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.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Daniel.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-13 14:53 ` kernel test robot
2024-02-13 21:57 ` kernel test robot
@ 2024-02-15 12:06 ` Daniel Thompson
2024-02-15 12:19 ` Thomas Zimmermann
2024-02-20 9:24 ` Javier Martinez Canillas
3 siblings, 1 reply; 37+ messages in thread
From: Daniel Thompson @ 2024-02-15 12:06 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, jingoohan1, deller, javierm, dri-devel, linux-fbdev,
linux-input, linux-pwm, Bruno Prémont
On Mon, Feb 12, 2024 at 05:16:37PM +0100, Thomas Zimmermann wrote:
> The driver sets struct fb_info.bl_dev to the correct backlight
> device.
This looks like it was copied from a different patch since you
added code to do this as part of the patch!
> Thus rely on the backlight core code to match backlight
> and framebuffer devices, and remove the extra check_fb function
> from struct backlight_ops.
> <snip>
> diff --git a/drivers/hid/hid-picolcd_fb.c b/drivers/hid/hid-picolcd_fb.c
> index d7dddd99d325e..4500f6e03d32f 100644
> --- a/drivers/hid/hid-picolcd_fb.c
> +++ b/drivers/hid/hid-picolcd_fb.c
> @@ -493,6 +493,10 @@ int picolcd_init_framebuffer(struct picolcd_data *data)
> info->fix = picolcdfb_fix;
> info->fix.smem_len = PICOLCDFB_SIZE*8;
>
> +#ifdef CONFIG_HID_PICOLCD_BACKLIGHT
> + info->bl_dev = data->backlight;
> +#endif
> +
> fbdata = info->par;
> spin_lock_init(&fbdata->lock);
> fbdata->picolcd = data;
Daniel.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb
2024-02-12 16:16 ` [PATCH 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb Thomas Zimmermann
@ 2024-02-15 12:06 ` Daniel Thompson
2024-02-20 9:26 ` Javier Martinez Canillas
1 sibling, 0 replies; 37+ messages in thread
From: Daniel Thompson @ 2024-02-15 12:06 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, jingoohan1, deller, javierm, dri-devel, linux-fbdev,
linux-input, linux-pwm
On Mon, Feb 12, 2024 at 05:16:38PM +0100, Thomas Zimmermann wrote:
> The driver's implementation of check_fb always returns true, which
> is the default if no implementation has been set. So remove the code
> from the driver.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Daniel.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-12 17:25 ` Uwe Kleine-König
@ 2024-02-15 12:08 ` Daniel Thompson
2024-02-20 9:27 ` Javier Martinez Canillas
2 siblings, 0 replies; 37+ messages in thread
From: Daniel Thompson @ 2024-02-15 12:08 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, jingoohan1, deller, javierm, dri-devel, linux-fbdev,
linux-input, linux-pwm, Uwe Kleine-König
On Mon, Feb 12, 2024 at 05:16:39PM +0100, Thomas Zimmermann wrote:
> The internal check_fb callback from struct pwm_bl_data is never
> implemented. thus the driver's implementation of check_fb always
> returns true, which is the backlight core's default if no
> implementation has been set. So remove the code from the driver.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Yay! Cleaning up platform bus legacy at the same time ;-).
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Daniel.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 10/10] backlight: Add controls_device callback to struct backlight_ops
2024-02-12 16:16 ` [PATCH 10/10] backlight: Add controls_device callback to struct backlight_ops Thomas Zimmermann
@ 2024-02-15 12:09 ` Daniel Thompson
2024-02-20 9:35 ` Javier Martinez Canillas
1 sibling, 0 replies; 37+ messages in thread
From: Daniel Thompson @ 2024-02-15 12:09 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, jingoohan1, deller, javierm, dri-devel, linux-fbdev,
linux-input, linux-pwm
On Mon, Feb 12, 2024 at 05:16:43PM +0100, Thomas Zimmermann wrote:
> Replace check_fb with controls_device in struct backlight_ops. The
> new callback interface takes a Linux device instead of a framebuffer.
> Resolves one of the dependencies of backlight.h on fb.h.
>
> The few drivers that had custom implementations of check_fb can easily
> use the framebuffer's Linux device instead. Update them accordingly.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Daniel.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 00/10] backlight: Replace struct fb_info in interfaces
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
` (9 preceding siblings ...)
2024-02-12 16:16 ` [PATCH 10/10] backlight: Add controls_device callback to struct backlight_ops Thomas Zimmermann
@ 2024-02-15 12:13 ` Daniel Thompson
2024-02-15 12:23 ` Thomas Zimmermann
10 siblings, 1 reply; 37+ messages in thread
From: Daniel Thompson @ 2024-02-15 12:13 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, jingoohan1, deller, javierm, dri-devel, linux-fbdev,
linux-input, linux-pwm
On Mon, Feb 12, 2024 at 05:16:33PM +0100, Thomas Zimmermann wrote:
> Backlight drivers implement struct backlight_ops.check_fb, which
> uses struct fb_info in its interface. Replace the callback with one
> the does not use fb_info.
>
> In DRM, we have several drivers that implement backlight support. By
> including <linux/backlight.h> these drivers depend on <linux/fb.h>.
> At the same time, fbdev is deprecated for new drivers and likely to
> be replaced on many systems.
>
> This patchset is part of a larger effort to implement the backlight
> code without depending on fbdev.
>
> Patch 1 makes the backlight core match backlight and framebuffer
> devices via struct fb_info.bl_dev. Patches 2 to 9 then go through
> drivers and remove unnecessary implementations of check_fb. Finally,
> patch 10 replaces the check_fb hook with controls_device, which
> uses the framebuffer's Linux device instead of the framebuffer.
I won't reply individually but I also took a look at the patches for
the combo devices and it all looked good to me from a backlight
point of view.
However I don't want to drop Reviewed-by: on them since it risks those
bit being mistaken for an ack and merged ahead of the patch 1...
Daniel.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
2024-02-15 12:06 ` Daniel Thompson
@ 2024-02-15 12:19 ` Thomas Zimmermann
0 siblings, 0 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-15 12:19 UTC (permalink / raw)
To: Daniel Thompson
Cc: lee, jingoohan1, deller, javierm, dri-devel, linux-fbdev,
linux-input, linux-pwm, Bruno Prémont
Hi
Am 15.02.24 um 13:06 schrieb Daniel Thompson:
> On Mon, Feb 12, 2024 at 05:16:37PM +0100, Thomas Zimmermann wrote:
>> The driver sets struct fb_info.bl_dev to the correct backlight
>> device.
> This looks like it was copied from a different patch since you
> added code to do this as part of the patch!
Yeah, I did. I'll reword this sentence to make I more precise.
Best regards
Thomas
>
>> Thus rely on the backlight core code to match backlight
>> and framebuffer devices, and remove the extra check_fb function
>> from struct backlight_ops.
>> <snip>
>> diff --git a/drivers/hid/hid-picolcd_fb.c b/drivers/hid/hid-picolcd_fb.c
>> index d7dddd99d325e..4500f6e03d32f 100644
>> --- a/drivers/hid/hid-picolcd_fb.c
>> +++ b/drivers/hid/hid-picolcd_fb.c
>> @@ -493,6 +493,10 @@ int picolcd_init_framebuffer(struct picolcd_data *data)
>> info->fix = picolcdfb_fix;
>> info->fix.smem_len = PICOLCDFB_SIZE*8;
>>
>> +#ifdef CONFIG_HID_PICOLCD_BACKLIGHT
>> + info->bl_dev = data->backlight;
>> +#endif
>> +
>> fbdata = info->par;
>> spin_lock_init(&fbdata->lock);
>> fbdata->picolcd = data;
>
> Daniel.
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 00/10] backlight: Replace struct fb_info in interfaces
2024-02-15 12:13 ` [PATCH 00/10] backlight: Replace struct fb_info in interfaces Daniel Thompson
@ 2024-02-15 12:23 ` Thomas Zimmermann
2024-02-19 15:02 ` Lee Jones
0 siblings, 1 reply; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-15 12:23 UTC (permalink / raw)
To: Daniel Thompson
Cc: lee, jingoohan1, deller, javierm, dri-devel, linux-fbdev,
linux-input, linux-pwm
Hi
Am 15.02.24 um 13:13 schrieb Daniel Thompson:
> On Mon, Feb 12, 2024 at 05:16:33PM +0100, Thomas Zimmermann wrote:
>> Backlight drivers implement struct backlight_ops.check_fb, which
>> uses struct fb_info in its interface. Replace the callback with one
>> the does not use fb_info.
>>
>> In DRM, we have several drivers that implement backlight support. By
>> including <linux/backlight.h> these drivers depend on <linux/fb.h>.
>> At the same time, fbdev is deprecated for new drivers and likely to
>> be replaced on many systems.
>>
>> This patchset is part of a larger effort to implement the backlight
>> code without depending on fbdev.
>>
>> Patch 1 makes the backlight core match backlight and framebuffer
>> devices via struct fb_info.bl_dev. Patches 2 to 9 then go through
>> drivers and remove unnecessary implementations of check_fb. Finally,
>> patch 10 replaces the check_fb hook with controls_device, which
>> uses the framebuffer's Linux device instead of the framebuffer.
> I won't reply individually but I also took a look at the patches for
> the combo devices and it all looked good to me from a backlight
> point of view.
>
> However I don't want to drop Reviewed-by: on them since it risks those
> bit being mistaken for an ack and merged ahead of the patch 1...
Thanks for reviewing. Unless someone objects, my intention is to merge
everything via the drm-misc, so all patches should go in at once. I do
have a lot more patches that untangle backlight and fbdev almost
completely, but most of these changes are in the actual graphics drivers
rather than the backlight core code. So hopefully everything can go
through the DRM tree; or maybe the fbdev tree.
Best regards
Thomas
>
>
> Daniel.
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 00/10] backlight: Replace struct fb_info in interfaces
2024-02-15 12:23 ` Thomas Zimmermann
@ 2024-02-19 15:02 ` Lee Jones
2024-02-21 9:23 ` Thomas Zimmermann
0 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2024-02-19 15:02 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: Daniel Thompson, jingoohan1, deller, javierm, dri-devel,
linux-fbdev, linux-input, linux-pwm
On Thu, 15 Feb 2024, Thomas Zimmermann wrote:
> Hi
>
> Am 15.02.24 um 13:13 schrieb Daniel Thompson:
> > On Mon, Feb 12, 2024 at 05:16:33PM +0100, Thomas Zimmermann wrote:
> > > Backlight drivers implement struct backlight_ops.check_fb, which
> > > uses struct fb_info in its interface. Replace the callback with one
> > > the does not use fb_info.
> > >
> > > In DRM, we have several drivers that implement backlight support. By
> > > including <linux/backlight.h> these drivers depend on <linux/fb.h>.
> > > At the same time, fbdev is deprecated for new drivers and likely to
> > > be replaced on many systems.
> > >
> > > This patchset is part of a larger effort to implement the backlight
> > > code without depending on fbdev.
> > >
> > > Patch 1 makes the backlight core match backlight and framebuffer
> > > devices via struct fb_info.bl_dev. Patches 2 to 9 then go through
> > > drivers and remove unnecessary implementations of check_fb. Finally,
> > > patch 10 replaces the check_fb hook with controls_device, which
> > > uses the framebuffer's Linux device instead of the framebuffer.
> > I won't reply individually but I also took a look at the patches for
> > the combo devices and it all looked good to me from a backlight
> > point of view.
> >
> > However I don't want to drop Reviewed-by: on them since it risks those
> > bit being mistaken for an ack and merged ahead of the patch 1...
>
> Thanks for reviewing. Unless someone objects, my intention is to merge
> everything via the drm-misc, so all patches should go in at once. I do have
> a lot more patches that untangle backlight and fbdev almost completely, but
> most of these changes are in the actual graphics drivers rather than the
> backlight core code. So hopefully everything can go through the DRM tree; or
> maybe the fbdev tree.
This is only acceptable if the maintainers of those trees can provide me
with a pull-request to a succinct (_only_ these patches) immutable
branch. If this is not possible, then I should like to merge the set
through the Backlight tree and I can provide everyone else with said PR.
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev
2024-02-12 16:16 ` [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
2024-02-15 12:02 ` Daniel Thompson
@ 2024-02-20 9:17 ` Javier Martinez Canillas
2024-02-20 9:37 ` Thomas Zimmermann
1 sibling, 1 reply; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:17 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
Thomas Zimmermann <tzimmermann@suse.de> writes:
Hello Thomas,
> 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.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/video/backlight/backlight.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
> index 86e1cdc8e3697..48844a4f28ad3 100644
> --- a/drivers/video/backlight/backlight.c
> +++ b/drivers/video/backlight/backlight.c
> @@ -98,7 +98,8 @@ static int fb_notifier_callback(struct notifier_block *self,
> {
> struct backlight_device *bd;
> struct fb_event *evdata = data;
> - int node = evdata->info->node;
> + struct fb_info *info = evdata->info;
> + int node = info->node;
> int fb_blank = 0;
>
> /* If we aren't interested in this event, skip it immediately ... */
> @@ -110,8 +111,12 @@ static int fb_notifier_callback(struct notifier_block *self,
>
> if (!bd->ops)
> goto out;
> - if (bd->ops->check_fb && !bd->ops->check_fb(bd, evdata->info))
> + else if (bd->ops->check_fb && !bd->ops->check_fb(bd, info))
> goto out;
> +#if IS_ENABLED(CONFIG_FB_BACKLIGHT)
> + else if (info->bl_dev && info->bl_dev != bd)
If the driver doesn't provide a struct backlight_ops .check_fb callback, I
think that having an info->bl_dev should be mandatory ? Or at least maybe
there should be a warning if info->bl_dev isn't set ?
The would be a driver bug, right ?
Regardless, the change makes sense to me.
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-13 13:17 ` Robin van der Gracht
@ 2024-02-20 9:18 ` Javier Martinez Canillas
1 sibling, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:18 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Robin van der Gracht
Thomas Zimmermann <tzimmermann@suse.de> writes:
> The driver sets struct fb_info.bl_dev to the correct backlight
> device. Thus rely on the backlight core code to match backlight
> and framebuffer devices, and remove the extra check_fb function
> from struct backlight_ops.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Robin van der Gracht <robin@protonic.nl>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 03/10] hid/hid-picolcd: Fix initialization order
2024-02-12 16:16 ` [PATCH 03/10] hid/hid-picolcd: Fix initialization order Thomas Zimmermann
@ 2024-02-20 9:19 ` Javier Martinez Canillas
0 siblings, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:19 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Bruno Prémont
Thomas Zimmermann <tzimmermann@suse.de> writes:
> For drivers that support backlight, LCD and fbdev devices, fbdev has
> to be initialized last. See documentation for struct fbinfo.bl_dev.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: "Bruno Prémont" <bonbons@linux-vserver.org>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
` (2 preceding siblings ...)
2024-02-15 12:06 ` Daniel Thompson
@ 2024-02-20 9:24 ` Javier Martinez Canillas
3 siblings, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:24 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Bruno Prémont
Thomas Zimmermann <tzimmermann@suse.de> writes:
> The driver sets struct fb_info.bl_dev to the correct backlight
> device. Thus rely on the backlight core code to match backlight
> and framebuffer devices, and remove the extra check_fb function
> from struct backlight_ops.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: "Bruno Prémont" <bonbons@linux-vserver.org>
> ---
[...]
> +#ifdef CONFIG_HID_PICOLCD_BACKLIGHT
> + info->bl_dev = data->backlight;
> +#endif
> +
The robot complains about this, I think that you also need to guard
against CONFIG_FB_BACKLIGHT being defined. Alternatively, you could
include a preparatory patch to fix the HID_PICOLCD_BACKLIGHT config
symbol dependencies.
Other than that,
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb
2024-02-12 16:16 ` [PATCH 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb Thomas Zimmermann
2024-02-15 12:06 ` Daniel Thompson
@ 2024-02-20 9:26 ` Javier Martinez Canillas
1 sibling, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:26 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
Thomas Zimmermann <tzimmermann@suse.de> writes:
> The driver's implementation of check_fb always returns true, which
> is the default if no implementation has been set. So remove the code
> from the driver.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-12 17:25 ` Uwe Kleine-König
2024-02-15 12:08 ` Daniel Thompson
@ 2024-02-20 9:27 ` Javier Martinez Canillas
2 siblings, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:27 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
Thomas Zimmermann, Uwe Kleine-König
Thomas Zimmermann <tzimmermann@suse.de> writes:
> The internal check_fb callback from struct pwm_bl_data is never
> implemented. thus the driver's implementation of check_fb always
> returns true, which is the backlight core's default if no
> implementation has been set. So remove the code from the driver.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 07/10] fbdev/sh_mobile_lcdc_fb: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 07/10] fbdev/sh_mobile_lcdc_fb: " Thomas Zimmermann
@ 2024-02-20 9:27 ` Javier Martinez Canillas
0 siblings, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:27 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
Thomas Zimmermann <tzimmermann@suse.de> writes:
> The driver sets struct fb_info.bl_dev to the correct backlight
> device. Thus rely on the backlight core code to match backlight
> and framebuffer devices, and remove the extra check_fb function
> from struct backlight_ops.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer
2024-02-12 16:16 ` [PATCH 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer Thomas Zimmermann
@ 2024-02-20 9:32 ` Javier Martinez Canillas
0 siblings, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:32 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
Thomas Zimmermann <tzimmermann@suse.de> writes:
> For drivers that support backlight, LCD and fbdev devices, fbdev has
> to be initialized last. See documentation for struct fbinfo.bl_dev.
>
> The backlight name's index number comes from register_framebuffer(),
> which now happens after initializing the backlight device. So like
> in all other backlight drivers, we now give the backlight device a
> generic name without the fbdev index.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb
2024-02-12 16:16 ` [PATCH 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-02-20 9:32 ` Javier Martinez Canillas
0 siblings, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:32 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
Thomas Zimmermann <tzimmermann@suse.de> writes:
> The driver sets struct fb_info.bl_dev to the correct backlight
> device. Thus rely on the backlight core code to match backlight
> and framebuffer devices, and remove the extra check_fb function
> from struct backlight_ops.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 10/10] backlight: Add controls_device callback to struct backlight_ops
2024-02-12 16:16 ` [PATCH 10/10] backlight: Add controls_device callback to struct backlight_ops Thomas Zimmermann
2024-02-15 12:09 ` Daniel Thompson
@ 2024-02-20 9:35 ` Javier Martinez Canillas
1 sibling, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:35 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm, Thomas Zimmermann
Thomas Zimmermann <tzimmermann@suse.de> writes:
> Replace check_fb with controls_device in struct backlight_ops. The
> new callback interface takes a Linux device instead of a framebuffer.
> Resolves one of the dependencies of backlight.h on fb.h.
>
> The few drivers that had custom implementations of check_fb can easily
> use the framebuffer's Linux device instead. Update them accordingly.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
Personally, I don't like the "control_device" callback name that much. I
think that check_device or probe_device would be a better one and easier
to understand what it does.
But not strong opinion on that,
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev
2024-02-20 9:17 ` Javier Martinez Canillas
@ 2024-02-20 9:37 ` Thomas Zimmermann
2024-02-20 9:46 ` Javier Martinez Canillas
0 siblings, 1 reply; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-20 9:37 UTC (permalink / raw)
To: Javier Martinez Canillas, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm
Hi
Am 20.02.24 um 10:17 schrieb Javier Martinez Canillas:
> Thomas Zimmermann <tzimmermann@suse.de> writes:
>
> Hello Thomas,
>
>> 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.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>> drivers/video/backlight/backlight.c | 9 +++++++--
>> 1 file changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
>> index 86e1cdc8e3697..48844a4f28ad3 100644
>> --- a/drivers/video/backlight/backlight.c
>> +++ b/drivers/video/backlight/backlight.c
>> @@ -98,7 +98,8 @@ static int fb_notifier_callback(struct notifier_block *self,
>> {
>> struct backlight_device *bd;
>> struct fb_event *evdata = data;
>> - int node = evdata->info->node;
>> + struct fb_info *info = evdata->info;
>> + int node = info->node;
>> int fb_blank = 0;
>>
>> /* If we aren't interested in this event, skip it immediately ... */
>> @@ -110,8 +111,12 @@ static int fb_notifier_callback(struct notifier_block *self,
>>
>> if (!bd->ops)
>> goto out;
>> - if (bd->ops->check_fb && !bd->ops->check_fb(bd, evdata->info))
>> + else if (bd->ops->check_fb && !bd->ops->check_fb(bd, info))
>> goto out;
>> +#if IS_ENABLED(CONFIG_FB_BACKLIGHT)
>> + else if (info->bl_dev && info->bl_dev != bd)
> If the driver doesn't provide a struct backlight_ops .check_fb callback, I
> think that having an info->bl_dev should be mandatory ? Or at least maybe
> there should be a warning if info->bl_dev isn't set ?
bl_dev can only be used for display drivers that set an explicit
backlight device; otherwise it's NULL. There seem to be systems where
backlight and display are distinct. And the docs for check_fb say that
by default the backlight matches against any display. I tried to keep
this semantics by silently succeeding if neither check_fb nor bl_dev
have bene set.
>
> The would be a driver bug, right ?
I assume that some systems create the backlight instance from platform
data or DT and the display driver has no means of knowing about it.
Best regards
Thomas
>
> Regardless, the change makes sense to me.
>
> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev
2024-02-20 9:37 ` Thomas Zimmermann
@ 2024-02-20 9:46 ` Javier Martinez Canillas
0 siblings, 0 replies; 37+ messages in thread
From: Javier Martinez Canillas @ 2024-02-20 9:46 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller
Cc: dri-devel, linux-fbdev, linux-input, linux-pwm
Thomas Zimmermann <tzimmermann@suse.de> writes:
> Hi
>
> Am 20.02.24 um 10:17 schrieb Javier Martinez Canillas:
>> Thomas Zimmermann <tzimmermann@suse.de> writes:
>>
>> Hello Thomas,
>>
>>> 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.
>>>
>>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>>> ---
>>> drivers/video/backlight/backlight.c | 9 +++++++--
>>> 1 file changed, 7 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
>>> index 86e1cdc8e3697..48844a4f28ad3 100644
>>> --- a/drivers/video/backlight/backlight.c
>>> +++ b/drivers/video/backlight/backlight.c
>>> @@ -98,7 +98,8 @@ static int fb_notifier_callback(struct notifier_block *self,
>>> {
>>> struct backlight_device *bd;
>>> struct fb_event *evdata = data;
>>> - int node = evdata->info->node;
>>> + struct fb_info *info = evdata->info;
>>> + int node = info->node;
>>> int fb_blank = 0;
>>>
>>> /* If we aren't interested in this event, skip it immediately ... */
>>> @@ -110,8 +111,12 @@ static int fb_notifier_callback(struct notifier_block *self,
>>>
>>> if (!bd->ops)
>>> goto out;
>>> - if (bd->ops->check_fb && !bd->ops->check_fb(bd, evdata->info))
>>> + else if (bd->ops->check_fb && !bd->ops->check_fb(bd, info))
>>> goto out;
>>> +#if IS_ENABLED(CONFIG_FB_BACKLIGHT)
>>> + else if (info->bl_dev && info->bl_dev != bd)
>> If the driver doesn't provide a struct backlight_ops .check_fb callback, I
>> think that having an info->bl_dev should be mandatory ? Or at least maybe
>> there should be a warning if info->bl_dev isn't set ?
>
> bl_dev can only be used for display drivers that set an explicit
> backlight device; otherwise it's NULL. There seem to be systems where
> backlight and display are distinct. And the docs for check_fb say that
> by default the backlight matches against any display. I tried to keep
> this semantics by silently succeeding if neither check_fb nor bl_dev
> have bene set.
>
>>
>> The would be a driver bug, right ?
>
> I assume that some systems create the backlight instance from platform
> data or DT and the display driver has no means of knowing about it.
>
Ok. I thought that in that case a (platform specific) .check_fb callback
would have to be provided then. But if the semantic is that none could be
missing, then I guess is OK to silently succeeding.
I wonder if at least a debug printout is worth it. But maybe a follow-up.
> Best regards
> Thomas
>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 00/10] backlight: Replace struct fb_info in interfaces
2024-02-19 15:02 ` Lee Jones
@ 2024-02-21 9:23 ` Thomas Zimmermann
0 siblings, 0 replies; 37+ messages in thread
From: Thomas Zimmermann @ 2024-02-21 9:23 UTC (permalink / raw)
To: Lee Jones
Cc: Daniel Thompson, jingoohan1, deller, javierm, dri-devel,
linux-fbdev, linux-input, linux-pwm
Hi
Am 19.02.24 um 16:02 schrieb Lee Jones:
> On Thu, 15 Feb 2024, Thomas Zimmermann wrote:
>
>> Hi
>>
>> Am 15.02.24 um 13:13 schrieb Daniel Thompson:
>>> On Mon, Feb 12, 2024 at 05:16:33PM +0100, Thomas Zimmermann wrote:
>>>> Backlight drivers implement struct backlight_ops.check_fb, which
>>>> uses struct fb_info in its interface. Replace the callback with one
>>>> the does not use fb_info.
>>>>
>>>> In DRM, we have several drivers that implement backlight support. By
>>>> including <linux/backlight.h> these drivers depend on <linux/fb.h>.
>>>> At the same time, fbdev is deprecated for new drivers and likely to
>>>> be replaced on many systems.
>>>>
>>>> This patchset is part of a larger effort to implement the backlight
>>>> code without depending on fbdev.
>>>>
>>>> Patch 1 makes the backlight core match backlight and framebuffer
>>>> devices via struct fb_info.bl_dev. Patches 2 to 9 then go through
>>>> drivers and remove unnecessary implementations of check_fb. Finally,
>>>> patch 10 replaces the check_fb hook with controls_device, which
>>>> uses the framebuffer's Linux device instead of the framebuffer.
>>> I won't reply individually but I also took a look at the patches for
>>> the combo devices and it all looked good to me from a backlight
>>> point of view.
>>>
>>> However I don't want to drop Reviewed-by: on them since it risks those
>>> bit being mistaken for an ack and merged ahead of the patch 1...
>> Thanks for reviewing. Unless someone objects, my intention is to merge
>> everything via the drm-misc, so all patches should go in at once. I do have
>> a lot more patches that untangle backlight and fbdev almost completely, but
>> most of these changes are in the actual graphics drivers rather than the
>> backlight core code. So hopefully everything can go through the DRM tree; or
>> maybe the fbdev tree.
> This is only acceptable if the maintainers of those trees can provide me
> with a pull-request to a succinct (_only_ these patches) immutable
> branch. If this is not possible, then I should like to merge the set
> through the Backlight tree and I can provide everyone else with said PR.
I see, there's a separate backlight tree.
I'm going to send another revision of this patchset. You either merge
all of the patches via the backlight tree, or you could just merge
patches 1, 5 and 6 for now. I'll take care to get the rest merged via
other trees and I'll re-submoit patch 10 for a final clean up. Your choice.
Best regards
Thomas
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 37+ messages in thread
end of thread, other threads:[~2024-02-21 9:23 UTC | newest]
Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-12 16:16 [PATCH 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
2024-02-12 16:16 ` [PATCH 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
2024-02-15 12:02 ` Daniel Thompson
2024-02-20 9:17 ` Javier Martinez Canillas
2024-02-20 9:37 ` Thomas Zimmermann
2024-02-20 9:46 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-13 13:17 ` Robin van der Gracht
2024-02-20 9:18 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 03/10] hid/hid-picolcd: Fix initialization order Thomas Zimmermann
2024-02-20 9:19 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-13 14:53 ` kernel test robot
2024-02-13 21:57 ` kernel test robot
2024-02-15 12:06 ` Daniel Thompson
2024-02-15 12:19 ` Thomas Zimmermann
2024-02-20 9:24 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb Thomas Zimmermann
2024-02-15 12:06 ` Daniel Thompson
2024-02-20 9:26 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-12 17:25 ` Uwe Kleine-König
2024-02-15 12:08 ` Daniel Thompson
2024-02-20 9:27 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 07/10] fbdev/sh_mobile_lcdc_fb: " Thomas Zimmermann
2024-02-20 9:27 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer Thomas Zimmermann
2024-02-20 9:32 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-02-20 9:32 ` Javier Martinez Canillas
2024-02-12 16:16 ` [PATCH 10/10] backlight: Add controls_device callback to struct backlight_ops Thomas Zimmermann
2024-02-15 12:09 ` Daniel Thompson
2024-02-20 9:35 ` Javier Martinez Canillas
2024-02-15 12:13 ` [PATCH 00/10] backlight: Replace struct fb_info in interfaces Daniel Thompson
2024-02-15 12:23 ` Thomas Zimmermann
2024-02-19 15:02 ` Lee Jones
2024-02-21 9:23 ` Thomas Zimmermann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).