mbox series

[v4,00/10] backlight: Replace struct fb_info in interfaces

Message ID 20240305162425.23845-1-tzimmermann@suse.de
Headers show
Series backlight: Replace struct fb_info in interfaces | expand

Message

Thomas Zimmermann March 5, 2024, 4:22 p.m. UTC
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(-)

Comments

Uwe Kleine-König March 13, 2024, 6:48 a.m. UTC | #1
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
Lee Jones March 13, 2024, 8:03 a.m. UTC | #2
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 March 21, 2024, 4:12 p.m. UTC | #3
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 [李琼斯]
Lee Jones March 21, 2024, 4:13 p.m. UTC | #4
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 March 22, 2024, 8:16 a.m. UTC | #5
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