lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 3.18 052/102] vfb: fix video mode and line_length being set when loaded
    Date
    From: "Pieter \\\"PoroCYon\\\" Sluys" <pcy@national.shitposting.agency>

    [ Upstream commit 7b9faf5df0ac495a1a3d7cdb64921c179f9008ac ]

    Currently, when loading the vfb module, the newly created fbdev
    has a line_length of 0, and its video mode would be PSEUDOCOLOR
    regardless of color depth. (The former could be worked around by
    calling the FBIOPUT_VSCREENINFO ioctl with having the FBACTIVIATE_FORCE
    flag set.) This patch automatically sets the line_length correctly,
    and the video mode is derived from the bit depth now as well.

    Thanks to Geert Uytterhoeven for confirming the bug and helping me with
    the patch.

    Output of `fbset -i' before the patch:
    mode "1366x768-60"
    # D: 72.432 MHz, H: 47.403 kHz, V: 60.004 Hz
    geometry 1366 768 1366 768 32
    timings 13806 120 10 14 3 32 5
    rgba 8/0,8/8,8/16,8/24
    endmode

    Frame buffer device information:
    Name : Virtual FB
    Address : 0xffffaa1405d85000
    Size : 4196352
    Type : PACKED PIXELS
    Visual : PSEUDOCOLOR
    XPanStep : 1
    YPanStep : 1
    YWrapStep : 1
    LineLength : 0 <-- note this
    Accelerator : No

    After:
    mode "1366x768-60"
    # D: 72.432 MHz, H: 47.403 kHz, V: 60.004 Hz
    geometry 1366 768 1366 768 32
    timings 13806 120 10 14 3 32 5
    rgba 8/0,8/8,8/16,8/24
    endmode

    Frame buffer device information:
    Name : Virtual FB
    Address : 0xffffaa1405d85000
    Size : 4196352
    Type : PACKED PIXELS
    Visual : TRUECOLOR
    XPanStep : 1
    YPanStep : 1
    YWrapStep : 1
    LineLength : 5464
    Accelerator : No

    Signed-off-by: "Pieter \"PoroCYon\" Sluys" <pcy@national.shitposting.agency>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    [b.zolnierkie: minor fixups]
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/video/fbdev/vfb.c | 17 +++++++++++++++++
    1 file changed, 17 insertions(+)

    diff --git a/drivers/video/fbdev/vfb.c b/drivers/video/fbdev/vfb.c
    index 70a897b1e458..146cc3516f61 100644
    --- a/drivers/video/fbdev/vfb.c
    +++ b/drivers/video/fbdev/vfb.c
    @@ -284,8 +284,23 @@ static int vfb_check_var(struct fb_var_screeninfo *var,
    */
    static int vfb_set_par(struct fb_info *info)
    {
    + switch (info->var.bits_per_pixel) {
    + case 1:
    + info->fix.visual = FB_VISUAL_MONO01;
    + break;
    + case 8:
    + info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
    + break;
    + case 16:
    + case 24:
    + case 32:
    + info->fix.visual = FB_VISUAL_TRUECOLOR;
    + break;
    + }
    +
    info->fix.line_length = get_line_length(info->var.xres_virtual,
    info->var.bits_per_pixel);
    +
    return 0;
    }

    @@ -526,6 +541,8 @@ static int vfb_probe(struct platform_device *dev)
    goto err2;
    platform_set_drvdata(dev, info);

    + vfb_set_par(info);
    +
    fb_info(info, "Virtual frame buffer device, using %ldK of video memory\n",
    videomemorysize >> 10);
    return 0;
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-19 17:40    [W:4.074 / U:0.684 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site