dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: lee@kernel.org, pavel@ucw.cz, 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>,
	Simona Vetter <simona.vetter@ffwll.ch>
Subject: [PATCH v4 07/11] backlight: lcd: Move event handling into helpers
Date: Fri, 21 Mar 2025 10:54:00 +0100	[thread overview]
Message-ID: <20250321095517.313713-8-tzimmermann@suse.de> (raw)
In-Reply-To: <20250321095517.313713-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>
Reviewed-by: Daniel Thompson (RISCstar) <danielt@kernel.org>
Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
---
 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 3267acf8dc5b..f57ff8bcc2fa 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -18,6 +18,32 @@
 #include <linux/fb.h>
 #include <linux/slab.h>
 
+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)
@@ -50,25 +76,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


  parent reply	other threads:[~2025-03-21  9:59 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-21  9:53 [PATCH v4 00/11] backlight, lcd, led: Remove fbdev dependencies Thomas Zimmermann
2025-03-21  9:53 ` [PATCH v4 01/11] fbdev: Rework fb_blank() Thomas Zimmermann
2025-03-21  9:53 ` [PATCH v4 02/11] fbdev: Track display blanking state Thomas Zimmermann
2025-03-21  9:53 ` [PATCH v4 03/11] fbdev: Send old blank state in FB_EVENT_BLANK Thomas Zimmermann
2025-03-21  9:53 ` [PATCH v4 04/11] backlight: Implement fbdev tracking with blank state from event Thomas Zimmermann
2025-03-21  9:53 ` [PATCH v4 05/11] backlight: Move blank-state handling into helper Thomas Zimmermann
2025-03-21  9:53 ` [PATCH v4 06/11] backlight: Replace fb events with a dedicated function call Thomas Zimmermann
2025-03-21 11:26   ` Daniel Thompson
2025-03-21  9:54 ` Thomas Zimmermann [this message]
2025-03-21  9:54 ` [PATCH v4 08/11] backlight: lcd: " Thomas Zimmermann
2025-03-21 11:27   ` Daniel Thompson
2025-03-24  7:43     ` Thomas Zimmermann
2025-03-28  8:42       ` Lee Jones
2025-03-28 13:18         ` Thomas Zimmermann
2025-03-21  9:54 ` [PATCH v4 09/11] leds: backlight trigger: Move blank-state handling into helper Thomas Zimmermann
2025-03-21  9:54 ` [PATCH v4 10/11] leds: backlight trigger: Replace fb events with a dedicated function call Thomas Zimmermann
2025-03-21  9:54 ` [PATCH v4 11/11] fbdev: Remove constants of unused events Thomas Zimmermann
2025-04-10  9:39 ` [PATCH v4 00/11] backlight, lcd, led: Remove fbdev dependencies Lee Jones
2025-04-10  9:41   ` Lee Jones
2025-04-15 17:27 ` [GIT PULL] Immutable branch between Backlight, fbdev and LEDs for the v6.16 merge window Lee Jones

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=20250321095517.313713-8-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.vetter@ffwll.ch \
    --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).