diff options
-rw-r--r-- | drivers/video/vidconsole-uclass.c | 8 | ||||
-rw-r--r-- | test/dm/video.c | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c index d7568bc79a..2ca19d4049 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c @@ -272,6 +272,14 @@ static void vidconsole_escape_char(struct udevice *dev, char ch) s++; /* ; */ s = parsenum(s, &col); + /* + * Video origin is [0, 0], terminal origin is [1, 1]. + */ + if (row) + --row; + if (col) + --col; + set_cursor_position(priv, row, col); break; diff --git a/test/dm/video.c b/test/dm/video.c index 7def338058..5d1faac19c 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -178,12 +178,12 @@ static int dm_test_video_ansi(struct unit_test_state *uts) /* test set-cursor: [%d;%df */ vidconsole_put_string(con, "abc"ANSI_ESC"[2;2fab"ANSI_ESC"[4;4fcd"); - ut_asserteq(142, compress_frame_buffer(dev)); + ut_asserteq(143, compress_frame_buffer(dev)); /* test colors (30-37 fg color, 40-47 bg color) */ vidconsole_put_string(con, ANSI_ESC"[30;41mfoo"); /* black on red */ vidconsole_put_string(con, ANSI_ESC"[33;44mbar"); /* yellow on blue */ - ut_asserteq(265, compress_frame_buffer(dev)); + ut_asserteq(272, compress_frame_buffer(dev)); return 0; } |