diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c index 4c0efd52f5..884db01f06 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c @@ -53,7 +53,7 @@ static void vidconsole_back(struct udevice *dev) struct vidconsole_priv *priv = dev_get_uclass_priv(dev); priv->xcur_frac -= VID_TO_POS(priv->x_charsize); - if (priv->xcur_frac < 0) { + if (priv->xcur_frac < priv->xstart_frac) { priv->xcur_frac = (priv->cols - 1) * VID_TO_POS(priv->x_charsize); priv->ycur -= priv->y_charsize; @@ -71,7 +71,7 @@ static void vidconsole_newline(struct udevice *dev) const int rows = CONFIG_CONSOLE_SCROLL_LINES; int i; - priv->xcur_frac = 0; + priv->xcur_frac = priv->xstart_frac; priv->ycur += priv->y_charsize; /* Check if we need to scroll the terminal */ @@ -95,7 +95,7 @@ int vidconsole_put_char(struct udevice *dev, char ch) /* beep */ break; case '\r': - priv->xcur_frac = 0; + priv->xcur_frac = priv->xstart_frac; break; case '\n': vidconsole_newline(dev); diff --git a/include/video_console.h b/include/video_console.h index eeba368d63..cbbf1345f8 100644 --- a/include/video_console.h +++ b/include/video_console.h @@ -27,6 +27,7 @@ * @y_charsize: Character height in pixels * @tab_width_frac: Tab width in fractional units * @xsize_frac: Width of the display in fractional units + * @xstart_frac: Left margin for the text console in fractional units */ struct vidconsole_priv { struct stdio_dev sdev; @@ -38,6 +39,7 @@ struct vidconsole_priv { int y_charsize; int tab_width_frac; int xsize_frac; + int xstart_frac; }; /**