Merge tag 'doc-2023-10-rc5-3' of https://source.denx.de/u-boot/custodians/u-boot-efi
[platform/kernel/u-boot.git] / cmd / font.c
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
15 static int do_font_list(struct cmd_tbl *cmdtp, int flag, int argc,
16                         char *const argv[])
17 {
18         struct udevice *dev;
19
20         if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
21                 return CMD_RET_FAILURE;
22         vidconsole_list_fonts(dev);
23
24         return 0;
25 }
26
27 static int do_font_select(struct cmd_tbl *cmdtp, int flag, int argc,
28                           char *const argv[])
29 {
30         struct udevice *dev;
31         const char *name;
32         uint size = 0;
33         int ret;
34
35         if (argc < 2)
36                 return CMD_RET_USAGE;
37
38         if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
39                 return CMD_RET_FAILURE;
40         name = argv[1];
41         if (argc == 3)
42                 size = dectoul(argv[2], NULL);
43         ret = vidconsole_select_font(dev, name, size);
44         if (ret) {
45                 printf("Failed (error %d)\n", ret);
46                 return CMD_RET_FAILURE;
47         }
48
49         return 0;
50 }
51 static int do_font_size(struct cmd_tbl *cmdtp, int flag, int argc,
52                         char *const argv[])
53 {
54         const char *font_name;
55         struct udevice *dev;
56         uint size;
57         int ret;
58
59         if (argc != 2)
60                 return CMD_RET_USAGE;
61
62         if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
63                 return CMD_RET_FAILURE;
64         ret = vidconsole_get_font_size(dev, &font_name, &size);
65         if (ret) {
66                 printf("Failed (error %d)\n", ret);
67                 return CMD_RET_FAILURE;
68         }
69
70         size = dectoul(argv[1], NULL);
71
72         ret = vidconsole_select_font(dev, font_name, size);
73         if (ret) {
74                 printf("Failed (error %d)\n", ret);
75                 return CMD_RET_FAILURE;
76         }
77
78         return 0;
79 }
80
81
82 #ifdef CONFIG_SYS_LONGHELP
83 static char font_help_text[] =
84         "list       - list available fonts\n"
85         "font select <name> [<size>] - select font to use\n"
86         "font size <size> - select font size to";
87 #endif
88
89 U_BOOT_CMD_WITH_SUBCMDS(font, "Fonts", font_help_text,
90         U_BOOT_SUBCMD_MKENT(list, 1, 1, do_font_list),
91         U_BOOT_SUBCMD_MKENT(select, 3, 1, do_font_select),
92         U_BOOT_SUBCMD_MKENT(size, 2, 1, do_font_size));