Message ID | 39a57338-18ac-c64f-1cf1-70a5f905990a@national.shitposting.agency (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Pieter, On Wed, Dec 20, 2017 at 1:24 AM, Pieter "PoroCYon" Sluys <pcy@national.shitposting.agency> wrote: > 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 for your patch! This bug was introduced in 2002, when converting the driver to the new internal API. Please add your "Signed-off-by", cfr. Documentation/process/submitting-patches.rst. > --- a/drivers/video/fbdev/vfb.c > +++ b/drivers/video/fbdev/vfb.c > @@ -239,8 +239,25 @@ 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 2: > + case 4: You can drop the tests for 2 and 4, as these are no longer used by the driver. With the above fixed: Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- drivers/video/fbdev/vfb.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/video/fbdev/vfb.c b/drivers/video/fbdev/vfb.c index da653a080394..6e866fbaab8a 100644 --- a/drivers/video/fbdev/vfb.c +++ b/drivers/video/fbdev/vfb.c @@ -239,8 +239,25 @@ 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 2: + case 4: + 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; } @@ -450,6 +467,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.15.1