[PATCH v3 07/12] video: Correct setting of cursor position
Simon Glass
sjg at chromium.org
Sun Nov 12 21:01:11 CET 2023
Hi Anatolij,
On Sun, 1 Oct 2023 at 19:15, Simon Glass <sjg at chromium.org> wrote:
>
> The ANSI codes are not correctly handled at present, in that the
> requested X position is added to the current one.
>
> Correct this and also call vidconsole_entry_start() to start a new text
> line.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> (no changes since v1)
>
> drivers/video/vidconsole-uclass.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
> index 22d55df71f63..a312a1985242 100644
> --- a/drivers/video/vidconsole-uclass.c
> +++ b/drivers/video/vidconsole-uclass.c
> @@ -125,6 +125,7 @@ void vidconsole_set_cursor_pos(struct udevice *dev, int x, int y)
> priv->xcur_frac = VID_TO_POS(x);
> priv->xstart_frac = priv->xcur_frac;
> priv->ycur = y;
> + vidconsole_entry_start(dev);
> }
>
> /**
> @@ -134,8 +135,10 @@ void vidconsole_set_cursor_pos(struct udevice *dev, int x, int y)
> * @row: new row
> * @col: new column
> */
> -static void set_cursor_position(struct vidconsole_priv *priv, int row, int col)
> +static void set_cursor_position(struct udevice *dev, int row, int col)
> {
> + struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
> +
> /*
> * Ensure we stay in the bounds of the screen.
> */
> @@ -144,9 +147,7 @@ static void set_cursor_position(struct vidconsole_priv *priv, int row, int col)
> if (col >= priv->cols)
> col = priv->cols - 1;
>
> - priv->ycur = row * priv->y_charsize;
> - priv->xcur_frac = priv->xstart_frac +
> - VID_TO_POS(col * priv->x_charsize);
> + vidconsole_position_cursor(dev, col, row);
> }
>
> /**
> @@ -193,7 +194,7 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
> int row = priv->row_saved;
> int col = priv->col_saved;
>
> - set_cursor_position(priv, row, col);
> + set_cursor_position(dev, row, col);
> priv->escape = 0;
> return;
> }
> @@ -255,7 +256,7 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
> if (row < 0)
> row = 0;
> /* Right and bottom overflows are handled in the callee. */
> - set_cursor_position(priv, row, col);
> + set_cursor_position(dev, row, col);
> break;
> }
> case 'H':
> @@ -279,7 +280,7 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
> if (col)
> --col;
>
> - set_cursor_position(priv, row, col);
> + set_cursor_position(dev, row, col);
>
> break;
> }
> --
> 2.42.0.582.g8ccd20d70d-goog
>
Any thoughts on this patch, please?
Regards,
Simon
More information about the U-Boot
mailing list