]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
fbdev: Send old blank state in FB_EVENT_BLANK
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 21 Mar 2025 09:53:56 +0000 (10:53 +0100)
committerLee Jones <lee@kernel.org>
Thu, 10 Apr 2025 09:38:59 +0000 (10:38 +0100)
The event FB_EVENT_BLANK sends the new blank state in the event's
data field. Also send the old state. It's an additional field in the
data array; existing receivers won't notice the difference.

The backlight subsystem currently tracks blank state per display per
backlight. That is not optimal as it ties backlight code to fbdev. A
subsystem should not track internal state of another subsystem. With
both, new and old, blank state in FB_EVENT_BLANK, the backlight code
will not require its own state tracker any longer.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
Link: https://lore.kernel.org/r/20250321095517.313713-4-tzimmermann@suse.de
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/video/fbdev/core/fbmem.c

index 5d1529d300b757167206e29816611aadc4752afd..9650b641d8e84765fa903774d4d4bfeaa5c73fa6 100644 (file)
@@ -343,6 +343,7 @@ int fb_blank(struct fb_info *info, int blank)
 {
        int old_blank = info->blank;
        struct fb_event event;
+       int data[2];
        int ret;
 
        if (!info->fbops->fb_blank)
@@ -351,8 +352,10 @@ int fb_blank(struct fb_info *info, int blank)
        if (blank > FB_BLANK_POWERDOWN)
                blank = FB_BLANK_POWERDOWN;
 
+       data[0] = blank;
+       data[1] = old_blank;
        event.info = info;
-       event.data = &blank;
+       event.data = data;
 
        info->blank = blank;