diff options
Diffstat (limited to 'drivers/video/console_rotate.c')
-rw-r--r-- | drivers/video/console_rotate.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c index a3f8c6352f8..f11dc3a0b07 100644 --- a/drivers/video/console_rotate.c +++ b/drivers/video/console_rotate.c @@ -36,6 +36,12 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) if (ret) return ret; + video_damage(dev->parent, + vid_priv->xsize - ((row + 1) * fontdata->height), + 0, + fontdata->height, + vid_priv->ysize); + return 0; } @@ -64,6 +70,12 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, dst += vid_priv->line_length; } + video_damage(dev->parent, + vid_priv->xsize - ((rowdst + count) * fontdata->height), + 0, + count * fontdata->height, + vid_priv->ysize); + return 0; } @@ -97,6 +109,12 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; + video_damage(dev->parent, + vid_priv->xsize - y - fontdata->height, + linenum - 1, + fontdata->height, + fontdata->width); + return VID_TO_POS(fontdata->width); } @@ -121,6 +139,12 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) if (ret) return ret; + video_damage(dev->parent, + 0, + vid_priv->ysize - (row + 1) * fontdata->height, + vid_priv->xsize, + fontdata->height); + return 0; } @@ -142,6 +166,12 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, vidconsole_memmove(dev, dst, src, fontdata->height * vid_priv->line_length * count); + video_damage(dev->parent, + 0, + vid_priv->ysize - (rowdst + count) * fontdata->height, + vid_priv->xsize, + count * fontdata->height); + return 0; } @@ -175,6 +205,12 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; + video_damage(dev->parent, + x - fontdata->width + 1, + linenum - fontdata->height + 1, + fontdata->width, + fontdata->height); + return VID_TO_POS(fontdata->width); } @@ -199,6 +235,12 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) if (ret) return ret; + video_damage(dev->parent, + row * fontdata->height, + 0, + fontdata->height, + vid_priv->ysize); + return 0; } @@ -225,6 +267,12 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, dst += vid_priv->line_length; } + video_damage(dev->parent, + rowdst * fontdata->height, + 0, + count * fontdata->height, + vid_priv->ysize); + return 0; } @@ -257,6 +305,12 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; + video_damage(dev->parent, + y, + linenum - fontdata->width + 1, + fontdata->height, + fontdata->width); + return VID_TO_POS(fontdata->width); } |