[PATCH 0/5] Preparation work for using font_desc in vc_data

Peilin Ye
2020-10-27T16:30:41Z

Hi Daniel, Hi Greg, Hi all,

We are planning to use `font_desc` instead of `console_font` in `vc_data`,
and this is just some prep work for it. It doesn't do much, but at least
it removes two "FIXME"s in fbcon.c :)

Peilin Ye (5):
[1/5] fbdev/atafb: Remove unused extern variables

Searching for `fontdata` gave me this in fbdev/atafb.c:

extern unsigned char fontdata_8x8[];
extern unsigned char fontdata_8x16[];

...which freaked me out, since in 6735b4632def ("Fonts: Support
FONT_EXTRA_WORDS macros for built-in fonts") I changed them from char
arrays to structures, in lib/fonts/. Fortunately it turns out these
extern variables have nothing to do with lib/fonts/, and are not being
used anywhere, so remove them for less confusion.

m68k cross-compiled.

[2/5] Fonts: Make font size unsigned in font_desc

Our goal is to use `font_desc` "everywhere" in the kernel, and signed
`width` and `height` is inappropriate.

Also, change some printk() format identifiers in console/sticore.c from
`%d` to `%u`. parisc cross-compiled.

[3/5] Fonts: Add charcount field to font_desc

Add `unsigned int charcount` to `font_desc`, and update each of our 13
built-in fonts.

[4/5] fbcon: Avoid hard-coding built-in font charcount
[5/5] parisc/sticore: Avoid hard-coding built-in font charcount

Everyone (tty, fbcon, sticore, etc.) is assuming that all built-in fonts
have 256 characters, and is using hard-coded 256 or 255 everywhere.
These two patches removes some of them. [5/5] is parisc cross-compiled.

Now is a good time to review all find_font() and get_default_font()
callers:

drivers/media/pci/solo6x10/solo6x10-enc.c 133 const struct font_desc *vga = find_font("VGA8x16");
drivers/media/test-drivers/vimc/vimc-core.c 268 const struct font_desc *font = find_font("VGA8x16");
drivers/media/test-drivers/vivid/vivid-core.c 1928 const struct font_desc *font = find_font("VGA8x16");
drivers/usb/misc/sisusbvga/sisusb.c 2285 myfont = find_font("VGA8x16");
* These 4 only care about font VGA8x16, so let them be for now;

drivers/video/console/sticore.c 499 fbfont = find_font(fbfont_name);
drivers/video/console/sticore.c 501 fbfont = get_default_font(1024,768, ~(u32)0, ~(u32)0);
* Uses 255 and 256, (hopefully) cleaned up by [5/5];

drivers/video/fbdev/core/fbcon.c 999 if (!fontname[0] || !(font = find_font(fontname)))
drivers/video/fbdev/core/fbcon.c 1000 font = get_default_font(info->var.xres,
drivers/video/fbdev/core/fbcon.c 1078 if (!fontname[0] || !(font = find_font(fontname)))
drivers/video/fbdev/core/fbcon.c 1079 font = get_default_font(info->var.xres,
* Use 256, cleaned up by [4/5];

drivers/video/fbdev/core/fbcon.c 2548 else if (!(f = find_font(name)))
drivers/video/fbdev/core/fbcon.c 2546 f = get_default_font(info->var.xres, info->var.yres,
* Uses 256 but no easy fix. I'll clean this up after making
fbcon_do_set_font() pass a `font_desc` as parameter;

drivers/firmware/efi/earlycon.c 234 font = get_default_font(xres, yres, -1, -1);
* Does not care about charcount.

Thank you!
Peilin Ye

drivers/video/console/sticore.c | 10 +++++-----
drivers/video/fbdev/atafb.c | 8 --------
drivers/video/fbdev/core/fbcon.c | 5 ++---
include/linux/font.h | 3 ++-
lib/fonts/font_10x18.c | 1 +
lib/fonts/font_6x10.c | 1 +
lib/fonts/font_6x11.c | 1 +
lib/fonts/font_6x8.c | 1 +
lib/fonts/font_7x14.c | 1 +
lib/fonts/font_8x16.c | 1 +
lib/fonts/font_8x8.c | 1 +
lib/fonts/font_acorn_8x8.c | 1 +
lib/fonts/font_mini_4x6.c | 1 +
lib/fonts/font_pearl_8x8.c | 1 +
lib/fonts/font_sun12x22.c | 1 +
lib/fonts/font_sun8x16.c | 1 +
lib/fonts/font_ter16x32.c | 1 +
17 files changed, 22 insertions(+), 17 deletions(-)

--
2.25.1