From: Andre Przywara Date: Sat, 23 Mar 2019 01:29:58 +0000 (+0000) Subject: video/console: Implement ANSI clear line command X-Git-Tag: v2019.07-rc1~23^2~3 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fu-boot.git;a=commitdiff_plain;h=4422294cbe37e3b2bcbbb066e0d53411880cf07e 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 Reviewed-by: Simon Glass --- diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c index 6cf9124c42b..cf2f0dff441 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c @@ -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;