@@ -79,7 +79,7 @@ int board_late_init(void)
display_options_get_banner(false, buf, sizeof(buf));
vidconsole_position_cursor(con, 0, 0);
- vidconsole_put_string(con, buf);
+ vidconsole_put_string(con, NULL, buf);
#endif
return 0;
}
@@ -181,14 +181,14 @@ int expo_test_render(struct expo *exp)
x = vid_priv->xsize - 18 * ctx->x_charsize;
y = 10;
vidconsole_set_cursor_pos(exp->cons, NULL, x, y);
- vidconsole_put_string(exp->cons, buf);
+ vidconsole_put_string(exp->cons, NULL, buf);
/* Display FPS on next line (only if non-zero) */
if (test->fps_last > 0) {
snprintf(buf, sizeof(buf), "fps %6d", test->fps_last);
y += ctx->y_charsize;
vidconsole_set_cursor_pos(exp->cons, NULL, x, y);
- vidconsole_put_string(exp->cons, buf);
+ vidconsole_put_string(exp->cons, NULL, buf);
}
/* Display average render time in milliseconds on next line */
@@ -197,7 +197,7 @@ int expo_test_render(struct expo *exp)
(test->render_avg_us % 1000) / 100);
y += ctx->y_charsize;
vidconsole_set_cursor_pos(exp->cons, NULL, x, y);
- vidconsole_put_string(exp->cons, buf);
+ vidconsole_put_string(exp->cons, NULL, buf);
/* Display average sync time in milliseconds on next line */
snprintf(buf, sizeof(buf), "sync %6lu.%01lums",
@@ -205,7 +205,7 @@ int expo_test_render(struct expo *exp)
(test->sync_avg_us % 1000) / 100);
y += ctx->y_charsize;
vidconsole_set_cursor_pos(exp->cons, NULL, x, y);
- vidconsole_put_string(exp->cons, buf);
+ vidconsole_put_string(exp->cons, NULL, buf);
/* Display average poll time in milliseconds on next line */
snprintf(buf, sizeof(buf), "poll %6lu.%01lums",
@@ -213,7 +213,7 @@ int expo_test_render(struct expo *exp)
(test->poll_avg_us % 1000) / 100);
y += ctx->y_charsize;
vidconsole_set_cursor_pos(exp->cons, NULL, x, y);
- vidconsole_put_string(exp->cons, buf);
+ vidconsole_put_string(exp->cons, NULL, buf);
return 0;
}
@@ -625,7 +625,7 @@ static void draw_string(struct udevice *cons, const char *str, int len,
for (i = 0; i < len; i++)
vidconsole_put_char(cons, NULL, '*');
} else {
- vidconsole_put_stringn(cons, str, len);
+ vidconsole_put_stringn(cons, NULL, str, len);
}
}
@@ -41,7 +41,7 @@ static int do_video_puts(struct cmd_tbl *cmdtp, int flag, int argc,
if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
return CMD_RET_FAILURE;
- ret = vidconsole_put_string(dev, argv[1]);
+ ret = vidconsole_put_string(dev, NULL, argv[1]);
if (!ret)
ret = video_sync(dev->parent, false);
@@ -89,7 +89,7 @@ static int do_video_write(struct cmd_tbl *cmdtp, int flag, int argc,
else
vidconsole_position_cursor(dev, col, row);
- ret = vidconsole_put_string(dev, argv[i + 1]);
+ ret = vidconsole_put_string(dev, NULL, argv[i + 1]);
if (ret)
return CMD_RET_FAILURE;
}
@@ -149,7 +149,7 @@ void splash_display_banner(void)
display_options_get_banner(false, buf, sizeof(buf));
vidconsole_position_cursor(dev, col, 1);
- vidconsole_put_string(dev, buf);
+ vidconsole_put_string(dev, NULL, buf);
vidconsole_position_cursor(dev, 0, row);
}
#endif /* CONFIG_VIDEO && !CONFIG_HIDE_LOGO_VERSION */
@@ -544,7 +544,8 @@ int vidconsole_put_char(struct udevice *dev, void *vctx, char ch)
return 0;
}
-int vidconsole_put_stringn(struct udevice *dev, const char *str, int maxlen)
+int vidconsole_put_stringn(struct udevice *dev, void *ctx, const char *str,
+ int maxlen)
{
const char *s, *end = NULL;
int ret;
@@ -552,7 +553,7 @@ int vidconsole_put_stringn(struct udevice *dev, const char *str, int maxlen)
if (maxlen != -1)
end = str + maxlen;
for (s = str; *s && (maxlen == -1 || s < end); s++) {
- ret = vidconsole_put_char(dev, NULL, *s);
+ ret = vidconsole_put_char(dev, ctx, *s);
if (ret)
return ret;
}
@@ -560,9 +561,9 @@ int vidconsole_put_stringn(struct udevice *dev, const char *str, int maxlen)
return 0;
}
-int vidconsole_put_string(struct udevice *dev, const char *str)
+int vidconsole_put_string(struct udevice *dev, void *ctx, const char *str)
{
- return vidconsole_put_stringn(dev, str, -1);
+ return vidconsole_put_stringn(dev, ctx, str, -1);
}
static void vidconsole_putc(struct stdio_dev *sdev, const char ch)
@@ -595,7 +596,7 @@ static void vidconsole_puts(struct stdio_dev *sdev, const char *s)
if (priv->quiet)
return;
- ret = vidconsole_put_string(dev, s);
+ ret = vidconsole_put_string(dev, NULL, s);
if (ret) {
#ifdef DEBUG
char str[30];
@@ -765,11 +765,13 @@ int vidconsole_put_char(struct udevice *dev, void *vctx, char ch);
* can be adjusted manually using vidconsole_position_cursor().
*
* @dev: Device to adjust
+ * @ctx: Vidconsole context, or NULL to use default
* @str: String to write
* @maxlen: Maximum chars to output, or -1 for all
* Return: 0 if OK, -ve on error
*/
-int vidconsole_put_stringn(struct udevice *dev, const char *str, int maxlen);
+int vidconsole_put_stringn(struct udevice *dev, void *ctx, const char *str,
+ int maxlen);
/**
* vidconsole_put_string() - Output a string to the current console position
@@ -782,10 +784,11 @@ int vidconsole_put_stringn(struct udevice *dev, const char *str, int maxlen);
* can be adjusted manually using vidconsole_position_cursor().
*
* @dev: Device to adjust
+ * @ctx: Vidconsole context, or NULL to use default
* @str: String to write
* Return: 0 if OK, -ve on error
*/
-int vidconsole_put_string(struct udevice *dev, const char *str);
+int vidconsole_put_string(struct udevice *dev, void *ctx, const char *str);
/**
* vidconsole_position_cursor() - Move the text cursor
@@ -343,7 +343,7 @@ static int dm_test_video_chars(struct unit_test_state *uts)
ut_assertok(video_get_nologo(uts, &dev));
ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con));
ut_assertok(vidconsole_select_font(con, "8x16", 0));
- vidconsole_put_string(con, test_string);
+ vidconsole_put_string(con, NULL, test_string);
ut_asserteq(466, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
@@ -370,18 +370,18 @@ static int dm_test_video_ansi(struct unit_test_state *uts)
ut_assertok(video_check_copy_fb(uts, dev));
/* test clear escape sequence: [2J */
- vidconsole_put_string(con, "A\tB\tC"ANSI_ESC"[2J");
+ vidconsole_put_string(con, NULL, "A\tB\tC" ANSI_ESC "[2J");
ut_asserteq(46, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
/* test set-cursor: [%d;%df */
- vidconsole_put_string(con, "abc"ANSI_ESC"[2;2fab"ANSI_ESC"[4;4fcd");
+ vidconsole_put_string(con, NULL, "abc" ANSI_ESC "[2;2fab" ANSI_ESC "[4;4fcd");
ut_asserteq(143, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
/* test colors (30-37 fg color, 40-47 bg color) */
- vidconsole_put_string(con, ANSI_ESC"[30;41mfoo"); /* black on red */
- vidconsole_put_string(con, ANSI_ESC"[33;44mbar"); /* yellow on blue */
+ vidconsole_put_string(con, NULL, ANSI_ESC "[30;41mfoo"); /* black on red */
+ vidconsole_put_string(con, NULL, ANSI_ESC "[33;44mbar"); /* yellow on blue */
ut_asserteq(272, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
@@ -770,8 +770,8 @@ static int dm_test_video_truetype(struct unit_test_state *uts)
ut_assertok(video_get_nologo(uts, &dev));
ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con));
- vidconsole_put_string(con, test_string);
- vidconsole_put_stringn(con, test_string, 30);
+ vidconsole_put_string(con, NULL, test_string);
+ vidconsole_put_stringn(con, NULL, test_string, 30);
ut_asserteq(13073, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
@@ -799,7 +799,7 @@ static int dm_test_video_truetype_scroll(struct unit_test_state *uts)
ut_assertok(video_get_nologo(uts, &dev));
ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con));
- vidconsole_put_string(con, test_string);
+ vidconsole_put_string(con, NULL, test_string);
ut_asserteq(34248, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
@@ -825,7 +825,7 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts)
ut_assertok(video_get_nologo(uts, &dev));
ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con));
- vidconsole_put_string(con, test_string);
+ vidconsole_put_string(con, NULL, test_string);
ut_asserteq(29310, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
@@ -862,9 +862,9 @@ static int dm_test_video_copy(struct unit_test_state *uts)
ut_assertok(video_bmp_display(dev, addr, 0, 0, false));
ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con));
- vidconsole_put_string(con, "\n\n\n\n\n");
- vidconsole_put_string(con, test_string);
- vidconsole_put_string(con, test_string);
+ vidconsole_put_string(con, NULL, "\n\n\n\n\n");
+ vidconsole_put_string(con, NULL, test_string);
+ vidconsole_put_string(con, NULL, test_string);
ut_asserteq(6884, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
@@ -888,8 +888,8 @@ static int dm_test_video_copy(struct unit_test_state *uts)
* ./u-boot -Tl
* ut dm dm_test_video_copy
*/
- vidconsole_put_string(con, test_string);
- vidconsole_put_string(con, test_string);
+ vidconsole_put_string(con, NULL, test_string);
+ vidconsole_put_string(con, NULL, test_string);
video_sync(dev, true);
ut_asserteq(7621, video_compress_fb(uts, dev, false));
ut_asserteq(7741, video_compress_fb(uts, dev, true));
@@ -925,21 +925,21 @@ static int dm_test_video_damage(struct unit_test_state *uts)
damage = &priv->damage;
vidconsole_position_cursor(con, 14, 10);
- vidconsole_put_string(con, test_string_2);
+ vidconsole_put_string(con, NULL, test_string_2);
ut_asserteq(449, damage->x0);
ut_asserteq(325, damage->y0);
ut_asserteq(661, damage->x1);
ut_asserteq(350, damage->y1);
vidconsole_position_cursor(con, 7, 5);
- vidconsole_put_string(con, test_string_1);
+ vidconsole_put_string(con, NULL, test_string_1);
ut_asserteq(225, damage->x0);
ut_asserteq(164, damage->y0);
ut_asserteq(661, damage->x1);
ut_asserteq(350, damage->y1);
vidconsole_position_cursor(con, 21, 15);
- vidconsole_put_string(con, test_string_3);
+ vidconsole_put_string(con, NULL, test_string_3);
ut_asserteq(225, damage->x0);
ut_asserteq(164, damage->y0);
ut_asserteq(1280, damage->x1);
@@ -1091,15 +1091,15 @@ static int dm_test_video_silence(struct unit_test_state *uts)
ut_unsilence_console(uts);
printf("message 1: console\n");
- vidconsole_put_string(con, "message 1: video\n");
+ vidconsole_put_string(con, NULL, "message 1: video\n");
vidconsole_set_quiet(con, true);
printf("second message: console\n");
- vidconsole_put_string(con, "second message: video\n");
+ vidconsole_put_string(con, NULL, "second message: video\n");
vidconsole_set_quiet(con, false);
printf("final message: console\n");
- vidconsole_put_string(con, "final message: video\n");
+ vidconsole_put_string(con, NULL, "final message: video\n");
ut_asserteq(3944, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
@@ -1162,15 +1162,15 @@ static int dm_test_video_font_switch(struct unit_test_state *uts)
ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con));
/* Start with TrueType font and write multi-line text */
- vidconsole_put_string(con, truetype_text);
+ vidconsole_put_string(con, NULL, truetype_text);
/* Switch to bitmap font */
ut_assertok(vidconsole_select_font(con, "8x16", 0));
- vidconsole_put_string(con, bitmap_text);
+ vidconsole_put_string(con, NULL, bitmap_text);
/* Switch back to TrueType font */
ut_assertok(vidconsole_select_font(con, NULL, 0));
- vidconsole_put_string(con, final_truetype_text);
+ vidconsole_put_string(con, NULL, final_truetype_text);
ut_asserteq(14892, video_compress_fb(uts, dev, false));
@@ -1332,7 +1332,7 @@ static int dm_test_video_manual_sync(struct unit_test_state *uts)
priv = dev_get_uclass_priv(dev);
/* Write some text and verify it appears in the framebuffer */
- vidconsole_put_string(con, "Test");
+ vidconsole_put_string(con, NULL, "Test");
ut_asserteq(118, video_compress_fb(uts, dev, false));
/* Sync to copy buffer before enabling manual-sync mode */
@@ -1343,7 +1343,7 @@ static int dm_test_video_manual_sync(struct unit_test_state *uts)
/* Clear and write new text - auto-sync should not happen */
video_clear(dev);
- vidconsole_put_string(con, "Manual Sync");
+ vidconsole_put_string(con, NULL, "Manual Sync");
/* should do nothing in manual-sync mode */
ut_assertok(video_sync(dev, false));
@@ -1377,7 +1377,7 @@ static int dm_test_video_manual_sync(struct unit_test_state *uts)
ut_assertok(video_check_copy_fb(uts, dev));
/* Write new text again */
- vidconsole_put_string(con, "Test2");
+ vidconsole_put_string(con, NULL, "Test2");
/* without VIDSYNC_FLUSH or COPY - should do nothing */
ut_assertok(video_manual_sync(dev, 0));