From: Thomas Zimmermann <tzimmermann@suse.de>
To: pavel@ucw.cz, lee@kernel.org, danielt@kernel.org,
jingoohan1@gmail.com, deller@gmx.de, simona@ffwll.ch
Cc: linux-leds@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-fbdev@vger.kernel.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH 08/13] backlight: lcd: Move event handling into helpers
Date: Thu, 6 Feb 2025 16:30:27 +0100 [thread overview]
Message-ID: <20250206154033.697495-9-tzimmermann@suse.de> (raw)
In-Reply-To: <20250206154033.697495-1-tzimmermann@suse.de>
Move the handling of display updates to separate helper functions.
There is code for handling fbdev blank events and fbdev mode changes.
The code currently runs from fbdev event notifiers, which will be
replaced.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/video/backlight/lcd.c | 38 ++++++++++++++++++++++++++---------
1 file changed, 28 insertions(+), 10 deletions(-)
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index 95a371b3e8a4..b2ee25060d66 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -21,6 +21,32 @@
static struct list_head lcd_dev_list;
static struct mutex lcd_dev_list_mutex;
+static void lcd_notify_blank(struct lcd_device *ld, struct device *display_dev,
+ int power)
+{
+ guard(mutex)(&ld->ops_lock);
+
+ if (!ld->ops || !ld->ops->set_power)
+ return;
+ if (ld->ops->controls_device && !ld->ops->controls_device(ld, display_dev))
+ return;
+
+ ld->ops->set_power(ld, power);
+}
+
+static void lcd_notify_mode_change(struct lcd_device *ld, struct device *display_dev,
+ unsigned int width, unsigned int height)
+{
+ guard(mutex)(&ld->ops_lock);
+
+ if (!ld->ops || !ld->ops->set_mode)
+ return;
+ if (ld->ops->controls_device && !ld->ops->controls_device(ld, display_dev))
+ return;
+
+ ld->ops->set_mode(ld, width, height);
+}
+
#if defined(CONFIG_FB) || (defined(CONFIG_FB_MODULE) && \
defined(CONFIG_LCD_CLASS_DEVICE_MODULE))
static int to_lcd_power(int fb_blank)
@@ -53,25 +79,17 @@ static int fb_notifier_callback(struct notifier_block *self,
struct fb_info *info = evdata->info;
struct lcd_device *fb_lcd = fb_lcd_device(info);
- guard(mutex)(&ld->ops_lock);
-
- if (!ld->ops)
- return 0;
- if (ld->ops->controls_device && !ld->ops->controls_device(ld, info->device))
- return 0;
if (fb_lcd && fb_lcd != ld)
return 0;
if (event == FB_EVENT_BLANK) {
int power = to_lcd_power(*(int *)evdata->data);
- if (ld->ops->set_power)
- ld->ops->set_power(ld, power);
+ lcd_notify_blank(ld, info->device, power);
} else {
const struct fb_videomode *videomode = evdata->data;
- if (ld->ops->set_mode)
- ld->ops->set_mode(ld, videomode->xres, videomode->yres);
+ lcd_notify_mode_change(ld, info->device, videomode->xres, videomode->yres);
}
return 0;
--
2.48.1
next prev parent reply other threads:[~2025-02-06 15:40 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-06 15:30 [RFC PATCH 00/13] backlight, lcd, led: Remove fbdev dependencies Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 01/13] fbdev: Rework fb_blank() Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 02/13] fbdev: Track display blanking state Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 03/13] fbdev: Send old blank state in FB_EVENT_BLANK Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 04/13] backlight: Implement fbdev tracking with blank state from event Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 05/13] backlight: Move blank-state handling into helper Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 06/13] backlight: Replace fb events with a dedicated function call Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 07/13] backlight: lcd: Maintain global list of lcd devices Thomas Zimmermann
2025-02-06 15:30 ` Thomas Zimmermann [this message]
2025-02-06 15:30 ` [PATCH 09/13] backlight: lcd: Replace fb events with a dedicated function call Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 10/13] leds: backlight trigger: Maintain global list of led backlight triggers Thomas Zimmermann
2025-02-11 14:00 ` Lee Jones
2025-02-13 14:23 ` Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 11/13] leds: backlight trigger: Move blank-state handling into helper Thomas Zimmermann
2025-02-06 15:30 ` [PATCH 12/13] leds: backlight trigger: Replace fb events with a dedicated function call Thomas Zimmermann
2025-02-11 13:57 ` Lee Jones
2025-02-13 14:34 ` Thomas Zimmermann
2025-02-20 15:00 ` Lee Jones
2025-02-06 15:30 ` [PATCH 13/13] fbdev: Remove constants of unused events Thomas Zimmermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250206154033.697495-9-tzimmermann@suse.de \
--to=tzimmermann@suse.de \
--cc=danielt@kernel.org \
--cc=deller@gmx.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=jingoohan1@gmail.com \
--cc=lee@kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=simona@ffwll.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).