2022-06-07 20:54:18

by Stephen Kitt

[permalink] [raw]
Subject: [PATCH 2/3] drm/panel: panel-dsi-cm: Use backlight helpers

Instead of retrieving the backlight brightness in struct
backlight_properties manually, and then checking whether the backlight
should be on at all, use backlight_get_brightness() which does all
this and insulates this from future changes.

Instead of setting the power state by manually updating fields in
struct backlight_properties, use backlight_enable() and
backlight_disable(). These also call backlight_update_status() so the
separate call is no longer needed.

Signed-off-by: Stephen Kitt <[email protected]>
Cc: Thierry Reding <[email protected]>
Cc: Sam Ravnborg <[email protected]>
Cc: David Airlie <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: [email protected]
---
drivers/gpu/drm/panel/panel-dsi-cm.c | 24 ++++--------------------
1 file changed, 4 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-dsi-cm.c b/drivers/gpu/drm/panel/panel-dsi-cm.c
index b58cb064975f..aa36dc6cedd3 100644
--- a/drivers/gpu/drm/panel/panel-dsi-cm.c
+++ b/drivers/gpu/drm/panel/panel-dsi-cm.c
@@ -86,16 +86,10 @@ static void dsicm_bl_power(struct panel_drv_data *ddata, bool enable)
return;

if (enable) {
- backlight->props.fb_blank = FB_BLANK_UNBLANK;
- backlight->props.state = ~(BL_CORE_FBBLANK | BL_CORE_SUSPENDED);
- backlight->props.power = FB_BLANK_UNBLANK;
+ backlight_enable(backlight);
} else {
- backlight->props.fb_blank = FB_BLANK_NORMAL;
- backlight->props.power = FB_BLANK_POWERDOWN;
- backlight->props.state |= BL_CORE_FBBLANK | BL_CORE_SUSPENDED;
+ backlight_disable(backlight);
}
-
- backlight_update_status(backlight);
}

static void hw_guard_start(struct panel_drv_data *ddata, int guard_msec)
@@ -196,13 +190,7 @@ static int dsicm_bl_update_status(struct backlight_device *dev)
{
struct panel_drv_data *ddata = dev_get_drvdata(&dev->dev);
int r = 0;
- int level;
-
- if (dev->props.fb_blank == FB_BLANK_UNBLANK &&
- dev->props.power == FB_BLANK_UNBLANK)
- level = dev->props.brightness;
- else
- level = 0;
+ int level = backlight_get_brightness(dev);

dev_dbg(&ddata->dsi->dev, "update brightness to %d\n", level);

@@ -219,11 +207,7 @@ static int dsicm_bl_update_status(struct backlight_device *dev)

static int dsicm_bl_get_intensity(struct backlight_device *dev)
{
- if (dev->props.fb_blank == FB_BLANK_UNBLANK &&
- dev->props.power == FB_BLANK_UNBLANK)
- return dev->props.brightness;
-
- return 0;
+ return backlight_get_brightness(dev);
}

static const struct backlight_ops dsicm_bl_ops = {
--
2.30.2


2022-06-09 23:06:55

by Sebastian Reichel

[permalink] [raw]
Subject: Re: [PATCH 2/3] drm/panel: panel-dsi-cm: Use backlight helpers

Hi,

On Tue, Jun 07, 2022 at 08:20:25PM +0200, Stephen Kitt wrote:
> Instead of retrieving the backlight brightness in struct
> backlight_properties manually, and then checking whether the backlight
> should be on at all, use backlight_get_brightness() which does all
> this and insulates this from future changes.
>
> Instead of setting the power state by manually updating fields in
> struct backlight_properties, use backlight_enable() and
> backlight_disable(). These also call backlight_update_status() so the
> separate call is no longer needed.
>
> Signed-off-by: Stephen Kitt <[email protected]>
> Cc: Thierry Reding <[email protected]>
> Cc: Sam Ravnborg <[email protected]>
> Cc: David Airlie <[email protected]>
> Cc: Daniel Vetter <[email protected]>
> Cc: [email protected]
> ---
>
> drivers/gpu/drm/panel/panel-dsi-cm.c | 24 ++++--------------------
> 1 file changed, 4 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-dsi-cm.c b/drivers/gpu/drm/panel/panel-dsi-cm.c
> index b58cb064975f..aa36dc6cedd3 100644
> --- a/drivers/gpu/drm/panel/panel-dsi-cm.c
> +++ b/drivers/gpu/drm/panel/panel-dsi-cm.c
> @@ -86,16 +86,10 @@ static void dsicm_bl_power(struct panel_drv_data *ddata, bool enable)
> return;
>
> if (enable) {
> - backlight->props.fb_blank = FB_BLANK_UNBLANK;
> - backlight->props.state = ~(BL_CORE_FBBLANK | BL_CORE_SUSPENDED);
> - backlight->props.power = FB_BLANK_UNBLANK;
> + backlight_enable(backlight);
> } else {
> - backlight->props.fb_blank = FB_BLANK_NORMAL;
> - backlight->props.power = FB_BLANK_POWERDOWN;
> - backlight->props.state |= BL_CORE_FBBLANK | BL_CORE_SUSPENDED;
> + backlight_disable(backlight);
> }

The brackets can be removed now. Otherwise:

Reviewed-by: Sebastian Reichel <[email protected]>

-- Sebastian

> -
> - backlight_update_status(backlight);
> }
>
> static void hw_guard_start(struct panel_drv_data *ddata, int guard_msec)
> @@ -196,13 +190,7 @@ static int dsicm_bl_update_status(struct backlight_device *dev)
> {
> struct panel_drv_data *ddata = dev_get_drvdata(&dev->dev);
> int r = 0;
> - int level;
> -
> - if (dev->props.fb_blank == FB_BLANK_UNBLANK &&
> - dev->props.power == FB_BLANK_UNBLANK)
> - level = dev->props.brightness;
> - else
> - level = 0;
> + int level = backlight_get_brightness(dev);
>
> dev_dbg(&ddata->dsi->dev, "update brightness to %d\n", level);
>
> @@ -219,11 +207,7 @@ static int dsicm_bl_update_status(struct backlight_device *dev)
>
> static int dsicm_bl_get_intensity(struct backlight_device *dev)
> {
> - if (dev->props.fb_blank == FB_BLANK_UNBLANK &&
> - dev->props.power == FB_BLANK_UNBLANK)
> - return dev->props.brightness;
> -
> - return 0;
> + return backlight_get_brightness(dev);
> }
>
> static const struct backlight_ops dsicm_bl_ops = {
> --
> 2.30.2
>


Attachments:
(No filename) (2.88 kB)
signature.asc (849.00 B)
Download all attachments

2022-06-10 18:39:10

by Stephen Kitt

[permalink] [raw]
Subject: Re: [PATCH 2/3] drm/panel: panel-dsi-cm: Use backlight helpers

Hi Sebastian,

On Thu, 9 Jun 2022 23:52:36 +0200, Sebastian Reichel
<[email protected]> wrote:
> On Tue, Jun 07, 2022 at 08:20:25PM +0200, Stephen Kitt wrote:
> > diff --git a/drivers/gpu/drm/panel/panel-dsi-cm.c
> > b/drivers/gpu/drm/panel/panel-dsi-cm.c index b58cb064975f..aa36dc6cedd3
> > 100644 --- a/drivers/gpu/drm/panel/panel-dsi-cm.c
> > +++ b/drivers/gpu/drm/panel/panel-dsi-cm.c
> > @@ -86,16 +86,10 @@ static void dsicm_bl_power(struct panel_drv_data
> > *ddata, bool enable) return;
> >
> > if (enable) {
> > - backlight->props.fb_blank = FB_BLANK_UNBLANK;
> > - backlight->props.state = ~(BL_CORE_FBBLANK |
> > BL_CORE_SUSPENDED);
> > - backlight->props.power = FB_BLANK_UNBLANK;
> > + backlight_enable(backlight);
> > } else {
> > - backlight->props.fb_blank = FB_BLANK_NORMAL;
> > - backlight->props.power = FB_BLANK_POWERDOWN;
> > - backlight->props.state |= BL_CORE_FBBLANK |
> > BL_CORE_SUSPENDED;
> > + backlight_disable(backlight);
> > }
>
> The brackets can be removed now. Otherwise:

>
> Reviewed-by: Sebastian Reichel <[email protected]>

Thanks, I’ll wait a little more to see if there are any other reviews of the
patches and then push a v2 with that fix.

Regards,

Stephen


Attachments:
(No filename) (849.00 B)
OpenPGP digital signature

2022-06-10 19:58:36

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH 2/3] drm/panel: panel-dsi-cm: Use backlight helpers

Hi Stephen.
On Fri, Jun 10, 2022 at 07:47:20PM +0200, Stephen Kitt wrote:
> Hi Sebastian,
>
> On Thu, 9 Jun 2022 23:52:36 +0200, Sebastian Reichel
> <[email protected]> wrote:
> > On Tue, Jun 07, 2022 at 08:20:25PM +0200, Stephen Kitt wrote:
> > > diff --git a/drivers/gpu/drm/panel/panel-dsi-cm.c
> > > b/drivers/gpu/drm/panel/panel-dsi-cm.c index b58cb064975f..aa36dc6cedd3
> > > 100644 --- a/drivers/gpu/drm/panel/panel-dsi-cm.c
> > > +++ b/drivers/gpu/drm/panel/panel-dsi-cm.c
> > > @@ -86,16 +86,10 @@ static void dsicm_bl_power(struct panel_drv_data
> > > *ddata, bool enable) return;
> > >
> > > if (enable) {
> > > - backlight->props.fb_blank = FB_BLANK_UNBLANK;
> > > - backlight->props.state = ~(BL_CORE_FBBLANK |
> > > BL_CORE_SUSPENDED);
> > > - backlight->props.power = FB_BLANK_UNBLANK;
> > > + backlight_enable(backlight);
> > > } else {
> > > - backlight->props.fb_blank = FB_BLANK_NORMAL;
> > > - backlight->props.power = FB_BLANK_POWERDOWN;
> > > - backlight->props.state |= BL_CORE_FBBLANK |
> > > BL_CORE_SUSPENDED;
> > > + backlight_disable(backlight);
> > > }
> >
> > The brackets can be removed now. Otherwise:
>
> >
> > Reviewed-by: Sebastian Reichel <[email protected]>
>
> Thanks, I’ll wait a little more to see if there are any other reviews of the
> patches and then push a v2 with that fix.
It would be very nice if you could kill all uses of FB_BLANK in the
drivers/gpu/drm/panel/* drivers, and post them as one series.
This is long overdue to introduce the backlight helpers.

The three you posted is already a nice step forward, and there may be
more panel drivers I have missed.

Sam

2022-06-10 20:24:14

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH 2/3] drm/panel: panel-dsi-cm: Use backlight helpers

Hi Stephen,
> > > >
> > > > Thanks, I’ll wait a little more to see if there are any other reviews of
> > > > the patches and then push a v2 with that fix.
> > > It would be very nice if you could kill all uses of FB_BLANK in the
> > > drivers/gpu/drm/panel/* drivers, and post them as one series.
> > > This is long overdue to introduce the backlight helpers.
> > >
> > > The three you posted is already a nice step forward, and there may be
> > > more panel drivers I have missed.
> >
> > With this series on top of 5.19-rc1, the only remaining .fb_blank reference
> > is in acx565akm_backlight_init() in panel-sony-acx565akm.c; I was planning
> > on nuking that along with the other .fb_blank initialisers in a series
> > removing .fb_blank entirely from backlight_properties. I’ll add it as a
> > fourth patch for drm/panel if that makes things easier!
>
> That’s in drivers/gpu/drm/panel of course, there are a few others elsewhere
> (I’ve got patches in flight for most of them, I’ve got the rest ready for
> submission).
>
> > There will still be references to FB_BLANK constants since they’re used for
> > backlight_properties.power values. Would it make sense to rename those?
>
> Just to make sure — I’m cleaning up backlight_properties.fb_blank, not
> fb_ops.fb_blank. I wasn’t planning on touching the latter...

Nuking props.fb_blank - that a fine goal - so keep focus there.
We can then later revisit the other clean-up possibilities.

Since you do this tree-wide do not do the mistake and try to cover too
much at the same time, because then you never finish.
So forget my comment for now and keep up the good work on removing
props.fb_blank.

Sam

2022-06-10 20:25:53

by Stephen Kitt

[permalink] [raw]
Subject: Re: [PATCH 2/3] drm/panel: panel-dsi-cm: Use backlight helpers

On Fri, 10 Jun 2022 21:28:32 +0200, Sam Ravnborg <[email protected]> wrote:
> Hi Stephen.
> On Fri, Jun 10, 2022 at 07:47:20PM +0200, Stephen Kitt wrote:
> > Hi Sebastian,
> >
> > On Thu, 9 Jun 2022 23:52:36 +0200, Sebastian Reichel
> > <[email protected]> wrote:
> > > On Tue, Jun 07, 2022 at 08:20:25PM +0200, Stephen Kitt wrote:
> > > > diff --git a/drivers/gpu/drm/panel/panel-dsi-cm.c
> > > > b/drivers/gpu/drm/panel/panel-dsi-cm.c index
> > > > b58cb064975f..aa36dc6cedd3 100644 ---
> > > > a/drivers/gpu/drm/panel/panel-dsi-cm.c +++
> > > > b/drivers/gpu/drm/panel/panel-dsi-cm.c @@ -86,16 +86,10 @@ static
> > > > void dsicm_bl_power(struct panel_drv_data *ddata, bool enable) return;
> > > >
> > > > if (enable) {
> > > > - backlight->props.fb_blank = FB_BLANK_UNBLANK;
> > > > - backlight->props.state = ~(BL_CORE_FBBLANK |
> > > > BL_CORE_SUSPENDED);
> > > > - backlight->props.power = FB_BLANK_UNBLANK;
> > > > + backlight_enable(backlight);
> > > > } else {
> > > > - backlight->props.fb_blank = FB_BLANK_NORMAL;
> > > > - backlight->props.power = FB_BLANK_POWERDOWN;
> > > > - backlight->props.state |= BL_CORE_FBBLANK |
> > > > BL_CORE_SUSPENDED;
> > > > + backlight_disable(backlight);
> > > > }
> > >
> > > The brackets can be removed now. Otherwise:
> >
> > >
> > > Reviewed-by: Sebastian Reichel <[email protected]>
> >
> > Thanks, I’ll wait a little more to see if there are any other reviews of
> > the patches and then push a v2 with that fix.
> It would be very nice if you could kill all uses of FB_BLANK in the
> drivers/gpu/drm/panel/* drivers, and post them as one series.
> This is long overdue to introduce the backlight helpers.
>
> The three you posted is already a nice step forward, and there may be
> more panel drivers I have missed.

With this series on top of 5.19-rc1, the only remaining .fb_blank reference is
in acx565akm_backlight_init() in panel-sony-acx565akm.c; I was planning on
nuking that along with the other .fb_blank initialisers in a series removing
.fb_blank entirely from backlight_properties. I’ll add it as a fourth patch
for drm/panel if that makes things easier!

There will still be references to FB_BLANK constants since they’re used for
backlight_properties.power values. Would it make sense to rename those?

Regards,

Stephen


Attachments:
(No filename) (849.00 B)
OpenPGP digital signature

2022-06-10 21:32:24

by Stephen Kitt

[permalink] [raw]
Subject: Re: [PATCH 2/3] drm/panel: panel-dsi-cm: Use backlight helpers

On Fri, 10 Jun 2022 21:52:36 +0200, Stephen Kitt <[email protected]> wrote:

> On Fri, 10 Jun 2022 21:28:32 +0200, Sam Ravnborg <[email protected]> wrote:
> > Hi Stephen.
> > On Fri, Jun 10, 2022 at 07:47:20PM +0200, Stephen Kitt wrote:
> > > Hi Sebastian,
> > >
> > > On Thu, 9 Jun 2022 23:52:36 +0200, Sebastian Reichel
> > > <[email protected]> wrote:
> > > > On Tue, Jun 07, 2022 at 08:20:25PM +0200, Stephen Kitt wrote:
> > > > > diff --git a/drivers/gpu/drm/panel/panel-dsi-cm.c
> > > > > b/drivers/gpu/drm/panel/panel-dsi-cm.c index
> > > > > b58cb064975f..aa36dc6cedd3 100644 ---
> > > > > a/drivers/gpu/drm/panel/panel-dsi-cm.c +++
> > > > > b/drivers/gpu/drm/panel/panel-dsi-cm.c @@ -86,16 +86,10 @@ static
> > > > > void dsicm_bl_power(struct panel_drv_data *ddata, bool enable)
> > > > > return;
> > > > > if (enable) {
> > > > > - backlight->props.fb_blank = FB_BLANK_UNBLANK;
> > > > > - backlight->props.state = ~(BL_CORE_FBBLANK |
> > > > > BL_CORE_SUSPENDED);
> > > > > - backlight->props.power = FB_BLANK_UNBLANK;
> > > > > + backlight_enable(backlight);
> > > > > } else {
> > > > > - backlight->props.fb_blank = FB_BLANK_NORMAL;
> > > > > - backlight->props.power = FB_BLANK_POWERDOWN;
> > > > > - backlight->props.state |= BL_CORE_FBBLANK |
> > > > > BL_CORE_SUSPENDED;
> > > > > + backlight_disable(backlight);
> > > > > }
> > > >
> > > > The brackets can be removed now. Otherwise:
> > >
> > > >
> > > > Reviewed-by: Sebastian Reichel <[email protected]>
> > >
> > > Thanks, I’ll wait a little more to see if there are any other reviews of
> > > the patches and then push a v2 with that fix.
> > It would be very nice if you could kill all uses of FB_BLANK in the
> > drivers/gpu/drm/panel/* drivers, and post them as one series.
> > This is long overdue to introduce the backlight helpers.
> >
> > The three you posted is already a nice step forward, and there may be
> > more panel drivers I have missed.
>
> With this series on top of 5.19-rc1, the only remaining .fb_blank reference
> is in acx565akm_backlight_init() in panel-sony-acx565akm.c; I was planning
> on nuking that along with the other .fb_blank initialisers in a series
> removing .fb_blank entirely from backlight_properties. I’ll add it as a
> fourth patch for drm/panel if that makes things easier!

That’s in drivers/gpu/drm/panel of course, there are a few others elsewhere
(I’ve got patches in flight for most of them, I’ve got the rest ready for
submission).

> There will still be references to FB_BLANK constants since they’re used for
> backlight_properties.power values. Would it make sense to rename those?

Just to make sure — I’m cleaning up backlight_properties.fb_blank, not
fb_ops.fb_blank. I wasn’t planning on touching the latter...

Regards,

Stephen


Attachments:
(No filename) (849.00 B)
OpenPGP digital signature