1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3 * video commands
4 *
5 * Copyright 2022 Google LLC
6 * Written by Simon Glass <sjg@chromium.org>
7 */
8
9 #include <common.h>
10 #include <command.h>
11 #include <dm.h>
12 #include <video.h>
13 #include <video_console.h>
14
do_video_setcursor(struct cmd_tbl * cmdtp,int flag,int argc,char * const argv[])15 static int do_video_setcursor(struct cmd_tbl *cmdtp, int flag, int argc,
16 char *const argv[])
17 {
18 unsigned int col, row;
19 struct udevice *dev;
20
21 if (argc != 3)
22 return CMD_RET_USAGE;
23
24 if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
25 return CMD_RET_FAILURE;
26 col = dectoul(argv[1], NULL);
27 row = dectoul(argv[2], NULL);
28 vidconsole_position_cursor(dev, col, row);
29
30 return 0;
31 }
32
do_video_puts(struct cmd_tbl * cmdtp,int flag,int argc,char * const argv[])33 static int do_video_puts(struct cmd_tbl *cmdtp, int flag, int argc,
34 char *const argv[])
35 {
36 struct udevice *dev;
37 int ret;
38
39 if (argc != 2)
40 return CMD_RET_USAGE;
41
42 if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
43 return CMD_RET_FAILURE;
44 ret = vidconsole_put_string(dev, argv[1]);
45 if (!ret)
46 ret = video_sync(dev->parent, false);
47
48 return ret ? CMD_RET_FAILURE : 0;
49 }
50
51 U_BOOT_CMD(
52 setcurs, 3, 1, do_video_setcursor,
53 "set cursor position within screen",
54 " <col> <row> in character"
55 );
56
57 U_BOOT_CMD(
58 lcdputs, 2, 1, do_video_puts,
59 "print string on video framebuffer",
60 " <string>"
61 );
62