From aa1d19f1f96764e72155235ece22461599d0e7ac Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 18 Jun 2019 22:34:23 +0200 Subject: fonts: Fix coding style Fix indentation, spaces, and move EXPORT_SYMBOL line to the appropriate place as a preliminary work. No actual code change. Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- lib/fonts/fonts.c | 83 +++++++++++++++++++++++++++---------------------------- 1 file changed, 40 insertions(+), 43 deletions(-) (limited to 'lib') diff --git a/lib/fonts/fonts.c b/lib/fonts/fonts.c index 9969358a7af5..269a829fcbb7 100644 --- a/lib/fonts/fonts.c +++ b/lib/fonts/fonts.c @@ -25,51 +25,51 @@ static const struct font_desc *fonts[] = { #ifdef CONFIG_FONT_8x8 #undef NO_FONTS - &font_vga_8x8, + &font_vga_8x8, #endif #ifdef CONFIG_FONT_8x16 #undef NO_FONTS - &font_vga_8x16, + &font_vga_8x16, #endif #ifdef CONFIG_FONT_6x11 #undef NO_FONTS - &font_vga_6x11, + &font_vga_6x11, #endif #ifdef CONFIG_FONT_7x14 #undef NO_FONTS - &font_7x14, + &font_7x14, #endif #ifdef CONFIG_FONT_SUN8x16 #undef NO_FONTS - &font_sun_8x16, + &font_sun_8x16, #endif #ifdef CONFIG_FONT_SUN12x22 #undef NO_FONTS - &font_sun_12x22, + &font_sun_12x22, #endif #ifdef CONFIG_FONT_10x18 #undef NO_FONTS - &font_10x18, + &font_10x18, #endif #ifdef CONFIG_FONT_ACORN_8x8 #undef NO_FONTS - &font_acorn_8x8, + &font_acorn_8x8, #endif #ifdef CONFIG_FONT_PEARL_8x8 #undef NO_FONTS - &font_pearl_8x8, + &font_pearl_8x8, #endif #ifdef CONFIG_FONT_MINI_4x6 #undef NO_FONTS - &font_mini_4x6, + &font_mini_4x6, #endif #ifdef CONFIG_FONT_6x10 #undef NO_FONTS - &font_6x10, + &font_6x10, #endif #ifdef CONFIG_FONT_TER16x32 #undef NO_FONTS - &font_ter_16x32, + &font_ter_16x32, #endif }; @@ -90,16 +90,16 @@ static const struct font_desc *fonts[] = { * specified font. * */ - const struct font_desc *find_font(const char *name) { - unsigned int i; + unsigned int i; - for (i = 0; i < num_fonts; i++) - if (!strcmp(fonts[i]->name, name)) - return fonts[i]; - return NULL; + for (i = 0; i < num_fonts; i++) + if (!strcmp(fonts[i]->name, name)) + return fonts[i]; + return NULL; } +EXPORT_SYMBOL(find_font); /** @@ -116,44 +116,41 @@ const struct font_desc *find_font(const char *name) * chosen font. * */ - const struct font_desc *get_default_font(int xres, int yres, u32 font_w, u32 font_h) { - int i, c, cc; - const struct font_desc *f, *g; - - g = NULL; - cc = -10000; - for(i=0; ipref; + int i, c, cc; + const struct font_desc *f, *g; + + g = NULL; + cc = -10000; + for (i = 0; i < num_fonts; i++) { + f = fonts[i]; + c = f->pref; #if defined(__mc68000__) #ifdef CONFIG_FONT_PEARL_8x8 - if (MACH_IS_AMIGA && f->idx == PEARL8x8_IDX) - c = 100; + if (MACH_IS_AMIGA && f->idx == PEARL8x8_IDX) + c = 100; #endif #ifdef CONFIG_FONT_6x11 - if (MACH_IS_MAC && xres < 640 && f->idx == VGA6x11_IDX) - c = 100; + if (MACH_IS_MAC && xres < 640 && f->idx == VGA6x11_IDX) + c = 100; #endif #endif - if ((yres < 400) == (f->height <= 8)) - c += 1000; + if ((yres < 400) == (f->height <= 8)) + c += 1000; - if ((font_w & (1 << (f->width - 1))) && - (font_h & (1 << (f->height - 1)))) - c += 1000; + if ((font_w & (1 << (f->width - 1))) && + (font_h & (1 << (f->height - 1)))) + c += 1000; - if (c > cc) { - cc = c; - g = f; + if (c > cc) { + cc = c; + g = f; + } } - } - return g; + return g; } - -EXPORT_SYMBOL(find_font); EXPORT_SYMBOL(get_default_font); MODULE_AUTHOR("James Simmons "); -- cgit v1.2.3-59-g8ed1b From 73a649d2b98e25f4960b8081080c78695fea8bc7 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 18 Jun 2019 22:34:24 +0200 Subject: fonts: Use BUILD_BUG_ON() for checking empty font table We have a nice macro, and the check of emptiness of the font table can be done in a simpler way. Signed-off-by: Takashi Iwai Acked-by: Randy Dunlap Signed-off-by: Greg Kroah-Hartman --- lib/fonts/fonts.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/fonts/fonts.c b/lib/fonts/fonts.c index 269a829fcbb7..a8e31e9d6fc5 100644 --- a/lib/fonts/fonts.c +++ b/lib/fonts/fonts.c @@ -20,55 +20,41 @@ #endif #include -#define NO_FONTS - static const struct font_desc *fonts[] = { #ifdef CONFIG_FONT_8x8 -#undef NO_FONTS &font_vga_8x8, #endif #ifdef CONFIG_FONT_8x16 -#undef NO_FONTS &font_vga_8x16, #endif #ifdef CONFIG_FONT_6x11 -#undef NO_FONTS &font_vga_6x11, #endif #ifdef CONFIG_FONT_7x14 -#undef NO_FONTS &font_7x14, #endif #ifdef CONFIG_FONT_SUN8x16 -#undef NO_FONTS &font_sun_8x16, #endif #ifdef CONFIG_FONT_SUN12x22 -#undef NO_FONTS &font_sun_12x22, #endif #ifdef CONFIG_FONT_10x18 -#undef NO_FONTS &font_10x18, #endif #ifdef CONFIG_FONT_ACORN_8x8 -#undef NO_FONTS &font_acorn_8x8, #endif #ifdef CONFIG_FONT_PEARL_8x8 -#undef NO_FONTS &font_pearl_8x8, #endif #ifdef CONFIG_FONT_MINI_4x6 -#undef NO_FONTS &font_mini_4x6, #endif #ifdef CONFIG_FONT_6x10 -#undef NO_FONTS &font_6x10, #endif #ifdef CONFIG_FONT_TER16x32 -#undef NO_FONTS &font_ter_16x32, #endif }; @@ -94,6 +80,7 @@ const struct font_desc *find_font(const char *name) { unsigned int i; + BUILD_BUG_ON(!num_fonts); for (i = 0; i < num_fonts; i++) if (!strcmp(fonts[i]->name, name)) return fonts[i]; -- cgit v1.2.3-59-g8ed1b From dfd19a5004eff03755967086aa04254c3d91b8ec Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 18 Jun 2019 22:34:25 +0200 Subject: fonts: Prefer a bigger font for high resolution screens Although we may have multiple fonts in kernel, the small 8x16 font is chosen as default usually unless user specify the boot option. This is suboptimal for monitors with high resolutions. This patch tries to assign a bigger font for such a high resolution by calculating some penalty value. This won't change anything for a standard monitor like Full HD (1920x1080), but for a high res monitor like UHD 4K, a bigger font like TER16x32 will be chosen once when enabled in Kconfig. Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- lib/fonts/fonts.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/fonts/fonts.c b/lib/fonts/fonts.c index a8e31e9d6fc5..e7258d8c252b 100644 --- a/lib/fonts/fonts.c +++ b/lib/fonts/fonts.c @@ -106,7 +106,7 @@ EXPORT_SYMBOL(find_font); const struct font_desc *get_default_font(int xres, int yres, u32 font_w, u32 font_h) { - int i, c, cc; + int i, c, cc, res; const struct font_desc *f, *g; g = NULL; @@ -127,6 +127,11 @@ const struct font_desc *get_default_font(int xres, int yres, u32 font_w, if ((yres < 400) == (f->height <= 8)) c += 1000; + /* prefer a bigger font for high resolution */ + res = (xres / f->width) * (yres / f->height) / 1000; + if (res > 20) + c += 20 - res; + if ((font_w & (1 << (f->width - 1))) && (font_h & (1 << (f->height - 1)))) c += 1000; -- cgit v1.2.3-59-g8ed1b