diff mbox series

[1/2] drm/omapdrm: Fix console by implementing fb_dirty

Message ID 20240219142001.19727-1-tony@atomide.com (mailing list archive)
State New, archived
Headers show
Series [1/2] drm/omapdrm: Fix console by implementing fb_dirty | expand

Commit Message

Tony Lindgren Feb. 19, 2024, 2:19 p.m. UTC
The framebuffer console stopped updating with commit f231af498c29
("drm/fb-helper: Disconnect damage worker from update logic").

Let's fix the issue by implementing fb_dirty similar to what was done
with commit 039a72ce7e57 ("drm/i915/fbdev: Implement fb_dirty for intel
custom fb helper").

Fixes: f231af498c29 ("drm/fb-helper: Disconnect damage worker from update logic")
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/gpu/drm/omapdrm/omap_fbdev.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Thomas Zimmermann Feb. 19, 2024, 4:31 p.m. UTC | #1
Hi

Am 19.02.24 um 15:19 schrieb Tony Lindgren:
> The framebuffer console stopped updating with commit f231af498c29
> ("drm/fb-helper: Disconnect damage worker from update logic").
>
> Let's fix the issue by implementing fb_dirty similar to what was done
> with commit 039a72ce7e57 ("drm/i915/fbdev: Implement fb_dirty for intel
> custom fb helper").
>
> Fixes: f231af498c29 ("drm/fb-helper: Disconnect damage worker from update logic")
> Signed-off-by: Tony Lindgren <tony@atomide.com>

Looks reasonable.

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
>   drivers/gpu/drm/omapdrm/omap_fbdev.c | 12 ++++++++++++
>   1 file changed, 12 insertions(+)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> @@ -238,8 +238,20 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
>   	return ret;
>   }
>   
> +static int omap_fbdev_dirty(struct drm_fb_helper *helper, struct drm_clip_rect *clip)
> +{
> +	if (!(clip->x1 < clip->x2 && clip->y1 < clip->y2))
> +		return 0;
> +
> +	if (helper->fb->funcs->dirty)
> +		return helper->fb->funcs->dirty(helper->fb, NULL, 0, 0, clip, 1);
> +
> +	return 0;
> +}
> +
>   static const struct drm_fb_helper_funcs omap_fb_helper_funcs = {
>   	.fb_probe = omap_fbdev_create,
> +	.fb_dirty = omap_fbdev_dirty,
>   };
>   
>   static struct drm_fb_helper *get_fb(struct fb_info *fbi)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
--- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
+++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
@@ -238,8 +238,20 @@  static int omap_fbdev_create(struct drm_fb_helper *helper,
 	return ret;
 }
 
+static int omap_fbdev_dirty(struct drm_fb_helper *helper, struct drm_clip_rect *clip)
+{
+	if (!(clip->x1 < clip->x2 && clip->y1 < clip->y2))
+		return 0;
+
+	if (helper->fb->funcs->dirty)
+		return helper->fb->funcs->dirty(helper->fb, NULL, 0, 0, clip, 1);
+
+	return 0;
+}
+
 static const struct drm_fb_helper_funcs omap_fb_helper_funcs = {
 	.fb_probe = omap_fbdev_create,
+	.fb_dirty = omap_fbdev_dirty,
 };
 
 static struct drm_fb_helper *get_fb(struct fb_info *fbi)