blob: 502d5ed697a78dae35cb26865216ab756ad69ee4 [file] [log] [blame]
Anatolij Gustschine0455a42018-12-01 10:47:20 +01001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * (C) Copyright 2018
4 * DENX Software Engineering, Anatolij Gustschin <agust@denx.de>
5 *
6 * cls - clear screen command
7 */
8#include <common.h>
9#include <command.h>
10#include <dm.h>
11#include <lcd.h>
12#include <video.h>
13
Heinrich Schuchardtced5d412022-02-11 18:11:05 +010014#define CSI "\x1b["
15
Simon Glassed38aef2020-05-10 11:40:03 -060016static int do_video_clear(struct cmd_tbl *cmdtp, int flag, int argc,
Anatolij Gustschine0455a42018-12-01 10:47:20 +010017 char *const argv[])
18{
Heinrich Schuchardtced5d412022-02-11 18:11:05 +010019 __maybe_unused struct udevice *dev;
Anatolij Gustschine0455a42018-12-01 10:47:20 +010020
Heinrich Schuchardtced5d412022-02-11 18:11:05 +010021 /* Send clear screen and home */
22 printf(CSI "2J" CSI "1;1H");
23#if defined(CONFIG_DM_VIDEO)
24#if !defined(CONFIG_VIDEO_ANSI)
Anatolij Gustschine0455a42018-12-01 10:47:20 +010025 if (uclass_first_device_err(UCLASS_VIDEO, &dev))
26 return CMD_RET_FAILURE;
27
28 if (video_clear(dev))
29 return CMD_RET_FAILURE;
Heinrich Schuchardtced5d412022-02-11 18:11:05 +010030#endif
Anatolij Gustschine0455a42018-12-01 10:47:20 +010031#elif defined(CONFIG_LCD)
32 lcd_clear();
33#else
34 return CMD_RET_FAILURE;
35#endif
36 return CMD_RET_SUCCESS;
37}
38
39U_BOOT_CMD(cls, 1, 1, do_video_clear, "clear screen", "");