All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces
@ 2024-03-05 16:22 Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
                   ` (12 more replies)
  0 siblings, 13 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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
that 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.

v4:
	* fix fb_bl_device() declaration and export
v3:
	* hide CONFIG_FB_BACKLIGHT behind fb_bl_device() (Lee)
	* if-else cleanups (Andy)
	* fix commit message of patch 2 (Andy)
v2:
	* fix hid-picolcd for CONFIG_FB_BACKLIGHT=n
	* fixes to commit messages

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             |  6 +++++
 drivers/video/backlight/aat2870_bl.c     |  7 ------
 drivers/video/backlight/backlight.c      |  8 ++++--
 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/core/fb_backlight.c  |  6 +++++
 drivers/video/fbdev/sh_mobile_lcdcfb.c   |  7 ------
 drivers/video/fbdev/ssd1307fb.c          | 31 +++++++++---------------
 include/linux/backlight.h                | 16 ++++++------
 include/linux/fb.h                       |  9 +++++++
 include/linux/pwm_backlight.h            |  1 -
 16 files changed, 71 insertions(+), 97 deletions(-)

-- 
2.44.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v4 01/10] backlight: Match backlight device against struct fb_info.bl_dev
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb Thomas Zimmermann
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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.

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>
---
 drivers/video/backlight/backlight.c     | 8 ++++++--
 drivers/video/fbdev/core/fb_backlight.c | 6 ++++++
 include/linux/fb.h                      | 9 +++++++++
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
index 86e1cdc8e3697..4f7973c6fcc79 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
@@ -98,7 +98,9 @@ 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;
+	struct backlight_device *fb_bd = fb_bl_device(info);
+	int node = info->node;
 	int fb_blank = 0;
 
 	/* If we aren't interested in this event, skip it immediately ... */
@@ -110,7 +112,9 @@ 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))
+	if (bd->ops->check_fb && !bd->ops->check_fb(bd, info))
+		goto out;
+	if (fb_bd && fb_bd != bd)
 		goto out;
 
 	fb_blank = *(int *)evdata->data;
diff --git a/drivers/video/fbdev/core/fb_backlight.c b/drivers/video/fbdev/core/fb_backlight.c
index e2d3b3adc870f..6fdaa9f81be90 100644
--- a/drivers/video/fbdev/core/fb_backlight.c
+++ b/drivers/video/fbdev/core/fb_backlight.c
@@ -30,4 +30,10 @@ void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max)
 	mutex_unlock(&fb_info->bl_curve_mutex);
 }
 EXPORT_SYMBOL_GPL(fb_bl_default_curve);
+
+struct backlight_device *fb_bl_device(struct fb_info *info)
+{
+	return info->bl_dev;
+}
+EXPORT_SYMBOL(fb_bl_device);
 #endif
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 708e6a177b1be..15e91c04758c8 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -732,6 +732,15 @@ extern struct fb_info *framebuffer_alloc(size_t size, struct device *dev);
 extern void framebuffer_release(struct fb_info *info);
 extern void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max);
 
+#if IS_ENABLED(CONFIG_FB_BACKLIGHT)
+struct backlight_device *fb_bl_device(struct fb_info *info);
+#else
+static inline struct backlight_device *fb_bl_device(struct fb_info *info)
+{
+	return NULL;
+}
+#endif
+
 /* fbmon.c */
 #define FB_MAXTIMINGS		0
 #define FB_VSYNCTIMINGS		1
-- 
2.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 03/10] hid/hid-picolcd: Fix initialization order Thomas Zimmermann
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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.

v3:
	* use 'check_fb()' in commit message (Andy)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Robin van der Gracht <robin@protonic.nl>
Acked-by: Robin van der Gracht <robin@protonic.nl>
Acked-by: Andy Shevchenko <andy@kernel.org>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 03/10] hid/hid-picolcd: Fix initialization order
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (2 preceding siblings ...)
  2024-03-05 16:22 ` [PATCH v4 03/10] hid/hid-picolcd: Fix initialization order Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb Thomas Zimmermann
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, javierm
  Cc: dri-devel, linux-fbdev, linux-input, linux-pwm,
	Thomas Zimmermann, Bruno Prémont

Update the driver to initialize struct fb_info.bl_dev to its backlight
device, if any. Thus rely on the backlight core code to match backlight
and framebuffer devices, and remove the extra check_fb function from
struct backlight_ops.

v2:
	* protect against CONFIG_FB_BACKLIGHT (Javier, kernel test robot)
	* reword commit message (Daniel)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: "Bruno Prémont" <bonbons@linux-vserver.org>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 drivers/hid/hid-picolcd_backlight.c | 7 -------
 drivers/hid/hid-picolcd_fb.c        | 6 ++++++
 2 files changed, 6 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..750206f5fc674 100644
--- a/drivers/hid/hid-picolcd_fb.c
+++ b/drivers/hid/hid-picolcd_fb.c
@@ -493,6 +493,12 @@ int picolcd_init_framebuffer(struct picolcd_data *data)
 	info->fix = picolcdfb_fix;
 	info->fix.smem_len   = PICOLCDFB_SIZE*8;
 
+#ifdef CONFIG_FB_BACKLIGHT
+#ifdef CONFIG_HID_PICOLCD_BACKLIGHT
+	info->bl_dev = data->backlight;
+#endif
+#endif
+
 	fbdata = info->par;
 	spin_lock_init(&fbdata->lock);
 	fbdata->picolcd = data;
-- 
2.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (3 preceding siblings ...)
  2024-03-05 16:22 ` [PATCH v4 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (4 preceding siblings ...)
  2024-03-05 16:22 ` [PATCH v4 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 07/10] fbdev/sh_mobile_lcdc_fb: " Thomas Zimmermann
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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. 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.

v2:
	* reword commit message

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 07/10] fbdev/sh_mobile_lcdc_fb: Remove struct backlight_ops.check_fb
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (5 preceding siblings ...)
  2024-03-05 16:22 ` [PATCH v4 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer Thomas Zimmermann
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (6 preceding siblings ...)
  2024-03-05 16:22 ` [PATCH v4 07/10] fbdev/sh_mobile_lcdc_fb: " Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb Thomas Zimmermann
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (7 preceding siblings ...)
  2024-03-05 16:22 ` [PATCH v4 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-05 16:22 ` [PATCH v4 10/10] backlight: Add controls_device callback to struct backlight_ops Thomas Zimmermann
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v4 10/10] backlight: Add controls_device callback to struct backlight_ops
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (8 preceding siblings ...)
  2024-03-05 16:22 ` [PATCH v4 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb Thomas Zimmermann
@ 2024-03-05 16:22 ` Thomas Zimmermann
  2024-03-13  6:48 ` [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Uwe Kleine-König
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 17+ messages in thread
From: Thomas Zimmermann @ 2024-03-05 16:22 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, 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>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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 4f7973c6fcc79..2bd4299206aef 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
@@ -112,7 +112,7 @@ static int fb_notifier_callback(struct notifier_block *self,
 
 	if (!bd->ops)
 		goto out;
-	if (bd->ops->check_fb && !bd->ops->check_fb(bd, info))
+	if (bd->ops->controls_device && !bd->ops->controls_device(bd, info->device))
 		goto out;
 	if (fb_bd && fb_bd != bd)
 		goto out;
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.44.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (9 preceding siblings ...)
  2024-03-05 16:22 ` [PATCH v4 10/10] backlight: Add controls_device callback to struct backlight_ops Thomas Zimmermann
@ 2024-03-13  6:48 ` Uwe Kleine-König
  2024-03-13  8:03   ` Lee Jones
  2024-03-21 16:12 ` Lee Jones
  2024-03-28 10:11 ` [GIT PULL] Immutable branch between MFD, Auxdisplay, HID and FB due for the v6.9 merge window Lee Jones
  12 siblings, 1 reply; 17+ messages in thread
From: Uwe Kleine-König @ 2024-03-13  6:48 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: lee, andy, daniel.thompson, jingoohan1, deller, robin, javierm,
	dri-devel, linux-fbdev, linux-input, linux-pwm

[-- Attachment #1: Type: text/plain, Size: 1212 bytes --]

Hello Thomas,

On Tue, Mar 05, 2024 at 05:22: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
> that 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 assume the merge plan for this series is via drm-misc in one go?

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] 17+ messages in thread

* Re: [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces
  2024-03-13  6:48 ` [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Uwe Kleine-König
@ 2024-03-13  8:03   ` Lee Jones
  0 siblings, 0 replies; 17+ messages in thread
From: Lee Jones @ 2024-03-13  8:03 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Thomas Zimmermann, andy, daniel.thompson, jingoohan1, deller,
	robin, javierm, dri-devel, linux-fbdev, linux-input, linux-pwm

On Wed, 13 Mar 2024, Uwe Kleine-König wrote:

> Hello Thomas,
> 
> On Tue, Mar 05, 2024 at 05:22: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
> > that 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 assume the merge plan for this series is via drm-misc in one go?

Backlight in one go.  This will be the second attempt at applying it.

-- 
Lee Jones [李琼斯]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (10 preceding siblings ...)
  2024-03-13  6:48 ` [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Uwe Kleine-König
@ 2024-03-21 16:12 ` Lee Jones
  2024-03-21 16:13   ` Lee Jones
  2024-03-28 10:11 ` [GIT PULL] Immutable branch between MFD, Auxdisplay, HID and FB due for the v6.9 merge window Lee Jones
  12 siblings, 1 reply; 17+ messages in thread
From: Lee Jones @ 2024-03-21 16:12 UTC (permalink / raw)
  To: lee, andy, daniel.thompson, jingoohan1, deller, robin, javierm,
	Thomas Zimmermann
  Cc: dri-devel, linux-fbdev, linux-input, linux-pwm

On Tue, 05 Mar 2024 17:22:33 +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
> that 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.
> 
> [...]

Applied, thanks!

[01/10] backlight: Match backlight device against struct fb_info.bl_dev
        commit: f1ecddf747f0d734682152b37c927aa958a51497
[02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb
        commit: dddfda7d5f12a7b48aeca6c3840167529c8cd34a
[03/10] hid/hid-picolcd: Fix initialization order
        commit: a951a15002da620871d8f3d8218c043cdc4c2471
[04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
        commit: b3c52552f8d8a816bda2bda984411c73f4dd0b87
[05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb
        commit: 0e03c96046405281fb072c05a7810d2661a2f334
[06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb
        commit: 78534967e7cb3c2fbfcb2d37820b51a80c570f90
[07/10] fbdev/sh_mobile_lcdc_fb: Remove struct backlight_ops.check_fb
        commit: b853c08cd6598b3b3ff91cb2bba336bfef9c0ac4
[08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer
        commit: d5ae81e965953da27cf46db6281d6a6a28eaaccb
[09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb
        commit: ec5925ef4a2dfd7ee060f4fd2a2e8036f8a94e8e
[10/10] backlight: Add controls_device callback to struct backlight_ops
        commit: 2e427743de015c1ac047036ef495c3f004105439

--
Lee Jones [李琼斯]


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces
  2024-03-21 16:12 ` Lee Jones
@ 2024-03-21 16:13   ` Lee Jones
  2024-03-22  8:16     ` Lee Jones
  0 siblings, 1 reply; 17+ messages in thread
From: Lee Jones @ 2024-03-21 16:13 UTC (permalink / raw)
  To: andy, daniel.thompson, jingoohan1, deller, robin, javierm,
	Thomas Zimmermann
  Cc: dri-devel, linux-fbdev, linux-input, linux-pwm

On Thu, 21 Mar 2024, Lee Jones wrote:

> On Tue, 05 Mar 2024 17:22:33 +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
> > that 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.
> > 
> > [...]
> 
> Applied, thanks!
> 
> [01/10] backlight: Match backlight device against struct fb_info.bl_dev
>         commit: f1ecddf747f0d734682152b37c927aa958a51497
> [02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb
>         commit: dddfda7d5f12a7b48aeca6c3840167529c8cd34a
> [03/10] hid/hid-picolcd: Fix initialization order
>         commit: a951a15002da620871d8f3d8218c043cdc4c2471
> [04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
>         commit: b3c52552f8d8a816bda2bda984411c73f4dd0b87
> [05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb
>         commit: 0e03c96046405281fb072c05a7810d2661a2f334
> [06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb
>         commit: 78534967e7cb3c2fbfcb2d37820b51a80c570f90
> [07/10] fbdev/sh_mobile_lcdc_fb: Remove struct backlight_ops.check_fb
>         commit: b853c08cd6598b3b3ff91cb2bba336bfef9c0ac4
> [08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer
>         commit: d5ae81e965953da27cf46db6281d6a6a28eaaccb
> [09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb
>         commit: ec5925ef4a2dfd7ee060f4fd2a2e8036f8a94e8e
> [10/10] backlight: Add controls_device callback to struct backlight_ops
>         commit: 2e427743de015c1ac047036ef495c3f004105439

Okay, let's try this again.

Send off for more build testing based on v6.8.

Will report back once complete.

-- 
Lee Jones [李琼斯]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces
  2024-03-21 16:13   ` Lee Jones
@ 2024-03-22  8:16     ` Lee Jones
  0 siblings, 0 replies; 17+ messages in thread
From: Lee Jones @ 2024-03-22  8:16 UTC (permalink / raw)
  To: andy, daniel.thompson, jingoohan1, deller, robin, javierm,
	Thomas Zimmermann
  Cc: dri-devel, linux-fbdev, linux-input, linux-pwm

On Thu, 21 Mar 2024, Lee Jones wrote:

> On Thu, 21 Mar 2024, Lee Jones wrote:
> 
> > On Tue, 05 Mar 2024 17:22:33 +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
> > > that 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.
> > > 
> > > [...]
> > 
> > Applied, thanks!
> > 
> > [01/10] backlight: Match backlight device against struct fb_info.bl_dev
> >         commit: f1ecddf747f0d734682152b37c927aa958a51497
> > [02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb
> >         commit: dddfda7d5f12a7b48aeca6c3840167529c8cd34a
> > [03/10] hid/hid-picolcd: Fix initialization order
> >         commit: a951a15002da620871d8f3d8218c043cdc4c2471
> > [04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb
> >         commit: b3c52552f8d8a816bda2bda984411c73f4dd0b87
> > [05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb
> >         commit: 0e03c96046405281fb072c05a7810d2661a2f334
> > [06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb
> >         commit: 78534967e7cb3c2fbfcb2d37820b51a80c570f90
> > [07/10] fbdev/sh_mobile_lcdc_fb: Remove struct backlight_ops.check_fb
> >         commit: b853c08cd6598b3b3ff91cb2bba336bfef9c0ac4
> > [08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer
> >         commit: d5ae81e965953da27cf46db6281d6a6a28eaaccb
> > [09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb
> >         commit: ec5925ef4a2dfd7ee060f4fd2a2e8036f8a94e8e
> > [10/10] backlight: Add controls_device callback to struct backlight_ops
> >         commit: 2e427743de015c1ac047036ef495c3f004105439
> 
> Okay, let's try this again.
> 
> Send off for more build testing based on v6.8.
> 
> Will report back once complete.

So far, so good.

Will rebase these and sent out an immutable branch PR once v6.9-rc1 is out.

Note to self: ib-backlight-auxdisplay-hid-fb-6.9

-- 
Lee Jones [李琼斯]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [GIT PULL] Immutable branch between MFD, Auxdisplay, HID and FB due for the v6.9 merge window
  2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
                   ` (11 preceding siblings ...)
  2024-03-21 16:12 ` Lee Jones
@ 2024-03-28 10:11 ` Lee Jones
  12 siblings, 0 replies; 17+ messages in thread
From: Lee Jones @ 2024-03-28 10:11 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: andy, daniel.thompson, jingoohan1, deller, robin, javierm,
	dri-devel, linux-fbdev, linux-input, linux-pwm

Enjoy!

The following changes since commit 4cece764965020c22cff7665b18a012006359095:

  Linux 6.9-rc1 (2024-03-24 14:10:05 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git ib-backlight-auxdisplay-hid-fb-v6.9

for you to fetch changes up to 0a4be7263749945a3882f7a0e2e5b1c45c31064e:

  backlight: Add controls_device callback to struct backlight_ops (2024-03-28 10:09:06 +0000)

----------------------------------------------------------------
Immutable branch between MFD, Auxdisplay, HID and FB due for the v6.9 merge window

----------------------------------------------------------------
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             |  6 ++++++
 drivers/video/backlight/aat2870_bl.c     |  7 -------
 drivers/video/backlight/backlight.c      |  8 ++++++--
 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/core/fb_backlight.c  |  6 ++++++
 drivers/video/fbdev/sh_mobile_lcdcfb.c   |  7 -------
 drivers/video/fbdev/ssd1307fb.c          | 31 +++++++++++--------------------
 include/linux/backlight.h                | 16 ++++++++--------
 include/linux/fb.h                       |  9 +++++++++
 include/linux/pwm_backlight.h            |  1 -
 16 files changed, 71 insertions(+), 97 deletions(-)

-- 
Lee Jones [李琼斯]

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2024-03-28 10:11 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-05 16:22 [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 01/10] backlight: Match backlight device against struct fb_info.bl_dev Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 02/10] auxdisplay/ht16k33: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 03/10] hid/hid-picolcd: Fix initialization order Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 04/10] hid/hid-picolcd: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 05/10] backlight/aat2870-backlight: Remove struct backlight.check_fb Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 06/10] backlight/pwm-backlight: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 07/10] fbdev/sh_mobile_lcdc_fb: " Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 08/10] fbdev/ssd1307fb: Init backlight before registering framebuffer Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 09/10] fbdev/ssd1307fb: Remove struct backlight_ops.check_fb Thomas Zimmermann
2024-03-05 16:22 ` [PATCH v4 10/10] backlight: Add controls_device callback to struct backlight_ops Thomas Zimmermann
2024-03-13  6:48 ` [PATCH v4 00/10] backlight: Replace struct fb_info in interfaces Uwe Kleine-König
2024-03-13  8:03   ` Lee Jones
2024-03-21 16:12 ` Lee Jones
2024-03-21 16:13   ` Lee Jones
2024-03-22  8:16     ` Lee Jones
2024-03-28 10:11 ` [GIT PULL] Immutable branch between MFD, Auxdisplay, HID and FB due for the v6.9 merge window Lee Jones

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.