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 15static 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 27static 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} 51static 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 82U_BOOT_LONGHELP(font, 83 "list - list available fonts\n" 84 "font select <name> [<size>] - select font to use\n" 85 "font size <size> - select font size to"); 86 87U_BOOT_CMD_WITH_SUBCMDS(font, "Fonts", font_help_text, 88 U_BOOT_SUBCMD_MKENT(list, 1, 1, do_font_list), 89 U_BOOT_SUBCMD_MKENT(select, 3, 1, do_font_select), 90 U_BOOT_SUBCMD_MKENT(size, 2, 1, do_font_size)); 91