]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fbdev: vga16fb: fix orig_video_isVGA confusion
authorZsolt Kajtar <soci@c64.rulez.org>
Sat, 18 Jan 2025 10:38:56 +0000 (11:38 +0100)
committerHelge Deller <deller@gmx.de>
Sun, 19 Jan 2025 21:33:52 +0000 (22:33 +0100)
At some point the orig_video_isVGA field of screen_info was repurposed
for video type. Using it directly for video type check is unsafe as it can
still mean yes (1) or no-output (0) in certain configurations. I had one of those.

Signed-off-by: Zsolt Kajtar <soci@c64.rulez.org>
Signed-off-by: Helge Deller <deller@gmx.de>
drivers/video/fbdev/vga16fb.c

index fce0f5db7ba3e5d57c3acf662c2295632859f3b7..eedab14c7d5118f8e0697d6eee8b53db078d0dc4 100644 (file)
@@ -185,9 +185,10 @@ static inline void setindex(int index)
 /* Check if the video mode is supported by the driver */
 static inline int check_mode_supported(const struct screen_info *si)
 {
+       unsigned int type = screen_info_video_type(si);
+
        /* only EGA and VGA in 16 color graphic mode are supported */
-       if (si->orig_video_isVGA != VIDEO_TYPE_EGAC &&
-           si->orig_video_isVGA != VIDEO_TYPE_VGAC)
+       if (type != VIDEO_TYPE_EGAC && type != VIDEO_TYPE_VGAC)
                return -ENODEV;
 
        if (si->orig_video_mode != 0x0D &&      /* 320x200/4 (EGA) */
@@ -1338,7 +1339,7 @@ static int vga16fb_probe(struct platform_device *dev)
        printk(KERN_INFO "vga16fb: mapped to 0x%p\n", info->screen_base);
        par = info->par;
 
-       par->isVGA = si->orig_video_isVGA == VIDEO_TYPE_VGAC;
+       par->isVGA = screen_info_video_type(si) == VIDEO_TYPE_VGAC;
        par->palette_blanked = 0;
        par->vesa_blanked = 0;