Commit 4f55aa85 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull fbdev updates from Helge Deller:

 - Allow console fonts up to 64x128 pixels (Samuel Thibault)

 - Prevent division-by-zero in fb monitor code (Roman Smirnov)

 - Drop Renesas ARM platforms from Mobile LCDC framebuffer driver (Geert
   Uytterhoeven)

 - Various code cleanups in viafb, uveafb and mb862xxfb drivers by
   Aleksandr Burakov, Li Zhijian and Michael Ellerman

* tag 'fbdev-for-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev:
  fbdev: panel-tpo-td043mtea1: Convert sprintf() to sysfs_emit()
  fbmon: prevent division by zero in fb_videomode_from_videomode()
  fbcon: Increase maximum font width x height to 64 x 128
  fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2
  fbdev: mb862xxfb: Fix defined but not used error
  fbdev: uvesafb: Convert sprintf/snprintf to sysfs_emit
  fbdev: Restrict FB_SH_MOBILE_LCDC to SuperH
parents 4073195a 763865fe
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -252,7 +252,7 @@ static int __init efi_earlycon_setup(struct earlycon_device *device,
	if (si->lfb_depth != 32)
		return -ENODEV;

	font = get_default_font(xres, yres, -1, -1);
	font = get_default_font(xres, yres, NULL, NULL);
	if (!font)
		return -ENODEV;

+1 −1
Original line number Diff line number Diff line
@@ -1523,7 +1523,7 @@ config FB_FSL_DIU
config FB_SH_MOBILE_LCDC
	tristate "SuperH Mobile LCDC framebuffer support"
	depends on FB && HAVE_CLK && HAS_IOMEM
	depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
	depends on SUPERH || COMPILE_TEST
	depends on FB_DEVICE
	select FB_BACKLIGHT
	select FB_DEFERRED_IO
+11 −4
Original line number Diff line number Diff line
@@ -622,8 +622,13 @@ static int arkfb_set_par(struct fb_info *info)
		info->tileops = NULL;

		/* in 4bpp supports 8p wide tiles only, any tiles otherwise */
		info->pixmap.blit_x = (bpp == 4) ? (1 << (8 - 1)) : (~(u32)0);
		info->pixmap.blit_y = ~(u32)0;
		if (bpp == 4) {
			bitmap_zero(info->pixmap.blit_x, FB_MAX_BLIT_WIDTH);
			set_bit(8 - 1, info->pixmap.blit_x);
		} else {
			bitmap_fill(info->pixmap.blit_x, FB_MAX_BLIT_WIDTH);
		}
		bitmap_fill(info->pixmap.blit_y, FB_MAX_BLIT_HEIGHT);

		offset_value = (info->var.xres_virtual * bpp) / 64;
		screen_size = info->var.yres_virtual * info->fix.line_length;
@@ -635,8 +640,10 @@ static int arkfb_set_par(struct fb_info *info)
		info->tileops = &arkfb_tile_ops;

		/* supports 8x16 tiles only */
		info->pixmap.blit_x = 1 << (8 - 1);
		info->pixmap.blit_y = 1 << (16 - 1);
		bitmap_zero(info->pixmap.blit_x, FB_MAX_BLIT_WIDTH);
		set_bit(8 - 1, info->pixmap.blit_x);
		bitmap_zero(info->pixmap.blit_y, FB_MAX_BLIT_HEIGHT);
		set_bit(16 - 1, info->pixmap.blit_y);

		offset_value = info->var.xres_virtual / 16;
		screen_size = (info->var.xres_virtual * info->var.yres_virtual) / 64;
+9 −7
Original line number Diff line number Diff line
@@ -2479,12 +2479,12 @@ static int fbcon_set_font(struct vc_data *vc, const struct console_font *font,
	    h > FBCON_SWAP(info->var.rotate, info->var.yres, info->var.xres))
		return -EINVAL;

	if (font->width > 32 || font->height > 32)
	if (font->width > FB_MAX_BLIT_WIDTH || font->height > FB_MAX_BLIT_HEIGHT)
		return -EINVAL;

	/* Make sure drawing engine can handle the font */
	if (!(info->pixmap.blit_x & BIT(font->width - 1)) ||
	    !(info->pixmap.blit_y & BIT(font->height - 1)))
	if (!test_bit(font->width - 1, info->pixmap.blit_x) ||
	    !test_bit(font->height - 1, info->pixmap.blit_y))
		return -EINVAL;

	/* Make sure driver can handle the font length */
@@ -3050,8 +3050,8 @@ void fbcon_get_requirement(struct fb_info *info,
			vc = vc_cons[i].d;
			if (vc && vc->vc_mode == KD_TEXT &&
			    info->node == con2fb_map[i]) {
				caps->x |= 1 << (vc->vc_font.width - 1);
				caps->y |= 1 << (vc->vc_font.height - 1);
				set_bit(vc->vc_font.width - 1, caps->x);
				set_bit(vc->vc_font.height - 1, caps->y);
				charcnt = vc->vc_font.charcount;
				if (caps->len < charcnt)
					caps->len = charcnt;
@@ -3062,8 +3062,10 @@ void fbcon_get_requirement(struct fb_info *info,

		if (vc && vc->vc_mode == KD_TEXT &&
		    info->node == con2fb_map[fg_console]) {
			caps->x = 1 << (vc->vc_font.width - 1);
			caps->y = 1 << (vc->vc_font.height - 1);
			bitmap_zero(caps->x, FB_MAX_BLIT_WIDTH);
			set_bit(vc->vc_font.width - 1, caps->x);
			bitmap_zero(caps->y, FB_MAX_BLIT_HEIGHT);
			set_bit(vc->vc_font.height - 1, caps->y);
			caps->len = vc->vc_font.charcount;
		}
	}
+6 −6
Original line number Diff line number Diff line
@@ -212,8 +212,8 @@ static int fb_check_caps(struct fb_info *info, struct fb_var_screeninfo *var,
	fbcon_get_requirement(info, &caps);
	info->fbops->fb_get_caps(info, &fbcaps, var);

	if (((fbcaps.x ^ caps.x) & caps.x) ||
	    ((fbcaps.y ^ caps.y) & caps.y) ||
	if (!bitmap_subset(caps.x, fbcaps.x, FB_MAX_BLIT_WIDTH) ||
	    !bitmap_subset(caps.y, fbcaps.y, FB_MAX_BLIT_HEIGHT) ||
	    (fbcaps.len < caps.len))
		err = -EINVAL;

@@ -420,11 +420,11 @@ static int do_register_framebuffer(struct fb_info *fb_info)
	}
	fb_info->pixmap.offset = 0;

	if (!fb_info->pixmap.blit_x)
		fb_info->pixmap.blit_x = ~(u32)0;
	if (bitmap_empty(fb_info->pixmap.blit_x, FB_MAX_BLIT_WIDTH))
		bitmap_fill(fb_info->pixmap.blit_x, FB_MAX_BLIT_WIDTH);

	if (!fb_info->pixmap.blit_y)
		fb_info->pixmap.blit_y = ~(u32)0;
	if (bitmap_empty(fb_info->pixmap.blit_y, FB_MAX_BLIT_HEIGHT))
		bitmap_fill(fb_info->pixmap.blit_y, FB_MAX_BLIT_HEIGHT);

	if (!fb_info->modelist.prev || !fb_info->modelist.next)
		INIT_LIST_HEAD(&fb_info->modelist);
Loading