Browse Source

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>
Anatolij Gustschin 5 years ago
parent
commit
4e92e60d35
4 changed files with 44 additions and 8 deletions
  1. 8 0
      cmd/Kconfig
  2. 1 0
      cmd/Makefile
  3. 35 0
      cmd/cls.c
  4. 0 8
      common/lcd.c

+ 8 - 0
cmd/Kconfig

@@ -1380,6 +1380,14 @@ config CMD_CONITRACE
 	  Enable the 'conitrace' command which displays the codes received
 	  Enable the 'conitrace' command which displays the codes received
 	  from the console input as hexadecimal numbers.
 	  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
 config CMD_DISPLAY
 	bool "Enable the 'display' command, for character displays"
 	bool "Enable the 'display' command, for character displays"
 	help
 	help

+ 1 - 0
cmd/Makefile

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

+ 35 - 0
cmd/cls.c

@@ -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", "");

+ 0 - 8
common/lcd.c

@@ -242,14 +242,6 @@ void lcd_clear(void)
 	lcd_sync();
 	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)
 static int lcd_init(void *lcdbase)
 {
 {
 	debug("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);
 	debug("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);