+++ /dev/null
-From 4606105325b2d3a522ce69624691959beb3024b7 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 28 Aug 2023 15:14:20 +0200
-Subject: fbdev/hyperv_fb: Use fb_ops helpers for deferred I/O
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 66a749a752351c7cdd0a4fefb2544ab05e7987c3 ]
-
-Generate callback functions for struct fb_ops with the fbdev macro
-FB_GEN_DEFAULT_DEFERRED_IOMEM_OPS(). Initialize struct fb_ops to
-the generated functions with fbdev initializer macros.
-
-The hyperv_fb driver is incomplete in its handling of deferred I/O
-and damage framebuffers. Write operations do no trigger damage handling.
-Fixing this is beyond the scope of this patch.
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Cc: "K. Y. Srinivasan" <kys@microsoft.com>
-Cc: Haiyang Zhang <haiyangz@microsoft.com>
-Cc: Wei Liu <wei.liu@kernel.org>
-Cc: Dexuan Cui <decui@microsoft.com>
-Acked-by: Javier Martinez Canillas <javierm@redhat.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20230828132131.29295-5-tzimmermann@suse.de
-Stable-dep-of: ea2f45ab0e53 ("fbdev: hyperv_fb: Allow graceful removal of framebuffer")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/Kconfig | 5 +---
- drivers/video/fbdev/hyperv_fb.c | 48 ++++++++++-----------------------
- 2 files changed, 15 insertions(+), 38 deletions(-)
-
-diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
-index 325298573e120..e33ea53996bd6 100644
---- a/drivers/video/fbdev/Kconfig
-+++ b/drivers/video/fbdev/Kconfig
-@@ -1900,11 +1900,8 @@ config FB_BROADSHEET
- config FB_HYPERV
- tristate "Microsoft Hyper-V Synthetic Video support"
- depends on FB && HYPERV
-- select FB_CFB_FILLRECT
-- select FB_CFB_COPYAREA
-- select FB_CFB_IMAGEBLIT
-- select FB_DEFERRED_IO
- select DMA_CMA if HAVE_DMA_CONTIGUOUS && CMA
-+ select FB_IOMEM_HELPERS_DEFERRED
- select VIDEO_NOMODESET
- help
- This framebuffer driver supports Microsoft Hyper-V Synthetic Video.
-diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c
-index 80e8ec36b7db2..99e12abdeea1e 100644
---- a/drivers/video/fbdev/hyperv_fb.c
-+++ b/drivers/video/fbdev/hyperv_fb.c
-@@ -848,58 +848,38 @@ static int hvfb_blank(int blank, struct fb_info *info)
- return 1; /* get fb_blank to set the colormap to all black */
- }
-
--static void hvfb_cfb_fillrect(struct fb_info *p,
-- const struct fb_fillrect *rect)
-+static void hvfb_ops_damage_range(struct fb_info *info, off_t off, size_t len)
- {
-- struct hvfb_par *par = p->par;
--
-- cfb_fillrect(p, rect);
-- if (par->synchronous_fb)
-- synthvid_update(p, 0, 0, INT_MAX, INT_MAX);
-- else
-- hvfb_ondemand_refresh_throttle(par, rect->dx, rect->dy,
-- rect->width, rect->height);
-+ /* TODO: implement damage handling */
- }
-
--static void hvfb_cfb_copyarea(struct fb_info *p,
-- const struct fb_copyarea *area)
-+static void hvfb_ops_damage_area(struct fb_info *info, u32 x, u32 y, u32 width, u32 height)
- {
-- struct hvfb_par *par = p->par;
-+ struct hvfb_par *par = info->par;
-
-- cfb_copyarea(p, area);
- if (par->synchronous_fb)
-- synthvid_update(p, 0, 0, INT_MAX, INT_MAX);
-+ synthvid_update(info, 0, 0, INT_MAX, INT_MAX);
- else
-- hvfb_ondemand_refresh_throttle(par, area->dx, area->dy,
-- area->width, area->height);
-+ hvfb_ondemand_refresh_throttle(par, x, y, width, height);
- }
-
--static void hvfb_cfb_imageblit(struct fb_info *p,
-- const struct fb_image *image)
--{
-- struct hvfb_par *par = p->par;
--
-- cfb_imageblit(p, image);
-- if (par->synchronous_fb)
-- synthvid_update(p, 0, 0, INT_MAX, INT_MAX);
-- else
-- hvfb_ondemand_refresh_throttle(par, image->dx, image->dy,
-- image->width, image->height);
--}
-+/*
-+ * TODO: GEN1 codepaths allocate from system or DMA-able memory. Fix the
-+ * driver to use the _SYSMEM_ or _DMAMEM_ helpers in these cases.
-+ */
-+FB_GEN_DEFAULT_DEFERRED_IOMEM_OPS(hvfb_ops,
-+ hvfb_ops_damage_range,
-+ hvfb_ops_damage_area)
-
- static const struct fb_ops hvfb_ops = {
- .owner = THIS_MODULE,
-+ FB_DEFAULT_DEFERRED_OPS(hvfb_ops),
- .fb_check_var = hvfb_check_var,
- .fb_set_par = hvfb_set_par,
- .fb_setcolreg = hvfb_setcolreg,
-- .fb_fillrect = hvfb_cfb_fillrect,
-- .fb_copyarea = hvfb_cfb_copyarea,
-- .fb_imageblit = hvfb_cfb_imageblit,
- .fb_blank = hvfb_blank,
-- .fb_mmap = fb_deferred_io_mmap,
- };
-
--
- /* Get options from kernel paramenter "video=" */
- static void hvfb_get_option(struct fb_info *info)
- {
---
-2.39.5
-
+++ /dev/null
-From de57aae50432530fd10455baf296832bcf791f56 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 30 Aug 2024 11:45:57 +0200
-Subject: fbdev: Introduce devm_register_framebuffer()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Thomas Weißschuh <linux@weissschuh.net>
-
-[ Upstream commit 929c81ade6355b87097a2a4886c10750e68626cf ]
-
-Introduce a device-managed variant of register_framebuffer() which
-automatically unregisters the framebuffer on device destruction.
-This can simplify the error handling and resource management in drivers.
-
-Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
-Signed-off-by: Helge Deller <deller@gmx.de>
-Stable-dep-of: ea2f45ab0e53 ("fbdev: hyperv_fb: Allow graceful removal of framebuffer")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/fbmem.c | 30 ++++++++++++++++++++++++++++++
- include/linux/fb.h | 1 +
- 2 files changed, 31 insertions(+)
-
-diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
-index 0d0003bcdd933..8f096e46525ea 100644
---- a/drivers/video/fbdev/core/fbmem.c
-+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1079,6 +1079,36 @@ unregister_framebuffer(struct fb_info *fb_info)
- }
- EXPORT_SYMBOL(unregister_framebuffer);
-
-+static void devm_unregister_framebuffer(void *data)
-+{
-+ struct fb_info *info = data;
-+
-+ unregister_framebuffer(info);
-+}
-+
-+/**
-+ * devm_register_framebuffer - resource-managed frame buffer device registration
-+ * @dev: device the framebuffer belongs to
-+ * @fb_info: frame buffer info structure
-+ *
-+ * Registers a frame buffer device @fb_info to device @dev.
-+ *
-+ * Returns negative errno on error, or zero for success.
-+ *
-+ */
-+int
-+devm_register_framebuffer(struct device *dev, struct fb_info *fb_info)
-+{
-+ int ret;
-+
-+ ret = register_framebuffer(fb_info);
-+ if (ret)
-+ return ret;
-+
-+ return devm_add_action_or_reset(dev, devm_unregister_framebuffer, fb_info);
-+}
-+EXPORT_SYMBOL(devm_register_framebuffer);
-+
- /**
- * fb_set_suspend - low level driver signals suspend
- * @info: framebuffer affected
-diff --git a/include/linux/fb.h b/include/linux/fb.h
-index 16a9a0a0894d9..a665e087d5db1 100644
---- a/include/linux/fb.h
-+++ b/include/linux/fb.h
-@@ -591,6 +591,7 @@ extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
- /* fbmem.c */
- extern int register_framebuffer(struct fb_info *fb_info);
- extern void unregister_framebuffer(struct fb_info *fb_info);
-+extern int devm_register_framebuffer(struct device *dev, struct fb_info *fb_info);
- extern char* fb_get_buffer_offset(struct fb_info *info, struct fb_pixmap *buf, u32 size);
- extern void fb_pad_unaligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 idx,
- u32 height, u32 shift_high, u32 shift_low, u32 mod);
---
-2.39.5
-
+++ /dev/null
-From 6f449f98876ab5b526e7c95c32aaeacdf5a00705 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 7 Sep 2023 10:52:01 +0200
-Subject: fbdev/mmp/mmpfb: Do not display boot-up logo
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 828d96633ab7e0fe8032e9123d57b318cfd9f145 ]
-
-The fbcon module takes care of displaying the logo, if any. Remove
-the code form mmpfb. It is probably no tworking as expected, as it
-interferes with the framebuffer console. If we want to display the
-logo without fbcon, we should implement this in the fbdev core code.
-
-v2:
- * add a note on fbcon interference (Javier)
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Acked-by: Javier Martinez Canillas <javierm@redhat.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20230907085408.9354-3-tzimmermann@suse.de
-Stable-dep-of: ea2f45ab0e53 ("fbdev: hyperv_fb: Allow graceful removal of framebuffer")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/mmp/fb/mmpfb.c | 7 -------
- 1 file changed, 7 deletions(-)
-
-diff --git a/drivers/video/fbdev/mmp/fb/mmpfb.c b/drivers/video/fbdev/mmp/fb/mmpfb.c
-index 42a87474bcead..2d9797c6fb3e6 100644
---- a/drivers/video/fbdev/mmp/fb/mmpfb.c
-+++ b/drivers/video/fbdev/mmp/fb/mmpfb.c
-@@ -628,13 +628,6 @@ static int mmpfb_probe(struct platform_device *pdev)
- dev_info(fbi->dev, "loaded to /dev/fb%d <%s>.\n",
- info->node, info->fix.id);
-
--#ifdef CONFIG_LOGO
-- if (fbi->fb_start) {
-- fb_prepare_logo(info, 0);
-- fb_show_logo(info, 0);
-- }
--#endif
--
- return 0;
-
- failed_clear_info:
---
-2.39.5
-