video/console: Implement ANSI clear line command

There is a standard ANSI terminal escape sequence to clear a whole line
of text. So far the DM_VIDEO console was missing this code.

Detect the sequence and use vidconsole_set_row with the background
colour to fix this omission.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Andre Przywara 2019-03-23 01:29:58 +00:00 committed by Anatolij Gustschin
parent 29c158b90d
commit 4422294cbe

View File

@ -346,6 +346,25 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
}
break;
}
case 'K': {
struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
int mode;
/*
* Clear (parts of) current line
* [0K - clear line to end
* [2K - clear entire line
*/
parsenum(priv->escape_buf + 1, &mode);
if (mode == 2) {
int row, col;
get_cursor_position(priv, &row, &col);
vidconsole_set_row(dev, row, vid_priv->colour_bg);
}
break;
}
case 'm': {
struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
char *s = priv->escape_buf;