cmd: add clear screen 'cls' command

Add common clear screen command for configurations
CONFIG_DM_VIDEO, CONFIG_LCD and CONFIG_CFB_CONSOLE.

Remove the existing cls command implementation from
lcd.c code and activate the command for all boards
enabling CONFIG_LCD for compatibility reasons.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Tested-by: Patrick.Delaunay <patrick.delaunay@free.fr>
This commit is contained in:
Anatolij Gustschin 2018-12-01 10:47:20 +01:00
parent 06696ebe67
commit 4e92e60d35
4 changed files with 44 additions and 8 deletions

View File

@ -1380,6 +1380,14 @@ config CMD_CONITRACE
Enable the 'conitrace' command which displays the codes received
from the console input as hexadecimal numbers.
config CMD_CLS
bool "Enable clear screen command 'cls'"
depends on CFB_CONSOLE || DM_VIDEO || LCD || VIDEO
default y if LCD
help
Enable the 'cls' command which clears the screen contents
on video frame buffer.
config CMD_DISPLAY
bool "Enable the 'display' command, for character displays"
help

View File

@ -32,6 +32,7 @@ obj-$(CONFIG_CMD_BTRFS) += btrfs.o
obj-$(CONFIG_CMD_CACHE) += cache.o
obj-$(CONFIG_CMD_CBFS) += cbfs.o
obj-$(CONFIG_CMD_CLK) += clk.o
obj-$(CONFIG_CMD_CLS) += cls.o
obj-$(CONFIG_CMD_CONFIG) += config.o
obj-$(CONFIG_CMD_CONITRACE) += conitrace.o
obj-$(CONFIG_CMD_CONSOLE) += console.o

35
cmd/cls.c Normal file
View File

@ -0,0 +1,35 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2018
* DENX Software Engineering, Anatolij Gustschin <agust@denx.de>
*
* cls - clear screen command
*/
#include <common.h>
#include <command.h>
#include <dm.h>
#include <lcd.h>
#include <video.h>
static int do_video_clear(cmd_tbl_t *cmdtp, int flag, int argc,
char *const argv[])
{
#if defined(CONFIG_DM_VIDEO)
struct udevice *dev;
if (uclass_first_device_err(UCLASS_VIDEO, &dev))
return CMD_RET_FAILURE;
if (video_clear(dev))
return CMD_RET_FAILURE;
#elif defined(CONFIG_CFB_CONSOLE)
video_clear();
#elif defined(CONFIG_LCD)
lcd_clear();
#else
return CMD_RET_FAILURE;
#endif
return CMD_RET_SUCCESS;
}
U_BOOT_CMD(cls, 1, 1, do_video_clear, "clear screen", "");

View File

@ -242,14 +242,6 @@ void lcd_clear(void)
lcd_sync();
}
static int do_lcd_clear(cmd_tbl_t *cmdtp, int flag, int argc,
char *const argv[])
{
lcd_clear();
return 0;
}
U_BOOT_CMD(cls, 1, 1, do_lcd_clear, "clear screen", "");
static int lcd_init(void *lcdbase)
{
debug("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);