]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
video: Move last_sync to private data
authorSimon Glass <sjg@chromium.org>
Wed, 31 Jul 2024 14:44:09 +0000 (08:44 -0600)
committerAnatolij Gustschin <agust@denx.de>
Wed, 31 Jul 2024 14:52:51 +0000 (16:52 +0200)
Rather than using a static variable, use the video device's private
data to remember when the last video sync was completed. This allows
each display to have its own sync and avoids using static data in SPL.

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

index ff1382f4a43b76869956ca971f5c77fe9c3e871a..a95b5f199dcddef9acc44a25e9335e7451824473 100644 (file)
@@ -349,6 +349,7 @@ void video_set_default_colors(struct udevice *dev, bool invert)
 /* Flush video activity to the caches */
 int video_sync(struct udevice *vid, bool force)
 {
+       struct video_priv *priv = dev_get_uclass_priv(vid);
        struct video_ops *ops = video_get_ops(vid);
        int ret;
 
@@ -364,20 +365,15 @@ int video_sync(struct udevice *vid, bool force)
         * out whether it exists? For now, ARM is safe.
         */
 #if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
-       struct video_priv *priv = dev_get_uclass_priv(vid);
-
        if (priv->flush_dcache) {
                flush_dcache_range((ulong)priv->fb,
                                   ALIGN((ulong)priv->fb + priv->fb_size,
                                         CONFIG_SYS_CACHELINE_SIZE));
        }
 #elif defined(CONFIG_VIDEO_SANDBOX_SDL)
-       struct video_priv *priv = dev_get_uclass_priv(vid);
-       static ulong last_sync;
-
-       if (force || get_timer(last_sync) > 100) {
+       if (force || get_timer(priv->last_sync) > 100) {
                sandbox_sdl_sync(priv->fb);
-               last_sync = get_timer(0);
+               priv->last_sync = get_timer(0);
        }
 #endif
        return 0;
index 4d8df9baaada799bda781e554f1660013fb2332f..4013a949983feffd1bcdad64a0a2533ba51c0aaa 100644 (file)
@@ -97,6 +97,7 @@ enum video_format {
  *             the LCD is updated
  * @fg_col_idx:        Foreground color code (bit 3 = bold, bit 0-2 = color)
  * @bg_col_idx:        Background color code (bit 3 = bold, bit 0-2 = color)
+ * @last_sync: Monotonic time of last video sync
  */
 struct video_priv {
        /* Things set up by the driver: */
@@ -121,6 +122,7 @@ struct video_priv {
        bool flush_dcache;
        u8 fg_col_idx;
        u8 bg_col_idx;
+       ulong last_sync;
 };
 
 /**