backlight_properties.fb_blank is deprecated. The states it represents are handled by other properties; but instead of accessing those properties directly, drivers should use the helpers provided by backlight.h.
This will ultimately allow fb_blank to be removed.
Stephen Kitt (3): drm/panel: Use backlight helper drm/panel: panel-dsi-cm: Use backlight helpers drm/panel: sony-acx565akm: Use backlight helpers
.../drm/panel/panel-asus-z00t-tm5p5-n35596.c | 7 +----- drivers/gpu/drm/panel/panel-dsi-cm.c | 24 ++++--------------- drivers/gpu/drm/panel/panel-sony-acx565akm.c | 11 ++------- 3 files changed, 7 insertions(+), 35 deletions(-)
base-commit: f2906aa863381afb0015a9eb7fefad885d4e5a56
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.
Signed-off-by: Stephen Kitt steve@sk2.org Cc: Thierry Reding thierry.reding@gmail.com Cc: Sam Ravnborg sam@ravnborg.org Cc: David Airlie airlied@linux.ie Cc: Daniel Vetter daniel@ffwll.ch Cc: dri-devel@lists.freedesktop.org --- drivers/gpu/drm/panel/panel-asus-z00t-tm5p5-n35596.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-asus-z00t-tm5p5-n35596.c b/drivers/gpu/drm/panel/panel-asus-z00t-tm5p5-n35596.c index 44674ebedf59..174ff434bd71 100644 --- a/drivers/gpu/drm/panel/panel-asus-z00t-tm5p5-n35596.c +++ b/drivers/gpu/drm/panel/panel-asus-z00t-tm5p5-n35596.c @@ -215,14 +215,9 @@ static const struct drm_panel_funcs tm5p5_nt35596_panel_funcs = { static int tm5p5_nt35596_bl_update_status(struct backlight_device *bl) { struct mipi_dsi_device *dsi = bl_get_data(bl); - u16 brightness = bl->props.brightness; + u16 brightness = backlight_get_brightness(bl); int ret;
- if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK || - bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) - brightness = 0; - dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
ret = mipi_dsi_dcs_set_display_brightness(dsi, brightness);
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 steve@sk2.org Cc: Thierry Reding thierry.reding@gmail.com Cc: Sam Ravnborg sam@ravnborg.org Cc: David Airlie airlied@linux.ie Cc: Daniel Vetter daniel@ffwll.ch Cc: dri-devel@lists.freedesktop.org --- 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 = {
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 steve@sk2.org Cc: Thierry Reding thierry.reding@gmail.com Cc: Sam Ravnborg sam@ravnborg.org Cc: David Airlie airlied@linux.ie Cc: Daniel Vetter daniel@ffwll.ch Cc: dri-devel@lists.freedesktop.org
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;
} else {backlight_enable(backlight);
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 sebastian.reichel@collabora.com
-- 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
Hi Sebastian,
On Thu, 9 Jun 2022 23:52:36 +0200, Sebastian Reichel sebastian.reichel@collabora.com 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;
} else {backlight_enable(backlight);
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 sebastian.reichel@collabora.com
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
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 sebastian.reichel@collabora.com 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;
} else {backlight_enable(backlight);
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 sebastian.reichel@collabora.com
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
On Fri, 10 Jun 2022 21:28:32 +0200, Sam Ravnborg sam@ravnborg.org 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 sebastian.reichel@collabora.com 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;
} else {backlight_enable(backlight);
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 sebastian.reichel@collabora.com
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
On Fri, 10 Jun 2022 21:52:36 +0200, Stephen Kitt steve@sk2.org wrote:
On Fri, 10 Jun 2022 21:28:32 +0200, Sam Ravnborg sam@ravnborg.org 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 sebastian.reichel@collabora.com 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;
} else {backlight_enable(backlight);
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 sebastian.reichel@collabora.com
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
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
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 manually checking the power state in struct backlight_properties, use backlight_is_blank().
Signed-off-by: Stephen Kitt steve@sk2.org Cc: Thierry Reding thierry.reding@gmail.com Cc: Sam Ravnborg sam@ravnborg.org Cc: David Airlie airlied@linux.ie Cc: Daniel Vetter daniel@ffwll.ch Cc: dri-devel@lists.freedesktop.org --- drivers/gpu/drm/panel/panel-sony-acx565akm.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-sony-acx565akm.c b/drivers/gpu/drm/panel/panel-sony-acx565akm.c index 0d7541a33f87..a6bc8c8cf6c8 100644 --- a/drivers/gpu/drm/panel/panel-sony-acx565akm.c +++ b/drivers/gpu/drm/panel/panel-sony-acx565akm.c @@ -298,13 +298,7 @@ static void acx565akm_set_brightness(struct acx565akm_panel *lcd, int level) static int acx565akm_bl_update_status_locked(struct backlight_device *dev) { struct acx565akm_panel *lcd = dev_get_drvdata(&dev->dev); - 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);
acx565akm_set_brightness(lcd, level);
@@ -330,8 +324,7 @@ static int acx565akm_bl_get_intensity(struct backlight_device *dev)
mutex_lock(&lcd->mutex);
- if (dev->props.fb_blank == FB_BLANK_UNBLANK && - dev->props.power == FB_BLANK_UNBLANK) + if (!backlight_is_blank(dev)) intensity = acx565akm_get_actual_brightness(lcd); else intensity = 0;
Hi,
On Tue, Jun 07, 2022 at 08:20:26PM +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 manually checking the power state in struct backlight_properties, use backlight_is_blank().
Signed-off-by: Stephen Kitt steve@sk2.org Cc: Thierry Reding thierry.reding@gmail.com Cc: Sam Ravnborg sam@ravnborg.org Cc: David Airlie airlied@linux.ie Cc: Daniel Vetter daniel@ffwll.ch Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Sebastian Reichel sebastian.reichel@collabora.com
-- Sebastian
drivers/gpu/drm/panel/panel-sony-acx565akm.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-sony-acx565akm.c b/drivers/gpu/drm/panel/panel-sony-acx565akm.c index 0d7541a33f87..a6bc8c8cf6c8 100644 --- a/drivers/gpu/drm/panel/panel-sony-acx565akm.c +++ b/drivers/gpu/drm/panel/panel-sony-acx565akm.c @@ -298,13 +298,7 @@ static void acx565akm_set_brightness(struct acx565akm_panel *lcd, int level) static int acx565akm_bl_update_status_locked(struct backlight_device *dev) { struct acx565akm_panel *lcd = dev_get_drvdata(&dev->dev);
- 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);
acx565akm_set_brightness(lcd, level);
@@ -330,8 +324,7 @@ static int acx565akm_bl_get_intensity(struct backlight_device *dev)
mutex_lock(&lcd->mutex);
- if (dev->props.fb_blank == FB_BLANK_UNBLANK &&
dev->props.power == FB_BLANK_UNBLANK)
- if (!backlight_is_blank(dev)) intensity = acx565akm_get_actual_brightness(lcd); else intensity = 0;
-- 2.30.2
dri-devel@lists.freedesktop.org