From: Simon Glass <sjg@chromium.org>
Most of this function deals with uclass data, so move it into the
uclass. This will allow truetype to use it too.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
drivers/video/console_core.c | 18 +-----------------
drivers/video/vidconsole-uclass.c | 24 ++++++++++++++++++++++++
include/video_console.h | 10 ++++++++++
3 files changed, 35 insertions(+), 17 deletions(-)
@@ -21,25 +21,9 @@
static int console_set_font(struct udevice *dev, struct video_fontdata *fontdata)
{
struct console_simple_priv *priv = dev_get_priv(dev);
- struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev);
- struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
-
- debug("console_simple: setting %s font\n", fontdata->name);
- debug("width: %d\n", fontdata->width);
- debug("byte width: %d\n", fontdata->byte_width);
- debug("height: %d\n", fontdata->height);
priv->fontdata = fontdata;
- vc_priv->x_charsize = fontdata->width;
- vc_priv->y_charsize = fontdata->height;
- if (vid_priv->rot % 2) {
- vc_priv->cols = vid_priv->ysize / fontdata->width;
- vc_priv->rows = vid_priv->xsize / fontdata->height;
- vc_priv->xsize_frac = VID_TO_POS(vid_priv->ysize);
- } else {
- vc_priv->cols = vid_priv->xsize / fontdata->width;
- vc_priv->rows = vid_priv->ysize / fontdata->height;
- }
+ vidconsole_set_bitmap_font(dev, fontdata);
return 0;
}
@@ -812,3 +812,27 @@ void vidconsole_set_quiet(struct udevice *dev, bool quiet)
priv->quiet = quiet;
}
+
+void vidconsole_set_bitmap_font(struct udevice *dev,
+ struct video_fontdata *fontdata)
+{
+ struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev);
+ struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
+
+ log_debug("console_simple: setting %s font\n", fontdata->name);
+ log_debug("width: %d\n", fontdata->width);
+ log_debug("byte width: %d\n", fontdata->byte_width);
+ log_debug("height: %d\n", fontdata->height);
+
+ vc_priv->x_charsize = fontdata->width;
+ vc_priv->y_charsize = fontdata->height;
+ if (vid_priv->rot % 2) {
+ vc_priv->cols = vid_priv->ysize / fontdata->width;
+ vc_priv->rows = vid_priv->xsize / fontdata->height;
+ vc_priv->xsize_frac = VID_TO_POS(vid_priv->ysize);
+ } else {
+ vc_priv->cols = vid_priv->xsize / fontdata->width;
+ vc_priv->rows = vid_priv->ysize / fontdata->height;
+ /* xsize_frac is set in vidconsole_pre_probe() */
+ }
+}
@@ -10,6 +10,7 @@
#include <video.h>
struct abuf;
+struct video_fontdata;
struct video_priv;
#define VID_FRAC_DIV 256
@@ -603,4 +604,13 @@ int vidconsole_get_font_size(struct udevice *dev, const char **name, uint *sizep
*/
void vidconsole_set_quiet(struct udevice *dev, bool quiet);
+/**
+ * vidconsole_set_bitmap_font() - prepare vidconsole for chosen bitmap font
+ *
+ * @dev vidconsole device
+ * @fontdata pointer to font data struct
+ */
+void vidconsole_set_bitmap_font(struct udevice *dev,
+ struct video_fontdata *fontdata);
+
#endif