@@ -336,11 +336,10 @@ int console_simple_get_font(struct udevice *dev, int seq, struct vidfont_info *i
return info->name ? 0 : -ENOENT;
}
-int console_fixed_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp,
- struct video_fontdata *fontdata)
+int console_fixed_putc_xy(struct udevice *dev, void *vctx, uint x_frac, uint y,
+ int cp, struct video_fontdata *fontdata)
{
- struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev);
- struct vidconsole_ctx *ctx = vidconsole_ctx_from_priv(vc_priv);
+ struct vidconsole_ctx *ctx = vctx;
struct udevice *vid = dev->parent;
struct video_priv *vid_priv = dev_get_uclass_priv(vid);
int pbytes = VNBYTES(vid_priv->bpix);
@@ -81,9 +81,11 @@ static int console_move_rows(struct udevice *dev, uint rowdst,
int console_normal_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp)
{
+ struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev);
struct console_simple_priv *priv = dev_get_priv(dev);
- return console_fixed_putc_xy(dev, x_frac, y, cp, priv->fontdata);
+ return console_fixed_putc_xy(dev, vidconsole_ctx_from_priv(vc_priv),
+ x_frac, y, cp, priv->fontdata);
}
static __maybe_unused int console_get_cursor_info(struct udevice *dev)
@@ -417,7 +417,8 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y,
/* Use fixed font if selected */
if (ctx->cur_fontdata)
- return console_fixed_putc_xy(dev, x, y, cp, ctx->cur_fontdata);
+ return console_fixed_putc_xy(dev, &ctx->com, x, y, cp,
+ ctx->cur_fontdata);
/* Reset scratch buffer for this character */
stbtt_scratch_reset(&priv->scratch);
@@ -198,14 +198,15 @@ int console_normal_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp);
* Fixed font putc_xy function that can be called with explicit font data
*
* @param dev console device
+ * @param vctx vidconsole context to use (cannot be NULL)
* @param x_frac fractional X position
* @param y Y position in pixels
* @param cp Unicode code point
* @param fontdata font data to use for rendering
* @returns width in fractional pixels, or -ve on error
*/
-int console_fixed_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp,
- struct video_fontdata *fontdata);
+int console_fixed_putc_xy(struct udevice *dev, void *vctx, uint x_frac, uint y,
+ int cp, struct video_fontdata *fontdata);
/**
* Internal function to convert Unicode code points to code page 437.