Define access macros for font_data_t in fonts.c. Define struct font_data and declare most of the font symbols in the internal header font.h, where they can only be seen by the font code. Add config guards around font symbols.
Signed-off-by: Thomas Zimmermann <[email protected]> --- include/linux/font.h | 32 +++++------------------ lib/fonts/font.h | 52 ++++++++++++++++++++++++++++++++++++++ lib/fonts/font_10x18.c | 2 +- lib/fonts/font_6x10.c | 3 ++- lib/fonts/font_6x11.c | 2 +- lib/fonts/font_6x8.c | 3 ++- lib/fonts/font_7x14.c | 2 +- lib/fonts/font_8x16.c | 3 ++- lib/fonts/font_8x8.c | 2 +- lib/fonts/font_acorn_8x8.c | 2 +- lib/fonts/font_mini_4x6.c | 2 +- lib/fonts/font_pearl_8x8.c | 2 +- lib/fonts/font_sun12x22.c | 3 ++- lib/fonts/font_sun8x16.c | 3 ++- lib/fonts/font_ter10x18.c | 4 ++- lib/fonts/font_ter16x32.c | 4 ++- lib/fonts/fonts.c | 8 +++++- 17 files changed, 88 insertions(+), 41 deletions(-) create mode 100644 lib/fonts/font.h diff --git a/include/linux/font.h b/include/linux/font.h index 4ff956a1cd0a..6e9a4c93b47b 100644 --- a/include/linux/font.h +++ b/include/linux/font.h @@ -92,20 +92,12 @@ struct font_desc { #define FONT6x8_IDX 12 #define TER10x18_IDX 13 -extern const struct font_desc font_vga_8x8, - font_vga_8x16, - font_pearl_8x8, - font_vga_6x11, - font_7x14, - font_10x18, - font_sun_8x16, - font_sun_12x22, - font_acorn_8x8, - font_mini_4x6, - font_6x10, - font_ter_16x32, - font_6x8, - font_ter_10x18; +#if defined(CONFIG_FONT_8x8) +extern const struct font_desc font_vga_8x8; +#endif +#if defined(CONFIG_FONT_8x16) +extern const struct font_desc font_vga_8x16; +#endif /* Find a font with a specific name */ @@ -120,16 +112,4 @@ extern const struct font_desc *get_default_font(int xres, int yres, /* Max. length for the name of a predefined font */ #define MAX_FONT_NAME 32 -/* Extra word getters */ -#define REFCOUNT(fd) (((int *)(fd))[-1]) -#define FNTSIZE(fd) (((int *)(fd))[-2]) -#define FNTSUM(fd) (((int *)(fd))[-4]) - -#define FONT_EXTRA_WORDS 4 - -struct font_data { - unsigned int extra[FONT_EXTRA_WORDS]; - unsigned char data[]; -} __packed; - #endif /* _VIDEO_FONT_H */ diff --git a/lib/fonts/font.h b/lib/fonts/font.h new file mode 100644 index 000000000000..00f65a3da5c2 --- /dev/null +++ b/lib/fonts/font.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _LIB_FONTS_FONT_H +#define _LIB_FONTS_FONT_H + +#include <linux/font.h> + +#if defined(CONFIG_FONT_PEARL_8x8) +extern const struct font_desc font_pearl_8x8; +#endif +#if defined(CONFIG_FONT_6x11) +extern const struct font_desc font_vga_6x11; +#endif +#if defined(CONFIG_FONT_7x14) +extern const struct font_desc font_7x14; +#endif +#if defined(CONFIG_FONT_10x18) +extern const struct font_desc font_10x18; +#endif +#if defined(CONFIG_FONT_SUN8x16) +extern const struct font_desc font_sun_8x16; +#endif +#if defined(CONFIG_FONT_SUN12x22) +extern const struct font_desc font_sun_12x22; +#endif +#if defined(CONFIG_FONT_ACORN_8x8) +extern const struct font_desc font_acorn_8x8; +#endif +#if defined(CONFIG_FONT_MINI_4x6) +extern const struct font_desc font_mini_4x6; +#endif +#if defined(CONFIG_FONT_6x10) +extern const struct font_desc font_6x10; +#endif +#if defined(CONFIG_FONT_TER16x32) +extern const struct font_desc font_ter_16x32; +#endif +#if defined(CONFIG_FONT_6x8) +extern const struct font_desc font_6x8; +#endif +#if defined(CONFIG_FONT_TER10x18) +extern const struct font_desc font_ter_10x18; +#endif + +#define FONT_EXTRA_WORDS 4 + +struct font_data { + unsigned int extra[FONT_EXTRA_WORDS]; + unsigned char data[]; +} __packed; + +#endif diff --git a/lib/fonts/font_10x18.c b/lib/fonts/font_10x18.c index 5d940db626e7..10edebc4bb74 100644 --- a/lib/fonts/font_10x18.c +++ b/lib/fonts/font_10x18.c @@ -4,7 +4,7 @@ * by Jurriaan Kalkman 06-2005 * ********************************/ -#include <linux/font.h> +#include "font.h" #define FONTDATAMAX 9216 diff --git a/lib/fonts/font_6x10.c b/lib/fonts/font_6x10.c index e65df019e0d2..660d3a371b30 100644 --- a/lib/fonts/font_6x10.c +++ b/lib/fonts/font_6x10.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 -#include <linux/font.h> + +#include "font.h" #define FONTDATAMAX 2560 diff --git a/lib/fonts/font_6x11.c b/lib/fonts/font_6x11.c index bd76b3f6b635..671487ccc172 100644 --- a/lib/fonts/font_6x11.c +++ b/lib/fonts/font_6x11.c @@ -5,7 +5,7 @@ /* */ /**********************************************/ -#include <linux/font.h> +#include "font.h" #define FONTDATAMAX (11*256) diff --git a/lib/fonts/font_6x8.c b/lib/fonts/font_6x8.c index 06ace7792521..5811ee07f4d8 100644 --- a/lib/fonts/font_6x8.c +++ b/lib/fonts/font_6x8.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 -#include <linux/font.h> + +#include "font.h" #define FONTDATAMAX 2048 diff --git a/lib/fonts/font_7x14.c b/lib/fonts/font_7x14.c index a2f561c9fa04..0c7475d643c8 100644 --- a/lib/fonts/font_7x14.c +++ b/lib/fonts/font_7x14.c @@ -4,7 +4,7 @@ /* by Jurriaan Kalkman 05-2005 */ /**************************************/ -#include <linux/font.h> +#include "font.h" #define FONTDATAMAX 3584 diff --git a/lib/fonts/font_8x16.c b/lib/fonts/font_8x16.c index 06ae14088514..523e95c75569 100644 --- a/lib/fonts/font_8x16.c +++ b/lib/fonts/font_8x16.c @@ -5,9 +5,10 @@ /* */ /**********************************************/ -#include <linux/font.h> #include <linux/module.h> +#include "font.h" + #define FONTDATAMAX 4096 static const struct font_data fontdata_8x16 = { diff --git a/lib/fonts/font_8x8.c b/lib/fonts/font_8x8.c index 69570b8c31af..e5b697fc9675 100644 --- a/lib/fonts/font_8x8.c +++ b/lib/fonts/font_8x8.c @@ -5,7 +5,7 @@ /* */ /**********************************************/ -#include <linux/font.h> +#include "font.h" #define FONTDATAMAX 2048 diff --git a/lib/fonts/font_acorn_8x8.c b/lib/fonts/font_acorn_8x8.c index af5fa72aa8b7..36c51016769d 100644 --- a/lib/fonts/font_acorn_8x8.c +++ b/lib/fonts/font_acorn_8x8.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 /* Acorn-like font definition, with PC graphics characters */ -#include <linux/font.h> +#include "font.h" #define FONTDATAMAX 2048 diff --git a/lib/fonts/font_mini_4x6.c b/lib/fonts/font_mini_4x6.c index cc21dc70cfd1..dc919c160dde 100644 --- a/lib/fonts/font_mini_4x6.c +++ b/lib/fonts/font_mini_4x6.c @@ -39,7 +39,7 @@ __END__; MSBit to LSBit = left to right. */ -#include <linux/font.h> +#include "font.h" #define FONTDATAMAX 1536 diff --git a/lib/fonts/font_pearl_8x8.c b/lib/fonts/font_pearl_8x8.c index ae98ca17982e..2438b374acea 100644 --- a/lib/fonts/font_pearl_8x8.c +++ b/lib/fonts/font_pearl_8x8.c @@ -10,7 +10,7 @@ /* */ /**********************************************/ -#include <linux/font.h> +#include "font.h" #define FONTDATAMAX 2048 diff --git a/lib/fonts/font_sun12x22.c b/lib/fonts/font_sun12x22.c index 91daf5ab8b6b..2afbc144bea8 100644 --- a/lib/fonts/font_sun12x22.c +++ b/lib/fonts/font_sun12x22.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 -#include <linux/font.h> + +#include "font.h" #define FONTDATAMAX 11264 diff --git a/lib/fonts/font_sun8x16.c b/lib/fonts/font_sun8x16.c index 81bb4eeae04e..2b7b2d8e548a 100644 --- a/lib/fonts/font_sun8x16.c +++ b/lib/fonts/font_sun8x16.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 -#include <linux/font.h> + +#include "font.h" #define FONTDATAMAX 4096 diff --git a/lib/fonts/font_ter10x18.c b/lib/fonts/font_ter10x18.c index 80356e9d56c7..3f30b4a211ab 100644 --- a/lib/fonts/font_ter10x18.c +++ b/lib/fonts/font_ter10x18.c @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-2.0 -#include <linux/font.h> + #include <linux/module.h> +#include "font.h" + #define FONTDATAMAX 9216 static const struct font_data fontdata_ter10x18 = { diff --git a/lib/fonts/font_ter16x32.c b/lib/fonts/font_ter16x32.c index 5baedc573dd6..93616cffe642 100644 --- a/lib/fonts/font_ter16x32.c +++ b/lib/fonts/font_ter16x32.c @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-2.0 -#include <linux/font.h> + #include <linux/module.h> +#include "font.h" + #define FONTDATAMAX 16384 static const struct font_data fontdata_ter16x32 = { diff --git a/lib/fonts/fonts.c b/lib/fonts/fonts.c index 1830e6ae9c87..198aae869be2 100644 --- a/lib/fonts/fonts.c +++ b/lib/fonts/fonts.c @@ -13,7 +13,6 @@ */ #include <linux/container_of.h> -#include <linux/font.h> #include <linux/kd.h> #include <linux/module.h> #include <linux/overflow.h> @@ -26,12 +25,19 @@ #include <asm/setup.h> #endif +#include "font.h" + #define console_font_pitch(font) DIV_ROUND_UP((font)->width, 8) /* * Helpers for font_data_t */ +/* Extra word getters */ +#define REFCOUNT(fd) (((int *)(fd))[-1]) +#define FNTSIZE(fd) (((int *)(fd))[-2]) +#define FNTSUM(fd) (((int *)(fd))[-4]) + static struct font_data *to_font_data_struct(font_data_t *fd) { return container_of(fd, struct font_data, data[0]); -- 2.52.0
