video: Allow filling the display with a colour
authorSimon Glass <sjg@chromium.org>
Thu, 6 Oct 2022 14:36:08 +0000 (08:36 -0600)
committerAnatolij Gustschin <agust@denx.de>
Sun, 30 Oct 2022 19:01:40 +0000 (20:01 +0100)
Generalise the video_clear() function to allow filling with a different
colour.

Tidy up the comments while we are here.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/video/video-uclass.c
include/video.h

index b258a8a..9f22da0 100644 (file)
@@ -126,7 +126,7 @@ int video_reserve(ulong *addrp)
        return 0;
 }
 
-int video_clear(struct udevice *dev)
+int video_fill(struct udevice *dev, u32 colour)
 {
        struct video_priv *priv = dev_get_uclass_priv(dev);
        int ret;
@@ -138,7 +138,7 @@ int video_clear(struct udevice *dev)
                        u16 *end = priv->fb + priv->fb_size;
 
                        while (ppix < end)
-                               *ppix++ = priv->colour_bg;
+                               *ppix++ = colour;
                        break;
                }
        case VIDEO_BPP32:
@@ -147,11 +147,11 @@ int video_clear(struct udevice *dev)
                        u32 *end = priv->fb + priv->fb_size;
 
                        while (ppix < end)
-                               *ppix++ = priv->colour_bg;
+                               *ppix++ = colour;
                        break;
                }
        default:
-               memset(priv->fb, priv->colour_bg, priv->fb_size);
+               memset(priv->fb, colour, priv->fb_size);
                break;
        }
        ret = video_sync_copy(dev, priv->fb, priv->fb + priv->fb_size);
@@ -161,6 +161,18 @@ int video_clear(struct udevice *dev)
        return video_sync(dev, false);
 }
 
+int video_clear(struct udevice *dev)
+{
+       struct video_priv *priv = dev_get_uclass_priv(dev);
+       int ret;
+
+       ret = video_fill(dev, priv->colour_bg);
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
 static const struct vid_rgb colours[VID_COLOUR_COUNT] = {
        { 0x00, 0x00, 0x00 },  /* black */
        { 0xc0, 0x00, 0x00 },  /* red */
index 1c30aea..4c216d8 100644 (file)
@@ -185,14 +185,23 @@ u32 video_index_to_colour(struct video_priv *priv, unsigned int idx);
 int video_reserve(ulong *addrp);
 
 /**
- * video_clear() - Clear a device's frame buffer to background color.
+ * video_clear() - Clear a device's frame buffer to background colour.
  *
  * @dev:       Device to clear
- * Return: 0
+ * Return: 0 on success
  */
 int video_clear(struct udevice *dev);
 
 /**
+ * video_fill() - Fill a device's frame buffer to a colour.
+ *
+ * @dev:       Device to fill
+ * @colour:    Colour to use, in the frame buffer's format
+ * Return: 0 on success
+ */
+int video_fill(struct udevice *dev, u32 colour);
+
+/**
  * video_sync() - Sync a device's frame buffer with its hardware
  *
  * @vid:       Device to sync