• Fredrik Noring's avatar
    fbdev: Distinguish between interlaced and progressive modes · c7c53dc8
    Fredrik Noring authored
    [ Upstream commit 1ba0a59c ]
    
    I discovered the problem when developing a frame buffer driver for the
    PlayStation 2 (not yet merged), using the following video modes for the
    PlayStation 3 in drivers/video/fbdev/ps3fb.c:
    
        }, {
            /* 1080if */
            "1080if", 50, 1920, 1080, 13468, 148, 484, 36, 4, 88, 5,
            FB_SYNC_BROADCAST, FB_VMODE_INTERLACED
        }, {
            /* 1080pf */
            "1080pf", 50, 1920, 1080, 6734, 148, 484, 36, 4, 88, 5,
            FB_SYNC_BROADCAST, FB_VMODE_NONINTERLACED
        },
    
    In ps3fb_probe, the mode_option module parameter is used with fb_find_mode
    but it can only select the interlaced variant of 1920x1080 since the loop
    matching the modes does not take the difference between interlaced and
    progressive modes into account.
    
    In short, without the patch, progressive 1920x1080 cannot be chosen as a
    mode_option parameter since fb_find_mode (falsely) thinks interlace is a
    perfect match.
    Signed-off-by: default avatarFredrik Noring <noring@nocrew.org>
    Cc: "Maciej W. Rozycki" <macro@linux-mips.org>
    [b.zolnierkie: updated patch description]
    Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c7c53dc8
modedb.c 37.5 KB