]> git.ipfire.org Git - thirdparty/u-boot.git/blob - drivers/video/vidconsole_internal.h
video console: allow font size configuration at runtime
[thirdparty/u-boot.git] / drivers / video / vidconsole_internal.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3 * Copyright (c) 2015 Google, Inc
4 * (C) Copyright 2015
5 * Bernecker & Rainer Industrieelektronik GmbH - http://www.br-automation.com
6 * (C) Copyright 2023 Dzmitry Sankouski <dsankouski@gmail.com>
7 */
8
9 #define FLIPPED_DIRECTION 1
10 #define NORMAL_DIRECTION 0
11
12 /**
13 * struct console_simple_priv - Private data for this driver
14 *
15 * @video_fontdata font graphical representation data
16 */
17 struct console_simple_priv {
18 struct video_fontdata *fontdata;
19 };
20
21 /**
22 * Checks if bits per pixel supported.
23 *
24 * @param bpix framebuffer bits per pixel.
25 *
26 * @returns 0, if supported, or else -ENOSYS.
27 */
28 int check_bpix_support(int bpix);
29
30 /**
31 * Fill 1 pixel in framebuffer, and go to next one.
32 *
33 * @param dstp a pointer to pointer to framebuffer.
34 * @param value value to write to framebuffer.
35 * @param pbytes framebuffer bytes per pixel.
36 * @param step framebuffer pointer increment. Usually is equal to pbytes,
37 * and may be negative to control filling direction.
38 */
39 void fill_pixel_and_goto_next(void **dstp, u32 value, int pbytes, int step);
40
41 /**
42 * Fills 1 character in framebuffer vertically. Vertically means we're filling char font data rows
43 * across the lines.
44 *
45 * @param pfont a pointer to character font data.
46 * @param line a pointer to pointer to framebuffer. It's a point for upper left char corner
47 * @param vid_priv driver private data.
48 * @fontdata font graphical representation data
49 * @param direction controls character orientation. Can be normal or flipped.
50 * When normal: When flipped:
51 *|-----------------------------------------------|
52 *| line stepping | |
53 *| | | stepping -> |
54 *| * | | * * * |
55 *| * * v | * |
56 *| * | * |
57 *| * | * * ^ |
58 *| * * * | * | |
59 *| | | |
60 *| stepping -> | line stepping |
61 *|---!!we're starting from upper left char corner|
62 *|-----------------------------------------------|
63 *
64 * @returns 0, if success, or else error code.
65 */
66 int fill_char_vertically(uchar *pfont, void **line, struct video_priv *vid_priv,
67 struct video_fontdata *fontdata, bool direction);
68
69 /**
70 * Fills 1 character in framebuffer horizontally.
71 * Horizontally means we're filling char font data columns across the lines.
72 *
73 * @param pfont a pointer to character font data.
74 * @param line a pointer to pointer to framebuffer. It's a point for upper left char corner
75 * @param vid_priv driver private data.
76 * @fontdata font graphical representation data
77 * @param direction controls character orientation. Can be normal or flipped.
78 * When normal: When flipped:
79 *|-----------------------------------------------|
80 *| * | line stepping |
81 *| ^ * * * * * | | |
82 *| | * * | v * * |
83 *| | | * * * * * |
84 *| line stepping | * |
85 *| | |
86 *| stepping -> | <- stepping |
87 *|---!!we're starting from upper left char corner|
88 *|-----------------------------------------------|
89 *
90 * @returns 0, if success, or else error code.
91 */
92 int fill_char_horizontally(uchar *pfont, void **line, struct video_priv *vid_priv,
93 struct video_fontdata *fontdata, bool direction);
94
95 /**
96 * console probe function.
97 *
98 * @param dev a pointer to device.
99 *
100 * @returns 0, if success, or else error code.
101 */
102 int console_probe(struct udevice *dev);
103
104 /**
105 * Internal function to be used in as ops.
106 * See details in video_console.h get_font_size function
107 **/
108 const char *console_simple_get_font_size(struct udevice *dev, uint *sizep);
109
110 /**
111 * Internal function to be used in as ops.
112 * See details in video_console.h get_font function
113 **/
114 int console_simple_get_font(struct udevice *dev, int seq, struct vidfont_info *info);
115
116 /**
117 * Internal function to be used in as ops.
118 * See details in video_console.h select_font function
119 **/
120 int console_simple_select_font(struct udevice *dev, const char *name, uint size);