Linux Framebuffer Layer development
 help / color / mirror / Atom feed
* Re: [PATCH 1/6] video/logo: remove orphan .pgm Makefile rule
From: Vincent Mailhol @ 2026-01-02 17:13 UTC (permalink / raw)
  To: David Heidelberg, Helge Deller, Greg Kroah-Hartman,
	Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh
In-Reply-To: <e04c9862-761f-4f36-b978-b760d2a0a928@ixit.cz>

On 02/01/2026 at 17:34, David Heidelberg wrote:
> On 30/12/2025 23:20, Vincent Mailhol wrote:
>> The kernel has no actual grey-scale logos. And looking at the git
>> history, it seems that there never was one (or maybe there was in the
>> pre-git history? I did not check that far…)
>>
>> Remove the Makefile rule for the .pgm grey scale images.
> 
> Great to see this series.

Thanks!

> I think the Fixes: tag should still go here, even if it is not very
> specific.

But then, what do I put in the fixes tag? This:

  Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")

?

I am not sure it is worth bothering the stable team for something that
isn't causing any real harm.


Yours sincerely,
Vincent Mailhol


^ permalink raw reply

* Re: [PATCH 1/6] video/logo: remove orphan .pgm Makefile rule
From: David Heidelberg @ 2026-01-02 16:34 UTC (permalink / raw)
  To: Vincent Mailhol, Helge Deller, Greg Kroah-Hartman, Yoshinori Sato,
	Rich Felker, John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh
In-Reply-To: <20251230-custom-logo-v1-1-4736374569ee@kernel.org>

On 30/12/2025 23:20, Vincent Mailhol wrote:
> The kernel has no actual grey-scale logos. And looking at the git
> history, it seems that there never was one (or maybe there was in the
> pre-git history? I did not check that far…)
> 
> Remove the Makefile rule for the .pgm grey scale images.

Great to see this series.

I think the Fixes: tag should still go here, even if it is not very 
specific.

David

> 
> Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
> ---
>   drivers/video/logo/Makefile | 5 +----
>   1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
> index 895c60b8402e..8b67c4941a4c 100644
> --- a/drivers/video/logo/Makefile
> +++ b/drivers/video/logo/Makefile
> @@ -30,8 +30,5 @@ $(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
>   $(obj)/%.c: $(src)/%.ppm $(obj)/pnmtologo FORCE
>   	$(call if_changed,logo)
>   
> -$(obj)/%.c: $(src)/%.pgm $(obj)/pnmtologo FORCE
> -	$(call if_changed,logo)
> -
>   # generated C files
> -targets += *_mono.c *_vga16.c *_clut224.c *_gray256.c
> +targets += *_mono.c *_vga16.c *_clut224.c
> 

-- 
David Heidelberg


^ permalink raw reply

* Re: [PATCH 0/6] video/logo: allow custom boot logo and simplify logic
From: Markus Reichelt @ 2026-01-02 16:30 UTC (permalink / raw)
  To: Vincent Mailhol
  Cc: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz, linux-fbdev, dri-devel, linux-kernel,
	linux-sh
In-Reply-To: <20251230-custom-logo-v1-0-4736374569ee@kernel.org>

* Vincent Mailhol <mailhol@kernel.org> wrote:

> This series allows the user to replace the default kernel boot logo by
> a custom one directly in the kernel configuration. This makes it
> easier to customise the boot logo without the need to modify the
> sources and allows such customisation to remain persistent after
> applying the configuration to another version of the kernel.

Hah! What I have been doing for so many moons is to just cp my own logo
'logo_linux_clut224.ppm' -> 'drivers/video/logo/logo_linux_clut224.ppm'
for each custom kernel build - that works like a charm.
Maybe... I'm too pragmatic? It's that famous 'kill bill' logo from ages
ago, 224 colors PPM

Haven't tested your patch series cos stuff just works for me.
Looking forward to feedback from all those logo nerds out there.

Markus

^ permalink raw reply

* [PATCH v2 6/6] video/logo: move logo selection logic to Kconfig
From: Vincent Mailhol @ 2026-01-01 15:25 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20260101-custom-logo-v2-0-8eec06dfbf85@kernel.org>

Now that the path to the logo file can be directly entered in Kbuild,
there is no more need to handle all the logo file selection in the
Makefile and the C files.

The only exception is the logo_spe_clut224 which is only used by the
Cell processor (found for example in the Playstation 3) [1]. This
extra logo uses its own different image which shows up on a separate
line just below the normal logo. Because the extra logo uses a
different image, it can not be factorized under the custom logo logic.

Move all the logo file selection logic to Kbuild (except from the
logo_spe_clut224.ppm), this done, clean-up the C code to only leave
one entry for each logo type (monochrome, 16-colors and 224-colors).

[1] Cell SPE logos
Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
**Changelog**

v1 -> v2:

  - By removing the logo_spe_clut224.o target from the Makefile, v1
    also removed the logo_spe_clut224 object which is still being
    referenced in

      arch/powerpc/platforms/cell/spu_base.c

    Restore the logo_spe_clut224.o target.

Link: https://lore.kernel.org/all/20251230-custom-logo-v1-6-4736374569ee@kernel.org/
---
 drivers/video/logo/Kconfig  | 48 ++++++++-------------------------------------
 drivers/video/logo/Makefile | 14 -------------
 drivers/video/logo/logo.c   | 46 ++++---------------------------------------
 include/linux/linux_logo.h  |  8 --------
 4 files changed, 12 insertions(+), 104 deletions(-)

diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
index 1d1651c067a1..af9301ebc51c 100644
--- a/drivers/video/logo/Kconfig
+++ b/drivers/video/logo/Kconfig
@@ -25,6 +25,7 @@ config LOGO_LINUX_MONO
 config LOGO_LINUX_MONO_FILE
 	string "Monochrome logo .pbm file"
 	depends on LOGO_LINUX_MONO
+	default "drivers/video/logo/logo_superh_mono.pbm" if SUPERH
 	default "drivers/video/logo/logo_linux_mono.pbm"
 	help
 	  Takes a path to a monochromatic logo in the portable pixmap file
@@ -42,6 +43,7 @@ config LOGO_LINUX_VGA16
 config LOGO_LINUX_VGA16_FILE
 	string "16-color logo .ppm file"
 	depends on LOGO_LINUX_VGA16
+	default "drivers/video/logo/logo_superh_vga16.ppm" if SUPERH
 	default "drivers/video/logo/logo_linux_vga16.ppm"
 	help
 	  Takes a path to a logo in the portable pixmap file format (.ppm),
@@ -61,6 +63,12 @@ config LOGO_LINUX_CLUT224
 config LOGO_LINUX_CLUT224_FILE
 	string "224-color logo .ppm file"
 	depends on LOGO_LINUX_CLUT224
+	default "drivers/video/logo/logo_dec_clut224.ppm" if MACH_DECSTATION || ALPHA
+	default "drivers/video/logo/logo_mac_clut224.ppm" if MAC
+	default "drivers/video/logo/logo_parisc_clut224.ppm" if PARISC
+	default "drivers/video/logo/logo_sgi_clut224.ppm" if SGI_IP22 || SGI_IP27 || SGI_IP32
+	default "drivers/video/logo/logo_sun_clut224.ppm" if SPARC
+	default "drivers/video/logo/logo_superh_clut224.ppm" if SUPERH
 	default "drivers/video/logo/logo_linux_clut224.ppm"
 	help
 	  Takes a path to a 224-color logo in the portable pixmap file
@@ -71,44 +79,4 @@ config LOGO_LINUX_CLUT224_FILE
 
 	    magick source_image -compress none -colors 224 destination.ppm
 
-config LOGO_DEC_CLUT224
-	bool "224-color Digital Equipment Corporation Linux logo"
-	depends on MACH_DECSTATION || ALPHA
-	default y
-
-config LOGO_MAC_CLUT224
-	bool "224-color Macintosh Linux logo"
-	depends on MAC
-	default y
-
-config LOGO_PARISC_CLUT224
-	bool "224-color PA-RISC Linux logo"
-	depends on PARISC
-	default y
-
-config LOGO_SGI_CLUT224
-	bool "224-color SGI Linux logo"
-	depends on SGI_IP22 || SGI_IP27 || SGI_IP32
-	default y
-
-config LOGO_SUN_CLUT224
-	bool "224-color Sun Linux logo"
-	depends on SPARC
-	default y
-
-config LOGO_SUPERH_MONO
-	bool "Black and white SuperH Linux logo"
-	depends on SUPERH
-	default y
-
-config LOGO_SUPERH_VGA16
-	bool "16-color SuperH Linux logo"
-	depends on SUPERH
-	default y
-
-config LOGO_SUPERH_CLUT224
-	bool "224-color SuperH Linux logo"
-	depends on SUPERH
-	default y
-
 endif # LOGO
diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index ac8e9da3f51a..0eddb6231edb 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -5,14 +5,6 @@ obj-$(CONFIG_LOGO)			+= logo.o
 obj-$(CONFIG_LOGO_LINUX_MONO)		+= logo_linux_mono.o
 obj-$(CONFIG_LOGO_LINUX_VGA16)		+= logo_linux_vga16.o
 obj-$(CONFIG_LOGO_LINUX_CLUT224)	+= logo_linux_clut224.o
-obj-$(CONFIG_LOGO_DEC_CLUT224)		+= logo_dec_clut224.o
-obj-$(CONFIG_LOGO_MAC_CLUT224)		+= logo_mac_clut224.o
-obj-$(CONFIG_LOGO_PARISC_CLUT224)	+= logo_parisc_clut224.o
-obj-$(CONFIG_LOGO_SGI_CLUT224)		+= logo_sgi_clut224.o
-obj-$(CONFIG_LOGO_SUN_CLUT224)		+= logo_sun_clut224.o
-obj-$(CONFIG_LOGO_SUPERH_MONO)		+= logo_superh_mono.o
-obj-$(CONFIG_LOGO_SUPERH_VGA16)		+= logo_superh_vga16.o
-obj-$(CONFIG_LOGO_SUPERH_CLUT224)	+= logo_superh_clut224.o
 
 obj-$(CONFIG_SPU_BASE)			+= logo_spe_clut224.o
 
@@ -33,12 +25,6 @@ $(obj)/logo_linux_vga16.c: $(CONFIG_LOGO_LINUX_VGA16_FILE) $(obj)/pnmtologo FORC
 $(obj)/logo_linux_clut224.c: $(CONFIG_LOGO_LINUX_CLUT224_FILE) $(obj)/pnmtologo FORCE
 	$(call if_changed,logo,clut224)
 
-$(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo,mono)
-
-$(obj)/%_vga16.c: $(src)/%_vga16.ppm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo,vga16)
-
 $(obj)/%_clut224.c: $(src)/%_clut224.ppm $(obj)/pnmtologo FORCE
 	$(call if_changed,logo,clut224)
 
diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c
index 141f15a9a459..91535f8848da 100644
--- a/drivers/video/logo/logo.c
+++ b/drivers/video/logo/logo.c
@@ -48,59 +48,21 @@ const struct linux_logo * __ref fb_find_logo(int depth)
 	if (nologo || logos_freed)
 		return NULL;
 
-	if (depth >= 1) {
 #ifdef CONFIG_LOGO_LINUX_MONO
-		/* Generic Linux logo */
+	if (depth >= 1)
 		logo = &logo_linux_mono;
 #endif
-#ifdef CONFIG_LOGO_SUPERH_MONO
-		/* SuperH Linux logo */
-		logo = &logo_superh_mono;
-#endif
-	}
 	
-	if (depth >= 4) {
 #ifdef CONFIG_LOGO_LINUX_VGA16
-		/* Generic Linux logo */
+	if (depth >= 4)
 		logo = &logo_linux_vga16;
 #endif
-#ifdef CONFIG_LOGO_SUPERH_VGA16
-		/* SuperH Linux logo */
-		logo = &logo_superh_vga16;
-#endif
-	}
 	
-	if (depth >= 8) {
 #ifdef CONFIG_LOGO_LINUX_CLUT224
-		/* Generic Linux logo */
+	if (depth >= 8)
 		logo = &logo_linux_clut224;
 #endif
-#ifdef CONFIG_LOGO_DEC_CLUT224
-		/* DEC Linux logo on MIPS/MIPS64 or ALPHA */
-		logo = &logo_dec_clut224;
-#endif
-#ifdef CONFIG_LOGO_MAC_CLUT224
-		/* Macintosh Linux logo on m68k */
-		if (MACH_IS_MAC)
-			logo = &logo_mac_clut224;
-#endif
-#ifdef CONFIG_LOGO_PARISC_CLUT224
-		/* PA-RISC Linux logo */
-		logo = &logo_parisc_clut224;
-#endif
-#ifdef CONFIG_LOGO_SGI_CLUT224
-		/* SGI Linux logo on MIPS/MIPS64 */
-		logo = &logo_sgi_clut224;
-#endif
-#ifdef CONFIG_LOGO_SUN_CLUT224
-		/* Sun Linux logo */
-		logo = &logo_sun_clut224;
-#endif
-#ifdef CONFIG_LOGO_SUPERH_CLUT224
-		/* SuperH Linux logo */
-		logo = &logo_superh_clut224;
-#endif
-	}
+
 	return logo;
 }
 EXPORT_SYMBOL_GPL(fb_find_logo);
diff --git a/include/linux/linux_logo.h b/include/linux/linux_logo.h
index e37699b7e839..1e727a2cb4c1 100644
--- a/include/linux/linux_logo.h
+++ b/include/linux/linux_logo.h
@@ -33,14 +33,6 @@ struct linux_logo {
 extern const struct linux_logo logo_linux_mono;
 extern const struct linux_logo logo_linux_vga16;
 extern const struct linux_logo logo_linux_clut224;
-extern const struct linux_logo logo_dec_clut224;
-extern const struct linux_logo logo_mac_clut224;
-extern const struct linux_logo logo_parisc_clut224;
-extern const struct linux_logo logo_sgi_clut224;
-extern const struct linux_logo logo_sun_clut224;
-extern const struct linux_logo logo_superh_mono;
-extern const struct linux_logo logo_superh_vga16;
-extern const struct linux_logo logo_superh_clut224;
 extern const struct linux_logo logo_spe_clut224;
 
 extern const struct linux_logo *fb_find_logo(int depth);

-- 
2.52.0


^ permalink raw reply related

* [PATCH v2 5/6] sh: defconfig: remove CONFIG_LOGO_SUPERH_*
From: Vincent Mailhol @ 2026-01-01 15:25 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20260101-custom-logo-v2-0-8eec06dfbf85@kernel.org>

CONFIG_LOGO_SUPERH_MONO, CONFIG_LOGO_SUPERH_VGA16 and
CONFIG_LOGO_SUPERH_CLUT224 will be removed in an upcoming change but
are still referenced in some of the defconfig.

Remove all the occurrences of CONFIG_LOGO_SUPERH_*.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 arch/sh/configs/dreamcast_defconfig      | 2 --
 arch/sh/configs/ecovec24_defconfig       | 2 --
 arch/sh/configs/kfr2r09_defconfig        | 2 --
 arch/sh/configs/migor_defconfig          | 2 --
 arch/sh/configs/rts7751r2d1_defconfig    | 2 --
 arch/sh/configs/rts7751r2dplus_defconfig | 2 --
 arch/sh/configs/se7724_defconfig         | 2 --
 arch/sh/configs/se7780_defconfig         | 2 --
 arch/sh/configs/sh7785lcr_defconfig      | 3 ---
 arch/sh/configs/urquell_defconfig        | 3 ---
 10 files changed, 22 deletions(-)

diff --git a/arch/sh/configs/dreamcast_defconfig b/arch/sh/configs/dreamcast_defconfig
index 4573d5d64989..dd58797e8298 100644
--- a/arch/sh/configs/dreamcast_defconfig
+++ b/arch/sh/configs/dreamcast_defconfig
@@ -60,8 +60,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 # CONFIG_DNOTIFY is not set
 CONFIG_PROC_KCORE=y
 CONFIG_TMPFS=y
diff --git a/arch/sh/configs/ecovec24_defconfig b/arch/sh/configs/ecovec24_defconfig
index 458115d83184..e751933ac840 100644
--- a/arch/sh/configs/ecovec24_defconfig
+++ b/arch/sh/configs/ecovec24_defconfig
@@ -78,8 +78,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SND=y
 CONFIG_SND_SEQUENCER=y
diff --git a/arch/sh/configs/kfr2r09_defconfig b/arch/sh/configs/kfr2r09_defconfig
index d80e83e7ec38..056ba52600f9 100644
--- a/arch/sh/configs/kfr2r09_defconfig
+++ b/arch/sh/configs/kfr2r09_defconfig
@@ -66,8 +66,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_CLUT224 is not set
 CONFIG_USB_GADGET=y
 CONFIG_USB_CDC_COMPOSITE=m
 CONFIG_MMC=y
diff --git a/arch/sh/configs/migor_defconfig b/arch/sh/configs/migor_defconfig
index 7cdaa909ffd6..1d9d543eef4c 100644
--- a/arch/sh/configs/migor_defconfig
+++ b/arch/sh/configs/migor_defconfig
@@ -71,8 +71,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_CLUT224 is not set
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_M66592=y
 CONFIG_USB_G_SERIAL=m
diff --git a/arch/sh/configs/rts7751r2d1_defconfig b/arch/sh/configs/rts7751r2d1_defconfig
index 0c54ab2b06e6..745490d4807f 100644
--- a/arch/sh/configs/rts7751r2d1_defconfig
+++ b/arch/sh/configs/rts7751r2d1_defconfig
@@ -50,8 +50,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SND=m
 CONFIG_SND_YMFPCI=m
diff --git a/arch/sh/configs/rts7751r2dplus_defconfig b/arch/sh/configs/rts7751r2dplus_defconfig
index 3173b616b2cb..cd90f5354459 100644
--- a/arch/sh/configs/rts7751r2dplus_defconfig
+++ b/arch/sh/configs/rts7751r2dplus_defconfig
@@ -55,8 +55,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SND=m
 CONFIG_SND_YMFPCI=m
diff --git a/arch/sh/configs/se7724_defconfig b/arch/sh/configs/se7724_defconfig
index 8ca46d704c8b..9b4f8f3a1fdf 100644
--- a/arch/sh/configs/se7724_defconfig
+++ b/arch/sh/configs/se7724_defconfig
@@ -79,8 +79,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SND=m
 # CONFIG_SND_DRIVERS is not set
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig
index 12463b766120..13fa6a59b8f1 100644
--- a/arch/sh/configs/se7780_defconfig
+++ b/arch/sh/configs/se7780_defconfig
@@ -66,8 +66,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SOUND_PRIME=y
 CONFIG_HID_A4TECH=y
diff --git a/arch/sh/configs/sh7785lcr_defconfig b/arch/sh/configs/sh7785lcr_defconfig
index 2fcf50d8c820..8738c590d5a0 100644
--- a/arch/sh/configs/sh7785lcr_defconfig
+++ b/arch/sh/configs/sh7785lcr_defconfig
@@ -60,9 +60,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
-# CONFIG_LOGO_SUPERH_CLUT224 is not set
 CONFIG_HID_A4TECH=y
 CONFIG_HID_APPLE=y
 CONFIG_HID_BELKIN=y
diff --git a/arch/sh/configs/urquell_defconfig b/arch/sh/configs/urquell_defconfig
index f51ff6b1ec38..e7924db29b69 100644
--- a/arch/sh/configs/urquell_defconfig
+++ b/arch/sh/configs/urquell_defconfig
@@ -86,9 +86,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
-# CONFIG_LOGO_SUPERH_CLUT224 is not set
 CONFIG_HID_A4TECH=y
 CONFIG_HID_APPLE=y
 CONFIG_HID_BELKIN=y

-- 
2.52.0


^ permalink raw reply related

* [PATCH v2 4/6] newport_con: depend on LOGO_LINUX_CLUT224 instead of LOGO_SGI_CLUT224
From: Vincent Mailhol @ 2026-01-01 15:25 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20260101-custom-logo-v2-0-8eec06dfbf85@kernel.org>

newport_show_logo() is only activated if CONFIG_LOGO_LINUX_CLUT224 is
set (otherwise it is a NOP). This configuration value will be removed
in an upcoming change so instead, make it depend on LOGO_LINUX_CLUT224.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/console/newport_con.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/video/console/newport_con.c b/drivers/video/console/newport_con.c
index 242415366074..337e04236d6d 100644
--- a/drivers/video/console/newport_con.c
+++ b/drivers/video/console/newport_con.c
@@ -95,7 +95,7 @@ static inline void newport_init_cmap(void)
 
 static const struct linux_logo *newport_show_logo(void)
 {
-#ifdef CONFIG_LOGO_SGI_CLUT224
+#ifdef CONFIG_LOGO_LINUX_CLUT224
 	const struct linux_logo *logo = fb_find_logo(8);
 	const unsigned char *clut;
 	const unsigned char *data;
@@ -127,7 +127,7 @@ static const struct linux_logo *newport_show_logo(void)
 	return logo;
 #else
 	return NULL;
-#endif /* CONFIG_LOGO_SGI_CLUT224 */
+#endif /* CONFIG_LOGO_LINUX_CLUT224 */
 }
 
 static inline void newport_clear_screen(int xstart, int ystart, int xend,

-- 
2.52.0


^ permalink raw reply related

* [PATCH v2 3/6] video/logo: allow custom logo
From: Vincent Mailhol @ 2026-01-01 15:25 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20260101-custom-logo-v2-0-8eec06dfbf85@kernel.org>

Some people like to replace the default Tux boot logo by an image of
their own. There exist a few tutorials here [1] and there [2]. But
this requires modifying the sources which is a bit cumbersome.

Add a string entry in Kbuild for each of the logo categories
(monochrome, 16-colors, 224-colors). The string entry takes a path to
a .pbm or .ppm image allowing the user to more easily provide a custom
logo without having to modify the sources.

Add an help entry with a short hint on how to convert images to the
portable pixmap file format.

Update the Makefile accordingly. When converted to .c file, the logo
will have one of these fixed file name:

  - logo_linux_mono.c
  - logo_linux_vga16.c
  - logo_linux_clut224.c:

depending on the image type and this regardless of the name of the
.pgm/.ppm source filename. This will allow for further simplifications
in an upcoming change.

[1] ArmadeuS Project wiki -- Linux Boot Logo
Link: https://www.armadeus.org/wiki/index.php?title=Linux_Boot_Logo

[2] Timesys -- How To Use a Custom Boot Logo / Splash Screen
Link: https://linuxlink.timesys.com/docs/wiki/engineering/HOWTO_Use_a_custom_boot_logo

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/logo/Kconfig  | 41 +++++++++++++++++++++++++++++++++++++++++
 drivers/video/logo/Makefile | 11 ++++++++++-
 2 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
index ce6bb753522d..1d1651c067a1 100644
--- a/drivers/video/logo/Kconfig
+++ b/drivers/video/logo/Kconfig
@@ -22,14 +22,55 @@ config LOGO_LINUX_MONO
 	bool "Standard black and white Linux logo"
 	default y
 
+config LOGO_LINUX_MONO_FILE
+	string "Monochrome logo .pbm file"
+	depends on LOGO_LINUX_MONO
+	default "drivers/video/logo/logo_linux_mono.pbm"
+	help
+	  Takes a path to a monochromatic logo in the portable pixmap file
+	  format (.pbm). This defaults to the Tux penguin.
+
+	  For example, the below ImageMagick command can be used to reduce
+	  an image to black and white and convert it into a pbm file:
+
+	    magick source_image -compress none destination.pbm
+
 config LOGO_LINUX_VGA16
 	bool "Standard 16-color Linux logo"
 	default y
 
+config LOGO_LINUX_VGA16_FILE
+	string "16-color logo .ppm file"
+	depends on LOGO_LINUX_VGA16
+	default "drivers/video/logo/logo_linux_vga16.ppm"
+	help
+	  Takes a path to a logo in the portable pixmap file format (.ppm),
+	  using the 16 colors from the drivers/video/logo/clut_vga16.ppm
+	  palette. This defaults to the Tux penguin.
+
+	  For example, the below ImageMagick command can be used to reduce an
+	  image to the VGA 16 colors palette and convert into a ppm file:
+
+	    magick source_image -compress none \
+	      -remap drivers/video/logo/clut_vga16.ppm destination.ppm
+
 config LOGO_LINUX_CLUT224
 	bool "Standard 224-color Linux logo"
 	default y
 
+config LOGO_LINUX_CLUT224_FILE
+	string "224-color logo .ppm file"
+	depends on LOGO_LINUX_CLUT224
+	default "drivers/video/logo/logo_linux_clut224.ppm"
+	help
+	  Takes a path to a 224-color logo in the portable pixmap file
+	  format (.ppm). This defaults to the Tux penguin.
+
+	  For example, the below ImageMagick command can be used to reduce
+	  an image palette to 224 colors and convert it into a ppm file:
+
+	    magick source_image -compress none -colors 224 destination.ppm
+
 config LOGO_DEC_CLUT224
 	bool "224-color Digital Equipment Corporation Linux logo"
 	depends on MACH_DECSTATION || ALPHA
diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 3f249e9dcf37..ac8e9da3f51a 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -22,7 +22,16 @@ hostprogs := pnmtologo
 
 # Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
 quiet_cmd_logo = LOGO    $@
-      cmd_logo = $(obj)/pnmtologo -t $2 -n $* -o $@ $<
+      cmd_logo = $(obj)/pnmtologo -t $2 -n $(basename $(notdir $@)) -o $@ $<
+
+$(obj)/logo_linux_mono.c: $(CONFIG_LOGO_LINUX_MONO_FILE) $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,mono)
+
+$(obj)/logo_linux_vga16.c: $(CONFIG_LOGO_LINUX_VGA16_FILE) $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,vga16)
+
+$(obj)/logo_linux_clut224.c: $(CONFIG_LOGO_LINUX_CLUT224_FILE) $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,clut224)
 
 $(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
 	$(call if_changed,logo,mono)

-- 
2.52.0


^ permalink raw reply related

* [PATCH v2 2/6] video/logo: add a type parameter to the logo makefile function
From: Vincent Mailhol @ 2026-01-01 15:25 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20260101-custom-logo-v2-0-8eec06dfbf85@kernel.org>

When translating a portable pixmap file into a .c file, the pnmtologo
tool expects to receive the image type (either mono, vga16 or clut224)
as an argument under the -t option.

Currently, this information is stored in the file name. Because we
will allow for custom logo in an upcoming change, it is preferable to
decouple the image name from its type.

Add a new $2 parameter to the Makefile logo function which contains
the image type.

Update all the individual targets to provide this new argument.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/logo/Makefile | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 8b67c4941a4c..3f249e9dcf37 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -22,13 +22,16 @@ hostprogs := pnmtologo
 
 # Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
 quiet_cmd_logo = LOGO    $@
-      cmd_logo = $(obj)/pnmtologo -t $(lastword $(subst _, ,$*)) -n $* -o $@ $<
+      cmd_logo = $(obj)/pnmtologo -t $2 -n $* -o $@ $<
 
 $(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo)
+	$(call if_changed,logo,mono)
 
-$(obj)/%.c: $(src)/%.ppm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo)
+$(obj)/%_vga16.c: $(src)/%_vga16.ppm $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,vga16)
+
+$(obj)/%_clut224.c: $(src)/%_clut224.ppm $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,clut224)
 
 # generated C files
 targets += *_mono.c *_vga16.c *_clut224.c

-- 
2.52.0


^ permalink raw reply related

* [PATCH v2 1/6] video/logo: remove orphan .pgm Makefile rule
From: Vincent Mailhol @ 2026-01-01 15:25 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20260101-custom-logo-v2-0-8eec06dfbf85@kernel.org>

The kernel has no actual grey-scale logos. And looking at the git
history, it seems that there never was one (or maybe there was in the
pre-git history? I did not check that far…)

Remove the Makefile rule for the .pgm grey scale images.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/logo/Makefile | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 895c60b8402e..8b67c4941a4c 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -30,8 +30,5 @@ $(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
 $(obj)/%.c: $(src)/%.ppm $(obj)/pnmtologo FORCE
 	$(call if_changed,logo)
 
-$(obj)/%.c: $(src)/%.pgm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo)
-
 # generated C files
-targets += *_mono.c *_vga16.c *_clut224.c *_gray256.c
+targets += *_mono.c *_vga16.c *_clut224.c

-- 
2.52.0


^ permalink raw reply related

* [PATCH v2 0/6] video/logo: allow custom boot logo and simplify logic
From: Vincent Mailhol @ 2026-01-01 15:25 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol

This series allows the user to replace the default kernel boot logo by
a custom one directly in the kernel configuration. This makes it
easier to customise the boot logo without the need to modify the
sources and allows such customisation to remain persistent after
applying the configuration to another version of the kernel.

Patch #1 and #2 are clean-up and preparation while patch #3 is the
main feature of this series: making the boot logo customisable.

While working on this, I realised that managing the logo file directly
in Kbuild allows us to simplify how we handle the different existing
variants of the Tux logo. This series thus ends with a clean-up which
moves all the logo selection logic to Kbuild except from one special
case (details in the patch description), simplifying the Makefile and
the C code.

Patch #4 and #5 do a tree-wide clean-up on the Kconfig symbols that
are to be removed in patch #6 and patch #6 simplify the logic as
explained above.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
Changes in v2:

  - By removing the logo_spe_clut224.o target from the Makefile, v1
    also removed the logo_spe_clut224 object which is still being
    referenced in

      arch/powerpc/platforms/cell/spu_base.c

    Restore the logo_spe_clut224.o target.

Link to v1: https://lore.kernel.org/r/20251230-custom-logo-v1-0-4736374569ee@kernel.org

---
Vincent Mailhol (6):
      video/logo: remove orphan .pgm Makefile rule
      video/logo: add a type parameter to the logo makefile function
      video/logo: allow custom logo
      newport_con: depend on LOGO_LINUX_CLUT224 instead of LOGO_SGI_CLUT224
      sh: defconfig: remove CONFIG_LOGO_SUPERH_*
      video/logo: move logo selection logic to Kconfig

 arch/sh/configs/dreamcast_defconfig      |  2 -
 arch/sh/configs/ecovec24_defconfig       |  2 -
 arch/sh/configs/kfr2r09_defconfig        |  2 -
 arch/sh/configs/migor_defconfig          |  2 -
 arch/sh/configs/rts7751r2d1_defconfig    |  2 -
 arch/sh/configs/rts7751r2dplus_defconfig |  2 -
 arch/sh/configs/se7724_defconfig         |  2 -
 arch/sh/configs/se7780_defconfig         |  2 -
 arch/sh/configs/sh7785lcr_defconfig      |  3 --
 arch/sh/configs/urquell_defconfig        |  3 --
 drivers/video/console/newport_con.c      |  4 +-
 drivers/video/logo/Kconfig               | 83 ++++++++++++++++++--------------
 drivers/video/logo/Makefile              | 27 +++++------
 drivers/video/logo/logo.c                | 46 ++----------------
 include/linux/linux_logo.h               |  8 ---
 15 files changed, 63 insertions(+), 127 deletions(-)
---
base-commit: b69053dd3ffbc0d2dedbbc86182cdef6f641fe1b
change-id: 20251227-custom-logo-932df316a02c

Best regards,
-- 
Vincent Mailhol <mailhol@kernel.org>


^ permalink raw reply

* Re: [PATCH 6/6] video/logo: move logo selection logic to Kconfig
From: Vincent Mailhol @ 2026-01-01 13:17 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh
In-Reply-To: <20251230-custom-logo-v1-6-4736374569ee@kernel.org>

Happy new year!

On 30/12/2025 at 23:20, Vincent Mailhol wrote:
> Now that the path to the logo file can be directly entered in Kbuild,
> there is no more need to handle all the logo file selection in the
> Makefile and the C files.
> 
> Move all the logo file selection logic to Kbuild, this done, clean-up
> the C code to only leave one entry for each logo type (monochrome,
> 16-colors and 224-colors).
> 
> Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
> ---
>  drivers/video/logo/Kconfig  | 49 +++++++++------------------------------------
>  drivers/video/logo/Makefile | 21 +------------------
>  drivers/video/logo/logo.c   | 46 ++++--------------------------------------
>  include/linux/linux_logo.h  |  9 ---------
>  4 files changed, 14 insertions(+), 111 deletions(-)
> 
> diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
> index 1d1651c067a1..9bf8f14c6856 100644
> --- a/drivers/video/logo/Kconfig
> +++ b/drivers/video/logo/Kconfig
> @@ -25,6 +25,7 @@ config LOGO_LINUX_MONO
>  config LOGO_LINUX_MONO_FILE
>  	string "Monochrome logo .pbm file"
>  	depends on LOGO_LINUX_MONO
> +	default "drivers/video/logo/logo_superh_mono.pbm" if SUPERH
>  	default "drivers/video/logo/logo_linux_mono.pbm"
>  	help
>  	  Takes a path to a monochromatic logo in the portable pixmap file
> @@ -42,6 +43,7 @@ config LOGO_LINUX_VGA16
>  config LOGO_LINUX_VGA16_FILE
>  	string "16-color logo .ppm file"
>  	depends on LOGO_LINUX_VGA16
> +	default "drivers/video/logo/logo_superh_vga16.ppm" if SUPERH
>  	default "drivers/video/logo/logo_linux_vga16.ppm"
>  	help
>  	  Takes a path to a logo in the portable pixmap file format (.ppm),
> @@ -61,6 +63,13 @@ config LOGO_LINUX_CLUT224
>  config LOGO_LINUX_CLUT224_FILE
>  	string "224-color logo .ppm file"
>  	depends on LOGO_LINUX_CLUT224
> +	default "drivers/video/logo/logo_dec_clut224.ppm" if MACH_DECSTATION || ALPHA
> +	default "drivers/video/logo/logo_mac_clut224.ppm" if MAC
> +	default "drivers/video/logo/logo_parisc_clut224.ppm" if PARISC
> +	default "drivers/video/logo/logo_sgi_clut224.ppm" if SGI_IP22 || SGI_IP27 || SGI_IP32
> +	default "drivers/video/logo/logo_sun_clut224.ppm" if SPARC
> +	default "drivers/video/logo/logo_superh_clut224.ppm" if SUPERH
> +	default "drivers/video/logo/logo_spe_clut224.ppm" if SPU_BASE
>  	default "drivers/video/logo/logo_linux_clut224.ppm"
>  	help
>  	  Takes a path to a 224-color logo in the portable pixmap file
> @@ -71,44 +80,4 @@ config LOGO_LINUX_CLUT224_FILE
>  
>  	    magick source_image -compress none -colors 224 destination.ppm
>  
> -config LOGO_DEC_CLUT224
> -	bool "224-color Digital Equipment Corporation Linux logo"
> -	depends on MACH_DECSTATION || ALPHA
> -	default y
> -
> -config LOGO_MAC_CLUT224
> -	bool "224-color Macintosh Linux logo"
> -	depends on MAC
> -	default y
> -
> -config LOGO_PARISC_CLUT224
> -	bool "224-color PA-RISC Linux logo"
> -	depends on PARISC
> -	default y
> -
> -config LOGO_SGI_CLUT224
> -	bool "224-color SGI Linux logo"
> -	depends on SGI_IP22 || SGI_IP27 || SGI_IP32
> -	default y
> -
> -config LOGO_SUN_CLUT224
> -	bool "224-color Sun Linux logo"
> -	depends on SPARC
> -	default y
> -
> -config LOGO_SUPERH_MONO
> -	bool "Black and white SuperH Linux logo"
> -	depends on SUPERH
> -	default y
> -
> -config LOGO_SUPERH_VGA16
> -	bool "16-color SuperH Linux logo"
> -	depends on SUPERH
> -	default y
> -
> -config LOGO_SUPERH_CLUT224
> -	bool "224-color SuperH Linux logo"
> -	depends on SUPERH
> -	default y
> -
>  endif # LOGO
> diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
> index ac8e9da3f51a..c32238fddaa6 100644
> --- a/drivers/video/logo/Makefile
> +++ b/drivers/video/logo/Makefile
> @@ -5,16 +5,6 @@ obj-$(CONFIG_LOGO)			+= logo.o
>  obj-$(CONFIG_LOGO_LINUX_MONO)		+= logo_linux_mono.o
>  obj-$(CONFIG_LOGO_LINUX_VGA16)		+= logo_linux_vga16.o
>  obj-$(CONFIG_LOGO_LINUX_CLUT224)	+= logo_linux_clut224.o
> -obj-$(CONFIG_LOGO_DEC_CLUT224)		+= logo_dec_clut224.o
> -obj-$(CONFIG_LOGO_MAC_CLUT224)		+= logo_mac_clut224.o
> -obj-$(CONFIG_LOGO_PARISC_CLUT224)	+= logo_parisc_clut224.o
> -obj-$(CONFIG_LOGO_SGI_CLUT224)		+= logo_sgi_clut224.o
> -obj-$(CONFIG_LOGO_SUN_CLUT224)		+= logo_sun_clut224.o
> -obj-$(CONFIG_LOGO_SUPERH_MONO)		+= logo_superh_mono.o
> -obj-$(CONFIG_LOGO_SUPERH_VGA16)		+= logo_superh_vga16.o
> -obj-$(CONFIG_LOGO_SUPERH_CLUT224)	+= logo_superh_clut224.o
> -
> -obj-$(CONFIG_SPU_BASE)			+= logo_spe_clut224.o

Removing the logo_spe_clut224.o target was a mistake. This removes the
logo_spe_clut224 object which is still being referenced in

  arch/powerpc/platforms/cell/spu_base.c

The Cell processor (found, for example in the PS3) has a unique
feature in the kernel: it will not only show the standard penguin
logos for each of the core, but also show an extra line of logos for
each of its SPE core. More details with a screenshot here:

  Link: https://lore.kernel.org/all/20070710122702.765654000@pademelon.sonytel.be/

And indeed, on a ps3_defconfig, I am getting this build error:

    CC      arch/powerpc/platforms/cell/spu_base.o
  arch/powerpc/platforms/cell/spu_base.c: In function 'init_spu_base':
  arch/powerpc/platforms/cell/spu_base.c:775:39: error: 'logo_spe_clut224' undeclared (first use in this function); did you mean 'logo_linux_clut224'?
    775 |                 fb_append_extra_logo(&logo_spe_clut224, ret);
        |                                       ^~~~~~~~~~~~~~~~
        |                                       logo_linux_clut224

This extra logo feature is a weird beast only used by a single CPU. I
will just restore the logo_spe_clut224.o target in v2 and leave it
untouched.

I checked and the other logo objects are not being referenced anymore
throughout the kernel.


Yours sincerely,
Vincent Mailhol

^ permalink raw reply

* Re: [PATCH 0/6] video/logo: allow custom boot logo and simplify logic
From: Vincent Mailhol @ 2025-12-31  6:46 UTC (permalink / raw)
  To: John Paul Adrian Glaubitz, Helge Deller, Greg Kroah-Hartman,
	Yoshinori Sato, Rich Felker
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh
In-Reply-To: <12a2ee5ca1a085fe0bd0c1b2d6e08589445cbf66.camel@physik.fu-berlin.de>

On 31/12/2025 at 00:19, John Paul Adrian Glaubitz wrote:
> Hi Vincent,
> 
> On Tue, 2025-12-30 at 23:19 +0100, Vincent Mailhol wrote:
>> This series allows the user to replace the default kernel boot logo by
>> a custom one directly in the kernel configuration. This makes it
>> easier to customise the boot logo without the need to modify the
>> sources and allows such customisation to remain persistent after
>> applying the configuration to another version of the kernel.
> 
> Wouldn't it make more sense to make the boot logo to be configurable
> at runtime so that users don't have to rebuild their kernel at all
> to change their boot logo?

I thought about that. The problem is that the logo is loaded really
early in the boot process. To be able to modify the logo without
rebuilding the full kernel, the logo would basically need to become a
kernel module that would be stored in either an initrd or on the filesystem.

The above is not impossible, but would require delaying the logo.

If we go in that direction, I think that my series as it is right now
would be a prerequisite anyway. Personally, I am happy with the logo
just being configurable when compiling the kernel, so I do not intend to
put more effort into this afterward. However, that would have prepared
the ground if anyone wants to implement in the future what you just
suggested.


Yours sincerely,
Vincent Mailhol


^ permalink raw reply

* Re: [PATCH] staging: sm750fb: fix const array warning
From: kernel test robot @ 2025-12-31  3:31 UTC (permalink / raw)
  To: MottiKumar, sudipm.mukherjee, teddy.wang, gregkh
  Cc: oe-kbuild-all, skhan, linux-kernel-mentees, linux-fbdev,
	linux-staging, linux-kernel, mottikumarbabu
In-Reply-To: <20251226120417.2599020-1-mottikumarbabu@gmail.com>

Hi MottiKumar,

kernel test robot noticed the following build errors:

[auto build test ERROR on staging/staging-testing]

url:    https://github.com/intel-lab-lkp/linux/commits/MottiKumar/staging-sm750fb-fix-const-array-warning/20251226-200623
base:   staging/staging-testing
patch link:    https://lore.kernel.org/r/20251226120417.2599020-1-mottikumarbabu%40gmail.com
patch subject: [PATCH] staging: sm750fb: fix const array warning
config: x86_64-randconfig-002-20250506 (https://download.01.org/0day-ci/archive/20251231/202512311146.XB8ZVrTY-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251231/202512311146.XB8ZVrTY-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512311146.XB8ZVrTY-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/staging/sm750fb/sm750.c: In function 'lynxfb_set_fbinfo':
>> drivers/staging/sm750fb/sm750.c:795:33: error: assignment of read-only location 'g_fbmode[index]'
     795 |                 g_fbmode[index] = g_def_fbmode;
         |                                 ^
   drivers/staging/sm750fb/sm750.c:797:41: error: assignment of read-only location 'g_fbmode[index]'
     797 |                         g_fbmode[index] = g_fbmode[0];
         |                                         ^
   drivers/staging/sm750fb/sm750.c: In function 'sm750fb_setup':
>> drivers/staging/sm750fb/sm750.c:958:45: error: assignment of read-only location 'g_fbmode[0]'
     958 |                                 g_fbmode[0] = opt;
         |                                             ^
   drivers/staging/sm750fb/sm750.c:962:45: error: assignment of read-only location 'g_fbmode[1]'
     962 |                                 g_fbmode[1] = opt;
         |                                             ^


vim +795 drivers/staging/sm750fb/sm750.c

81dee67e215b23f Sudip Mukherjee      2015-03-03  722  
81dee67e215b23f Sudip Mukherjee      2015-03-03  723  static int lynxfb_set_fbinfo(struct fb_info *info, int index)
81dee67e215b23f Sudip Mukherjee      2015-03-03  724  {
81dee67e215b23f Sudip Mukherjee      2015-03-03  725  	int i;
81dee67e215b23f Sudip Mukherjee      2015-03-03  726  	struct lynxfb_par *par;
e359b6a863e19f2 Mike Rapoport        2015-10-26  727  	struct sm750_dev *sm750_dev;
81dee67e215b23f Sudip Mukherjee      2015-03-03  728  	struct lynxfb_crtc *crtc;
81dee67e215b23f Sudip Mukherjee      2015-03-03  729  	struct lynxfb_output *output;
81dee67e215b23f Sudip Mukherjee      2015-03-03  730  	struct fb_var_screeninfo *var;
81dee67e215b23f Sudip Mukherjee      2015-03-03  731  	struct fb_fix_screeninfo *fix;
81dee67e215b23f Sudip Mukherjee      2015-03-03  732  
81dee67e215b23f Sudip Mukherjee      2015-03-03  733  	const struct fb_videomode *pdb[] = {
81dee67e215b23f Sudip Mukherjee      2015-03-03  734  		lynx750_ext, NULL, vesa_modes,
81dee67e215b23f Sudip Mukherjee      2015-03-03  735  	};
81dee67e215b23f Sudip Mukherjee      2015-03-03  736  	int cdb[] = {ARRAY_SIZE(lynx750_ext), 0, VESA_MODEDB_SIZE};
d5d66cfea2ca281 Kelsey Skunberg      2019-04-27  737  	static const char * const mdb_desc[] = {
81dee67e215b23f Sudip Mukherjee      2015-03-03  738  		"driver prepared modes",
81dee67e215b23f Sudip Mukherjee      2015-03-03  739  		"kernel prepared default modedb",
81dee67e215b23f Sudip Mukherjee      2015-03-03  740  		"kernel HELPERS prepared vesa_modes",
81dee67e215b23f Sudip Mukherjee      2015-03-03  741  	};
81dee67e215b23f Sudip Mukherjee      2015-03-03  742  
8c475735085a7db Tim Wassink          2025-12-21  743  	static const char *fix_id[2] = {
81dee67e215b23f Sudip Mukherjee      2015-03-03  744  		"sm750_fb1", "sm750_fb2",
81dee67e215b23f Sudip Mukherjee      2015-03-03  745  	};
81dee67e215b23f Sudip Mukherjee      2015-03-03  746  
81dee67e215b23f Sudip Mukherjee      2015-03-03  747  	int ret, line_length;
81dee67e215b23f Sudip Mukherjee      2015-03-03  748  
81dee67e215b23f Sudip Mukherjee      2015-03-03  749  	ret = 0;
81dee67e215b23f Sudip Mukherjee      2015-03-03  750  	par = (struct lynxfb_par *)info->par;
e359b6a863e19f2 Mike Rapoport        2015-10-26  751  	sm750_dev = par->dev;
81dee67e215b23f Sudip Mukherjee      2015-03-03  752  	crtc = &par->crtc;
81dee67e215b23f Sudip Mukherjee      2015-03-03  753  	output = &par->output;
81dee67e215b23f Sudip Mukherjee      2015-03-03  754  	var = &info->var;
81dee67e215b23f Sudip Mukherjee      2015-03-03  755  	fix = &info->fix;
81dee67e215b23f Sudip Mukherjee      2015-03-03  756  
81dee67e215b23f Sudip Mukherjee      2015-03-03  757  	/* set index */
81dee67e215b23f Sudip Mukherjee      2015-03-03  758  	par->index = index;
81dee67e215b23f Sudip Mukherjee      2015-03-03  759  	output->channel = &crtc->channel;
81dee67e215b23f Sudip Mukherjee      2015-03-03  760  	sm750fb_set_drv(par);
81dee67e215b23f Sudip Mukherjee      2015-03-03  761  
d11ac7cbcc266c6 Sudip Mukherjee      2015-08-07  762  	/*
d11ac7cbcc266c6 Sudip Mukherjee      2015-08-07  763  	 * set current cursor variable and proc pointer,
d11ac7cbcc266c6 Sudip Mukherjee      2015-08-07  764  	 * must be set after crtc member initialized
d11ac7cbcc266c6 Sudip Mukherjee      2015-08-07  765  	 */
fdc234d85210d91 Benjamin Philip      2021-07-28  766  	crtc->cursor.offset = crtc->o_screen + crtc->vidmem_size - 1024;
e359b6a863e19f2 Mike Rapoport        2015-10-26  767  	crtc->cursor.mmio = sm750_dev->pvReg +
e359b6a863e19f2 Mike Rapoport        2015-10-26  768  		0x800f0 + (int)crtc->channel * 0x140;
81dee67e215b23f Sudip Mukherjee      2015-03-03  769  
81dee67e215b23f Sudip Mukherjee      2015-03-03  770  	pr_info("crtc->cursor.mmio = %p\n", crtc->cursor.mmio);
cd33da26036ea54 Christopher Carbone  2022-08-23  771  	crtc->cursor.max_h = 64;
cd33da26036ea54 Christopher Carbone  2022-08-23  772  	crtc->cursor.max_w = 64;
39f9137268ee3df Benjamin Philip      2021-07-26  773  	crtc->cursor.size = crtc->cursor.max_h * crtc->cursor.max_w * 2 / 8;
e359b6a863e19f2 Mike Rapoport        2015-10-26  774  	crtc->cursor.vstart = sm750_dev->pvMem + crtc->cursor.offset;
81dee67e215b23f Sudip Mukherjee      2015-03-03  775  
3de08a2d14ff8c7 Lorenzo Stoakes      2015-03-20  776  	memset_io(crtc->cursor.vstart, 0, crtc->cursor.size);
f7c8a046577e09d Thomas Zimmermann    2023-11-27  777  	if (!g_hwcursor)
52d0744d751d8f1 Arnd Bergmann        2016-11-09  778  		sm750_hw_cursor_disable(&crtc->cursor);
81dee67e215b23f Sudip Mukherjee      2015-03-03  779  
81dee67e215b23f Sudip Mukherjee      2015-03-03  780  	/* set info->fbops, must be set before fb_find_mode */
e359b6a863e19f2 Mike Rapoport        2015-10-26  781  	if (!sm750_dev->accel_off) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  782  		/* use 2d acceleration */
f7c8a046577e09d Thomas Zimmermann    2023-11-27  783  		if (!g_hwcursor)
f7c8a046577e09d Thomas Zimmermann    2023-11-27  784  			info->fbops = &lynxfb_ops_accel;
f7c8a046577e09d Thomas Zimmermann    2023-11-27  785  		else
f7c8a046577e09d Thomas Zimmermann    2023-11-27  786  			info->fbops = &lynxfb_ops_accel_with_cursor;
f7c8a046577e09d Thomas Zimmermann    2023-11-27  787  	} else {
f7c8a046577e09d Thomas Zimmermann    2023-11-27  788  		if (!g_hwcursor)
81dee67e215b23f Sudip Mukherjee      2015-03-03  789  			info->fbops = &lynxfb_ops;
f7c8a046577e09d Thomas Zimmermann    2023-11-27  790  		else
f7c8a046577e09d Thomas Zimmermann    2023-11-27  791  			info->fbops = &lynxfb_ops_with_cursor;
f7c8a046577e09d Thomas Zimmermann    2023-11-27  792  	}
81dee67e215b23f Sudip Mukherjee      2015-03-03  793  
81dee67e215b23f Sudip Mukherjee      2015-03-03  794  	if (!g_fbmode[index]) {
81dee67e215b23f Sudip Mukherjee      2015-03-03 @795  		g_fbmode[index] = g_def_fbmode;
81dee67e215b23f Sudip Mukherjee      2015-03-03  796  		if (index)
81dee67e215b23f Sudip Mukherjee      2015-03-03  797  			g_fbmode[index] = g_fbmode[0];
81dee67e215b23f Sudip Mukherjee      2015-03-03  798  	}
81dee67e215b23f Sudip Mukherjee      2015-03-03  799  
81dee67e215b23f Sudip Mukherjee      2015-03-03  800  	for (i = 0; i < 3; i++) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  801  		ret = fb_find_mode(var, info, g_fbmode[index],
81dee67e215b23f Sudip Mukherjee      2015-03-03  802  				   pdb[i], cdb[i], NULL, 8);
81dee67e215b23f Sudip Mukherjee      2015-03-03  803  
81dee67e215b23f Sudip Mukherjee      2015-03-03  804  		if (ret == 1) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  805  			pr_info("success! use specified mode:%s in %s\n",
81dee67e215b23f Sudip Mukherjee      2015-03-03  806  				g_fbmode[index],
81dee67e215b23f Sudip Mukherjee      2015-03-03  807  				mdb_desc[i]);
81dee67e215b23f Sudip Mukherjee      2015-03-03  808  			break;
81dee67e215b23f Sudip Mukherjee      2015-03-03  809  		} else if (ret == 2) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  810  			pr_warn("use specified mode:%s in %s,with an ignored refresh rate\n",
81dee67e215b23f Sudip Mukherjee      2015-03-03  811  				g_fbmode[index],
81dee67e215b23f Sudip Mukherjee      2015-03-03  812  				mdb_desc[i]);
81dee67e215b23f Sudip Mukherjee      2015-03-03  813  			break;
81dee67e215b23f Sudip Mukherjee      2015-03-03  814  		} else if (ret == 3) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  815  			pr_warn("wanna use default mode\n");
4bd9503d0becdb6 Michel von Czettritz 2015-03-26  816  			/*break;*/
81dee67e215b23f Sudip Mukherjee      2015-03-03  817  		} else if (ret == 4) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  818  			pr_warn("fall back to any valid mode\n");
81dee67e215b23f Sudip Mukherjee      2015-03-03  819  		} else {
3318bb5e945f700 Michel von Czettritz 2015-03-26  820  			pr_warn("ret = %d,fb_find_mode failed,with %s\n",
3318bb5e945f700 Michel von Czettritz 2015-03-26  821  				ret,
3318bb5e945f700 Michel von Czettritz 2015-03-26  822  				mdb_desc[i]);
81dee67e215b23f Sudip Mukherjee      2015-03-03  823  		}
81dee67e215b23f Sudip Mukherjee      2015-03-03  824  	}
81dee67e215b23f Sudip Mukherjee      2015-03-03  825  
81dee67e215b23f Sudip Mukherjee      2015-03-03  826  	/* some member of info->var had been set by fb_find_mode */
81dee67e215b23f Sudip Mukherjee      2015-03-03  827  
271dbae3c6a1daa Prasant Jalan        2017-04-01  828  	pr_info("Member of info->var is :\n"
271dbae3c6a1daa Prasant Jalan        2017-04-01  829  		"xres=%d\n"
271dbae3c6a1daa Prasant Jalan        2017-04-01  830  		"yres=%d\n"
271dbae3c6a1daa Prasant Jalan        2017-04-01  831  		"xres_virtual=%d\n"
271dbae3c6a1daa Prasant Jalan        2017-04-01  832  		"yres_virtual=%d\n"
271dbae3c6a1daa Prasant Jalan        2017-04-01  833  		"xoffset=%d\n"
271dbae3c6a1daa Prasant Jalan        2017-04-01  834  		"yoffset=%d\n"
271dbae3c6a1daa Prasant Jalan        2017-04-01  835  		"bits_per_pixel=%d\n"
271dbae3c6a1daa Prasant Jalan        2017-04-01  836  		" ...\n",
3318bb5e945f700 Michel von Czettritz 2015-03-26  837  		var->xres,
3318bb5e945f700 Michel von Czettritz 2015-03-26  838  		var->yres,
3318bb5e945f700 Michel von Czettritz 2015-03-26  839  		var->xres_virtual,
3318bb5e945f700 Michel von Czettritz 2015-03-26  840  		var->yres_virtual,
3318bb5e945f700 Michel von Czettritz 2015-03-26  841  		var->xoffset,
3318bb5e945f700 Michel von Czettritz 2015-03-26  842  		var->yoffset,
3318bb5e945f700 Michel von Czettritz 2015-03-26  843  		var->bits_per_pixel);
81dee67e215b23f Sudip Mukherjee      2015-03-03  844  
81dee67e215b23f Sudip Mukherjee      2015-03-03  845  	/* set par */
81dee67e215b23f Sudip Mukherjee      2015-03-03  846  	par->info = info;
81dee67e215b23f Sudip Mukherjee      2015-03-03  847  
81dee67e215b23f Sudip Mukherjee      2015-03-03  848  	/* set info */
e3a3f9f5123683b Mike Rapoport        2015-10-26  849  	line_length = ALIGN((var->xres_virtual * var->bits_per_pixel / 8),
e3a3f9f5123683b Mike Rapoport        2015-10-26  850  			    crtc->line_pad);
81dee67e215b23f Sudip Mukherjee      2015-03-03  851  
81dee67e215b23f Sudip Mukherjee      2015-03-03  852  	info->pseudo_palette = &par->pseudo_palette[0];
cc59bde1c920ab6 Benjamin Philip      2021-07-28  853  	info->screen_base = crtc->v_screen;
81dee67e215b23f Sudip Mukherjee      2015-03-03  854  	pr_debug("screen_base vaddr = %p\n", info->screen_base);
81dee67e215b23f Sudip Mukherjee      2015-03-03  855  	info->screen_size = line_length * var->yres_virtual;
81dee67e215b23f Sudip Mukherjee      2015-03-03  856  
81dee67e215b23f Sudip Mukherjee      2015-03-03  857  	/* set info->fix */
81dee67e215b23f Sudip Mukherjee      2015-03-03  858  	fix->type = FB_TYPE_PACKED_PIXELS;
81dee67e215b23f Sudip Mukherjee      2015-03-03  859  	fix->type_aux = 0;
81dee67e215b23f Sudip Mukherjee      2015-03-03  860  	fix->xpanstep = crtc->xpanstep;
81dee67e215b23f Sudip Mukherjee      2015-03-03  861  	fix->ypanstep = crtc->ypanstep;
81dee67e215b23f Sudip Mukherjee      2015-03-03  862  	fix->ywrapstep = crtc->ywrapstep;
81dee67e215b23f Sudip Mukherjee      2015-03-03  863  	fix->accel = FB_ACCEL_SMI;
81dee67e215b23f Sudip Mukherjee      2015-03-03  864  
8c475735085a7db Tim Wassink          2025-12-21  865  	strscpy(fix->id, fix_id[index], sizeof(fix->id));
81dee67e215b23f Sudip Mukherjee      2015-03-03  866  
fdc234d85210d91 Benjamin Philip      2021-07-28  867  	fix->smem_start = crtc->o_screen + sm750_dev->vidmem_start;
81dee67e215b23f Sudip Mukherjee      2015-03-03  868  	pr_info("fix->smem_start = %lx\n", fix->smem_start);
d11ac7cbcc266c6 Sudip Mukherjee      2015-08-07  869  	/*
d11ac7cbcc266c6 Sudip Mukherjee      2015-08-07  870  	 * according to mmap experiment from user space application,
81dee67e215b23f Sudip Mukherjee      2015-03-03  871  	 * fix->mmio_len should not larger than virtual size
81dee67e215b23f Sudip Mukherjee      2015-03-03  872  	 * (xres_virtual x yres_virtual x ByPP)
81dee67e215b23f Sudip Mukherjee      2015-03-03  873  	 * Below line maybe buggy when user mmap fb dev node and write
81dee67e215b23f Sudip Mukherjee      2015-03-03  874  	 * data into the bound over virtual size
d11ac7cbcc266c6 Sudip Mukherjee      2015-08-07  875  	 */
81dee67e215b23f Sudip Mukherjee      2015-03-03  876  	fix->smem_len = crtc->vidmem_size;
81dee67e215b23f Sudip Mukherjee      2015-03-03  877  	pr_info("fix->smem_len = %x\n", fix->smem_len);
81dee67e215b23f Sudip Mukherjee      2015-03-03  878  	info->screen_size = fix->smem_len;
81dee67e215b23f Sudip Mukherjee      2015-03-03  879  	fix->line_length = line_length;
e359b6a863e19f2 Mike Rapoport        2015-10-26  880  	fix->mmio_start = sm750_dev->vidreg_start;
81dee67e215b23f Sudip Mukherjee      2015-03-03  881  	pr_info("fix->mmio_start = %lx\n", fix->mmio_start);
e359b6a863e19f2 Mike Rapoport        2015-10-26  882  	fix->mmio_len = sm750_dev->vidreg_size;
81dee67e215b23f Sudip Mukherjee      2015-03-03  883  	pr_info("fix->mmio_len = %x\n", fix->mmio_len);
b610e1193a917f4 Matej Dujava         2020-04-30  884  
b610e1193a917f4 Matej Dujava         2020-04-30  885  	lynxfb_set_visual_mode(info);
81dee67e215b23f Sudip Mukherjee      2015-03-03  886  
81dee67e215b23f Sudip Mukherjee      2015-03-03  887  	/* set var */
81dee67e215b23f Sudip Mukherjee      2015-03-03  888  	var->activate = FB_ACTIVATE_NOW;
81dee67e215b23f Sudip Mukherjee      2015-03-03  889  	var->accel_flags = 0;
81dee67e215b23f Sudip Mukherjee      2015-03-03  890  	var->vmode = FB_VMODE_NONINTERLACED;
81dee67e215b23f Sudip Mukherjee      2015-03-03  891  
81dee67e215b23f Sudip Mukherjee      2015-03-03  892  	pr_debug("#1 show info->cmap :\nstart=%d,len=%d,red=%p,green=%p,blue=%p,transp=%p\n",
81dee67e215b23f Sudip Mukherjee      2015-03-03  893  		 info->cmap.start, info->cmap.len,
81dee67e215b23f Sudip Mukherjee      2015-03-03  894  		 info->cmap.red, info->cmap.green, info->cmap.blue,
81dee67e215b23f Sudip Mukherjee      2015-03-03  895  		 info->cmap.transp);
81dee67e215b23f Sudip Mukherjee      2015-03-03  896  
61c507cf652da1b Michel von Czettritz 2015-03-26  897  	ret = fb_alloc_cmap(&info->cmap, 256, 0);
61c507cf652da1b Michel von Czettritz 2015-03-26  898  	if (ret < 0) {
008272072d61a8c Masanari Iida        2015-05-28  899  		pr_err("Could not allocate memory for cmap.\n");
81dee67e215b23f Sudip Mukherjee      2015-03-03  900  		goto exit;
81dee67e215b23f Sudip Mukherjee      2015-03-03  901  	}
81dee67e215b23f Sudip Mukherjee      2015-03-03  902  
81dee67e215b23f Sudip Mukherjee      2015-03-03  903  	pr_debug("#2 show info->cmap :\nstart=%d,len=%d,red=%p,green=%p,blue=%p,transp=%p\n",
81dee67e215b23f Sudip Mukherjee      2015-03-03  904  		 info->cmap.start, info->cmap.len,
81dee67e215b23f Sudip Mukherjee      2015-03-03  905  		 info->cmap.red, info->cmap.green, info->cmap.blue,
81dee67e215b23f Sudip Mukherjee      2015-03-03  906  		 info->cmap.transp);
81dee67e215b23f Sudip Mukherjee      2015-03-03  907  
81dee67e215b23f Sudip Mukherjee      2015-03-03  908  exit:
81dee67e215b23f Sudip Mukherjee      2015-03-03  909  	lynxfb_ops_check_var(var, info);
81dee67e215b23f Sudip Mukherjee      2015-03-03  910  	return ret;
81dee67e215b23f Sudip Mukherjee      2015-03-03  911  }
81dee67e215b23f Sudip Mukherjee      2015-03-03  912  
81dee67e215b23f Sudip Mukherjee      2015-03-03  913  /*	chip specific g_option configuration routine */
700591a9adc8b1b Mike Rapoport        2015-10-26  914  static void sm750fb_setup(struct sm750_dev *sm750_dev, char *src)
81dee67e215b23f Sudip Mukherjee      2015-03-03  915  {
81dee67e215b23f Sudip Mukherjee      2015-03-03  916  	char *opt;
81dee67e215b23f Sudip Mukherjee      2015-03-03  917  	int swap;
81dee67e215b23f Sudip Mukherjee      2015-03-03  918  
81dee67e215b23f Sudip Mukherjee      2015-03-03  919  	swap = 0;
81dee67e215b23f Sudip Mukherjee      2015-03-03  920  
1757d106a9ce8cc Mike Rapoport        2015-10-26  921  	sm750_dev->initParm.chip_clk = 0;
1757d106a9ce8cc Mike Rapoport        2015-10-26  922  	sm750_dev->initParm.mem_clk = 0;
1757d106a9ce8cc Mike Rapoport        2015-10-26  923  	sm750_dev->initParm.master_clk = 0;
1757d106a9ce8cc Mike Rapoport        2015-10-26  924  	sm750_dev->initParm.powerMode = 0;
1757d106a9ce8cc Mike Rapoport        2015-10-26  925  	sm750_dev->initParm.setAllEngOff = 0;
1757d106a9ce8cc Mike Rapoport        2015-10-26  926  	sm750_dev->initParm.resetMemory = 1;
81dee67e215b23f Sudip Mukherjee      2015-03-03  927  
81dee67e215b23f Sudip Mukherjee      2015-03-03  928  	/* defaultly turn g_hwcursor on for both view */
81dee67e215b23f Sudip Mukherjee      2015-03-03  929  	g_hwcursor = 3;
81dee67e215b23f Sudip Mukherjee      2015-03-03  930  
81dee67e215b23f Sudip Mukherjee      2015-03-03  931  	if (!src || !*src) {
c56de0967a658cb Elise Lennion        2016-10-31  932  		dev_warn(&sm750_dev->pdev->dev, "no specific g_option.\n");
81dee67e215b23f Sudip Mukherjee      2015-03-03  933  		goto NO_PARAM;
81dee67e215b23f Sudip Mukherjee      2015-03-03  934  	}
81dee67e215b23f Sudip Mukherjee      2015-03-03  935  
0fa96e39279988b Sudip Mukherjee      2015-03-10  936  	while ((opt = strsep(&src, ":")) != NULL && *opt != 0) {
c56de0967a658cb Elise Lennion        2016-10-31  937  		dev_info(&sm750_dev->pdev->dev, "opt=%s\n", opt);
c56de0967a658cb Elise Lennion        2016-10-31  938  		dev_info(&sm750_dev->pdev->dev, "src=%s\n", src);
81dee67e215b23f Sudip Mukherjee      2015-03-03  939  
144634a6b421468 Katie Dunne          2017-02-19  940  		if (!strncmp(opt, "swap", strlen("swap"))) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  941  			swap = 1;
144634a6b421468 Katie Dunne          2017-02-19  942  		} else if (!strncmp(opt, "nocrt", strlen("nocrt"))) {
1757d106a9ce8cc Mike Rapoport        2015-10-26  943  			sm750_dev->nocrt = 1;
144634a6b421468 Katie Dunne          2017-02-19  944  		} else if (!strncmp(opt, "36bit", strlen("36bit"))) {
1757d106a9ce8cc Mike Rapoport        2015-10-26  945  			sm750_dev->pnltype = sm750_doubleTFT;
144634a6b421468 Katie Dunne          2017-02-19  946  		} else if (!strncmp(opt, "18bit", strlen("18bit"))) {
1757d106a9ce8cc Mike Rapoport        2015-10-26  947  			sm750_dev->pnltype = sm750_dualTFT;
144634a6b421468 Katie Dunne          2017-02-19  948  		} else if (!strncmp(opt, "24bit", strlen("24bit"))) {
1757d106a9ce8cc Mike Rapoport        2015-10-26  949  			sm750_dev->pnltype = sm750_24TFT;
144634a6b421468 Katie Dunne          2017-02-19  950  		} else if (!strncmp(opt, "nohwc0", strlen("nohwc0"))) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  951  			g_hwcursor &= ~0x1;
144634a6b421468 Katie Dunne          2017-02-19  952  		} else if (!strncmp(opt, "nohwc1", strlen("nohwc1"))) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  953  			g_hwcursor &= ~0x2;
144634a6b421468 Katie Dunne          2017-02-19  954  		} else if (!strncmp(opt, "nohwc", strlen("nohwc"))) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  955  			g_hwcursor = 0;
144634a6b421468 Katie Dunne          2017-02-19  956  		} else {
81dee67e215b23f Sudip Mukherjee      2015-03-03  957  			if (!g_fbmode[0]) {
81dee67e215b23f Sudip Mukherjee      2015-03-03 @958  				g_fbmode[0] = opt;
cee9ba1c30d0517 Abdul Rauf           2017-01-08  959  				dev_info(&sm750_dev->pdev->dev,
cee9ba1c30d0517 Abdul Rauf           2017-01-08  960  					 "find fbmode0 : %s\n", g_fbmode[0]);
81dee67e215b23f Sudip Mukherjee      2015-03-03  961  			} else if (!g_fbmode[1]) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  962  				g_fbmode[1] = opt;
cee9ba1c30d0517 Abdul Rauf           2017-01-08  963  				dev_info(&sm750_dev->pdev->dev,
cee9ba1c30d0517 Abdul Rauf           2017-01-08  964  					 "find fbmode1 : %s\n", g_fbmode[1]);
81dee67e215b23f Sudip Mukherjee      2015-03-03  965  			} else {
c56de0967a658cb Elise Lennion        2016-10-31  966  				dev_warn(&sm750_dev->pdev->dev, "How many view you wann set?\n");
81dee67e215b23f Sudip Mukherjee      2015-03-03  967  			}
81dee67e215b23f Sudip Mukherjee      2015-03-03  968  		}
81dee67e215b23f Sudip Mukherjee      2015-03-03  969  	}
81dee67e215b23f Sudip Mukherjee      2015-03-03  970  
81dee67e215b23f Sudip Mukherjee      2015-03-03  971  NO_PARAM:
e359b6a863e19f2 Mike Rapoport        2015-10-26  972  	if (sm750_dev->revid != SM750LE_REVISION_ID) {
a3f92cc94c6126d Mike Rapoport        2016-01-17  973  		if (sm750_dev->fb_count > 1) {
81dee67e215b23f Sudip Mukherjee      2015-03-03  974  			if (swap)
1757d106a9ce8cc Mike Rapoport        2015-10-26  975  				sm750_dev->dataflow = sm750_dual_swap;
81dee67e215b23f Sudip Mukherjee      2015-03-03  976  			else
1757d106a9ce8cc Mike Rapoport        2015-10-26  977  				sm750_dev->dataflow = sm750_dual_normal;
81dee67e215b23f Sudip Mukherjee      2015-03-03  978  		} else {
81dee67e215b23f Sudip Mukherjee      2015-03-03  979  			if (swap)
1757d106a9ce8cc Mike Rapoport        2015-10-26  980  				sm750_dev->dataflow = sm750_simul_sec;
81dee67e215b23f Sudip Mukherjee      2015-03-03  981  			else
1757d106a9ce8cc Mike Rapoport        2015-10-26  982  				sm750_dev->dataflow = sm750_simul_pri;
81dee67e215b23f Sudip Mukherjee      2015-03-03  983  		}
81dee67e215b23f Sudip Mukherjee      2015-03-03  984  	} else {
81dee67e215b23f Sudip Mukherjee      2015-03-03  985  		/* SM750LE only have one crt channel */
1757d106a9ce8cc Mike Rapoport        2015-10-26  986  		sm750_dev->dataflow = sm750_simul_sec;
81dee67e215b23f Sudip Mukherjee      2015-03-03  987  		/* sm750le do not have complex attributes */
1757d106a9ce8cc Mike Rapoport        2015-10-26  988  		sm750_dev->nocrt = 0;
81dee67e215b23f Sudip Mukherjee      2015-03-03  989  	}
81dee67e215b23f Sudip Mukherjee      2015-03-03  990  }
81dee67e215b23f Sudip Mukherjee      2015-03-03  991  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply

* Re: [PATCH] fbdev: xilinxfb: request memory region before mapping framebuffer
From: Diviyam Pat @ 2025-12-31  1:12 UTC (permalink / raw)
  To: Helge Deller; +Cc: tzimmermann, linux-fbdev, dri-devel
In-Reply-To: <CAM19b+s73Fo6Ej85qk72UPn12VQ_iFAYpHv7K=wOapb0-+1XBA@mail.gmail.com>

Hi
No, this wasn't tested on actual hardware. I don't have access to it.
If someone is able to do it, that would be great.

Thanks
Diviyam


On Tue, 30 Dec 2025 at 23:21, Diviyam Pat <patdiviyam@gmail.com> wrote:
>
> Hi
> No, this wasn't tested on actual hardware. I don't have access to it. If someone is able to it that would be great.
>
> Thanks
> Diviyam
>
> On Tue, 30 Dec, 2025, 3:27 pm Helge Deller, <deller@gmx.de> wrote:
>>
>> On 12/15/25 23:53, patdiviyam@gmail.com wrote:
>> > From: DiviyamPathak <patdiviyam@gmail.com>
>> >
>> > The xilinxfb driver maps a physical framebuffer address with ioremap()
>> > without first reserving the memory region. This can conflict with other
>> > drivers accessing the same resource.
>> >
>> > Request the memory region with devm_request_mem_region() before mapping
>> > the framebuffer and use managed mappings for proper lifetime handling.
>> >
>> > This addresses the fbdev TODO about requesting memory regions and avoids
>> > potential resource conflicts.
>> >
>> > Signed-off-by: DiviyamPathak <patdiviyam@gmail.com>
>>
>> Was it tested it on physical hardware?
>> If not, could someone test?
>>
>> Helge
>>
>>
>> > ---
>> >   drivers/video/fbdev/xilinxfb.c | 30 +++++++++++++++++-------------
>> >   1 file changed, 17 insertions(+), 13 deletions(-)
>> >
>> > diff --git a/drivers/video/fbdev/xilinxfb.c b/drivers/video/fbdev/xilinxfb.c
>> > index 0a6e05cd155a..f18437490de8 100644
>> > --- a/drivers/video/fbdev/xilinxfb.c
>> > +++ b/drivers/video/fbdev/xilinxfb.c
>> > @@ -280,19 +280,27 @@ static int xilinxfb_assign(struct platform_device *pdev,
>> >       /* Allocate the framebuffer memory */
>> >       if (pdata->fb_phys) {
>> >               drvdata->fb_phys = pdata->fb_phys;
>> > -             drvdata->fb_virt = ioremap(pdata->fb_phys, fbsize);
>> > +             /* Request the memory region before mapping */
>> > +             if (!devm_request_mem_region(dev, pdata->fb_phys, fbsize,
>> > +                                     DRIVER_NAME)) {
>> > +                     dev_err(dev, "Cannot request framebuffer memory region\n");
>> > +                     return -EBUSY;
>> > +             }
>> > +             drvdata->fb_virt = devm_ioremap(dev, pdata->fb_phys, fbsize);
>> > +             if (!drvdata->fb_virt) {
>> > +                     dev_err(dev, "Could not map framebuffer memory\n");
>> > +                     return -ENOMEM;
>> > +             }
>> >       } else {
>> >               drvdata->fb_alloced = 1;
>> >               drvdata->fb_virt = dma_alloc_coherent(dev, PAGE_ALIGN(fbsize),
>> > -                                                   &drvdata->fb_phys,
>> > -                                                   GFP_KERNEL);
>> > -     }
>> > -
>> > -     if (!drvdata->fb_virt) {
>> > -             dev_err(dev, "Could not allocate frame buffer memory\n");
>> > -             return -ENOMEM;
>> > +                                     &drvdata->fb_phys,
>> > +                                     GFP_KERNEL);
>> > +             if (!drvdata->fb_virt) {
>> > +                     dev_err(dev, "Could not allocate frame buffer memory\n");
>> > +                     return -ENOMEM;
>> > +             }
>> >       }
>> > -
>> >       /* Clear (turn to black) the framebuffer */
>> >       memset_io((void __iomem *)drvdata->fb_virt, 0, fbsize);
>> >
>> > @@ -362,8 +370,6 @@ static int xilinxfb_assign(struct platform_device *pdev,
>> >       if (drvdata->fb_alloced)
>> >               dma_free_coherent(dev, PAGE_ALIGN(fbsize), drvdata->fb_virt,
>> >                                 drvdata->fb_phys);
>> > -     else
>> > -             iounmap(drvdata->fb_virt);
>> >
>> >       /* Turn off the display */
>> >       xilinx_fb_out32(drvdata, REG_CTRL, 0);
>> > @@ -386,8 +392,6 @@ static void xilinxfb_release(struct device *dev)
>> >       if (drvdata->fb_alloced)
>> >               dma_free_coherent(dev, PAGE_ALIGN(drvdata->info.fix.smem_len),
>> >                                 drvdata->fb_virt, drvdata->fb_phys);
>> > -     else
>> > -             iounmap(drvdata->fb_virt);
>> >
>> >       /* Turn off the display */
>> >       xilinx_fb_out32(drvdata, REG_CTRL, 0);
>>

^ permalink raw reply

* Re: [PATCH 0/6] video/logo: allow custom boot logo and simplify logic
From: John Paul Adrian Glaubitz @ 2025-12-30 23:19 UTC (permalink / raw)
  To: Vincent Mailhol, Helge Deller, Greg Kroah-Hartman, Yoshinori Sato,
	Rich Felker
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh
In-Reply-To: <20251230-custom-logo-v1-0-4736374569ee@kernel.org>

Hi Vincent,

On Tue, 2025-12-30 at 23:19 +0100, Vincent Mailhol wrote:
> This series allows the user to replace the default kernel boot logo by
> a custom one directly in the kernel configuration. This makes it
> easier to customise the boot logo without the need to modify the
> sources and allows such customisation to remain persistent after
> applying the configuration to another version of the kernel.

Wouldn't it make more sense to make the boot logo to be configurable
at runtime so that users don't have to rebuild their kernel at all
to change their boot logo?

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

^ permalink raw reply

* Re: [PATCH v3 3/4] fbdev: omapfb: Make FB_DEVICE dependency optional
From: Andy Shevchenko @ 2025-12-30 22:42 UTC (permalink / raw)
  To: Chintan Patel
  Cc: Andy Shevchenko, linux-fbdev, linux-staging, linux-omap,
	linux-kernel, dri-devel, tzimmermann, andy, deller, gregkh
In-Reply-To: <081b59e8-e74b-4af6-bd31-00ebb4e12e5c@gmail.com>

On Tue, Dec 30, 2025 at 8:01 PM Chintan Patel <chintanlike@gmail.com> wrote:
> On 12/30/25 03:37, Andy Shevchenko wrote:
> > On Mon, Dec 29, 2025 at 09:28:21PM -0800, Chintan Patel wrote:

...

> > Still the same issue I pointed out in v2 review.

> Sorry about that. I had actually made your suggested changes but somehow
> I mistakenly send old patches instead of updated one. I will send
> updated one. Should I send v4 or v3 is fine?

v4 needs to be sent.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply

* [PATCH 6/6] video/logo: move logo selection logic to Kconfig
From: Vincent Mailhol @ 2025-12-30 22:20 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20251230-custom-logo-v1-0-4736374569ee@kernel.org>

Now that the path to the logo file can be directly entered in Kbuild,
there is no more need to handle all the logo file selection in the
Makefile and the C files.

Move all the logo file selection logic to Kbuild, this done, clean-up
the C code to only leave one entry for each logo type (monochrome,
16-colors and 224-colors).

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/logo/Kconfig  | 49 +++++++++------------------------------------
 drivers/video/logo/Makefile | 21 +------------------
 drivers/video/logo/logo.c   | 46 ++++--------------------------------------
 include/linux/linux_logo.h  |  9 ---------
 4 files changed, 14 insertions(+), 111 deletions(-)

diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
index 1d1651c067a1..9bf8f14c6856 100644
--- a/drivers/video/logo/Kconfig
+++ b/drivers/video/logo/Kconfig
@@ -25,6 +25,7 @@ config LOGO_LINUX_MONO
 config LOGO_LINUX_MONO_FILE
 	string "Monochrome logo .pbm file"
 	depends on LOGO_LINUX_MONO
+	default "drivers/video/logo/logo_superh_mono.pbm" if SUPERH
 	default "drivers/video/logo/logo_linux_mono.pbm"
 	help
 	  Takes a path to a monochromatic logo in the portable pixmap file
@@ -42,6 +43,7 @@ config LOGO_LINUX_VGA16
 config LOGO_LINUX_VGA16_FILE
 	string "16-color logo .ppm file"
 	depends on LOGO_LINUX_VGA16
+	default "drivers/video/logo/logo_superh_vga16.ppm" if SUPERH
 	default "drivers/video/logo/logo_linux_vga16.ppm"
 	help
 	  Takes a path to a logo in the portable pixmap file format (.ppm),
@@ -61,6 +63,13 @@ config LOGO_LINUX_CLUT224
 config LOGO_LINUX_CLUT224_FILE
 	string "224-color logo .ppm file"
 	depends on LOGO_LINUX_CLUT224
+	default "drivers/video/logo/logo_dec_clut224.ppm" if MACH_DECSTATION || ALPHA
+	default "drivers/video/logo/logo_mac_clut224.ppm" if MAC
+	default "drivers/video/logo/logo_parisc_clut224.ppm" if PARISC
+	default "drivers/video/logo/logo_sgi_clut224.ppm" if SGI_IP22 || SGI_IP27 || SGI_IP32
+	default "drivers/video/logo/logo_sun_clut224.ppm" if SPARC
+	default "drivers/video/logo/logo_superh_clut224.ppm" if SUPERH
+	default "drivers/video/logo/logo_spe_clut224.ppm" if SPU_BASE
 	default "drivers/video/logo/logo_linux_clut224.ppm"
 	help
 	  Takes a path to a 224-color logo in the portable pixmap file
@@ -71,44 +80,4 @@ config LOGO_LINUX_CLUT224_FILE
 
 	    magick source_image -compress none -colors 224 destination.ppm
 
-config LOGO_DEC_CLUT224
-	bool "224-color Digital Equipment Corporation Linux logo"
-	depends on MACH_DECSTATION || ALPHA
-	default y
-
-config LOGO_MAC_CLUT224
-	bool "224-color Macintosh Linux logo"
-	depends on MAC
-	default y
-
-config LOGO_PARISC_CLUT224
-	bool "224-color PA-RISC Linux logo"
-	depends on PARISC
-	default y
-
-config LOGO_SGI_CLUT224
-	bool "224-color SGI Linux logo"
-	depends on SGI_IP22 || SGI_IP27 || SGI_IP32
-	default y
-
-config LOGO_SUN_CLUT224
-	bool "224-color Sun Linux logo"
-	depends on SPARC
-	default y
-
-config LOGO_SUPERH_MONO
-	bool "Black and white SuperH Linux logo"
-	depends on SUPERH
-	default y
-
-config LOGO_SUPERH_VGA16
-	bool "16-color SuperH Linux logo"
-	depends on SUPERH
-	default y
-
-config LOGO_SUPERH_CLUT224
-	bool "224-color SuperH Linux logo"
-	depends on SUPERH
-	default y
-
 endif # LOGO
diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index ac8e9da3f51a..c32238fddaa6 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -5,16 +5,6 @@ obj-$(CONFIG_LOGO)			+= logo.o
 obj-$(CONFIG_LOGO_LINUX_MONO)		+= logo_linux_mono.o
 obj-$(CONFIG_LOGO_LINUX_VGA16)		+= logo_linux_vga16.o
 obj-$(CONFIG_LOGO_LINUX_CLUT224)	+= logo_linux_clut224.o
-obj-$(CONFIG_LOGO_DEC_CLUT224)		+= logo_dec_clut224.o
-obj-$(CONFIG_LOGO_MAC_CLUT224)		+= logo_mac_clut224.o
-obj-$(CONFIG_LOGO_PARISC_CLUT224)	+= logo_parisc_clut224.o
-obj-$(CONFIG_LOGO_SGI_CLUT224)		+= logo_sgi_clut224.o
-obj-$(CONFIG_LOGO_SUN_CLUT224)		+= logo_sun_clut224.o
-obj-$(CONFIG_LOGO_SUPERH_MONO)		+= logo_superh_mono.o
-obj-$(CONFIG_LOGO_SUPERH_VGA16)		+= logo_superh_vga16.o
-obj-$(CONFIG_LOGO_SUPERH_CLUT224)	+= logo_superh_clut224.o
-
-obj-$(CONFIG_SPU_BASE)			+= logo_spe_clut224.o
 
 # How to generate logo's
 
@@ -33,14 +23,5 @@ $(obj)/logo_linux_vga16.c: $(CONFIG_LOGO_LINUX_VGA16_FILE) $(obj)/pnmtologo FORC
 $(obj)/logo_linux_clut224.c: $(CONFIG_LOGO_LINUX_CLUT224_FILE) $(obj)/pnmtologo FORCE
 	$(call if_changed,logo,clut224)
 
-$(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo,mono)
-
-$(obj)/%_vga16.c: $(src)/%_vga16.ppm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo,vga16)
-
-$(obj)/%_clut224.c: $(src)/%_clut224.ppm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo,clut224)
-
 # generated C files
-targets += *_mono.c *_vga16.c *_clut224.c
+targets += logo_linux_mono.c logo_linux_vga16.c logo_linux_clut224.c
diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c
index 141f15a9a459..91535f8848da 100644
--- a/drivers/video/logo/logo.c
+++ b/drivers/video/logo/logo.c
@@ -48,59 +48,21 @@ const struct linux_logo * __ref fb_find_logo(int depth)
 	if (nologo || logos_freed)
 		return NULL;
 
-	if (depth >= 1) {
 #ifdef CONFIG_LOGO_LINUX_MONO
-		/* Generic Linux logo */
+	if (depth >= 1)
 		logo = &logo_linux_mono;
 #endif
-#ifdef CONFIG_LOGO_SUPERH_MONO
-		/* SuperH Linux logo */
-		logo = &logo_superh_mono;
-#endif
-	}
 	
-	if (depth >= 4) {
 #ifdef CONFIG_LOGO_LINUX_VGA16
-		/* Generic Linux logo */
+	if (depth >= 4)
 		logo = &logo_linux_vga16;
 #endif
-#ifdef CONFIG_LOGO_SUPERH_VGA16
-		/* SuperH Linux logo */
-		logo = &logo_superh_vga16;
-#endif
-	}
 	
-	if (depth >= 8) {
 #ifdef CONFIG_LOGO_LINUX_CLUT224
-		/* Generic Linux logo */
+	if (depth >= 8)
 		logo = &logo_linux_clut224;
 #endif
-#ifdef CONFIG_LOGO_DEC_CLUT224
-		/* DEC Linux logo on MIPS/MIPS64 or ALPHA */
-		logo = &logo_dec_clut224;
-#endif
-#ifdef CONFIG_LOGO_MAC_CLUT224
-		/* Macintosh Linux logo on m68k */
-		if (MACH_IS_MAC)
-			logo = &logo_mac_clut224;
-#endif
-#ifdef CONFIG_LOGO_PARISC_CLUT224
-		/* PA-RISC Linux logo */
-		logo = &logo_parisc_clut224;
-#endif
-#ifdef CONFIG_LOGO_SGI_CLUT224
-		/* SGI Linux logo on MIPS/MIPS64 */
-		logo = &logo_sgi_clut224;
-#endif
-#ifdef CONFIG_LOGO_SUN_CLUT224
-		/* Sun Linux logo */
-		logo = &logo_sun_clut224;
-#endif
-#ifdef CONFIG_LOGO_SUPERH_CLUT224
-		/* SuperH Linux logo */
-		logo = &logo_superh_clut224;
-#endif
-	}
+
 	return logo;
 }
 EXPORT_SYMBOL_GPL(fb_find_logo);
diff --git a/include/linux/linux_logo.h b/include/linux/linux_logo.h
index e37699b7e839..d5a66af27fd9 100644
--- a/include/linux/linux_logo.h
+++ b/include/linux/linux_logo.h
@@ -33,15 +33,6 @@ struct linux_logo {
 extern const struct linux_logo logo_linux_mono;
 extern const struct linux_logo logo_linux_vga16;
 extern const struct linux_logo logo_linux_clut224;
-extern const struct linux_logo logo_dec_clut224;
-extern const struct linux_logo logo_mac_clut224;
-extern const struct linux_logo logo_parisc_clut224;
-extern const struct linux_logo logo_sgi_clut224;
-extern const struct linux_logo logo_sun_clut224;
-extern const struct linux_logo logo_superh_mono;
-extern const struct linux_logo logo_superh_vga16;
-extern const struct linux_logo logo_superh_clut224;
-extern const struct linux_logo logo_spe_clut224;
 
 extern const struct linux_logo *fb_find_logo(int depth);
 #ifdef CONFIG_FB_LOGO_EXTRA

-- 
2.51.2


^ permalink raw reply related

* [PATCH 5/6] sh: defconfig: remove CONFIG_LOGO_SUPERH_*
From: Vincent Mailhol @ 2025-12-30 22:20 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20251230-custom-logo-v1-0-4736374569ee@kernel.org>

CONFIG_LOGO_SUPERH_MONO, CONFIG_LOGO_SUPERH_VGA16 and
CONFIG_LOGO_SUPERH_CLUT224 will be removed in an upcoming change but
are still referenced in some of the defconfig.

Remove all the occurrences of CONFIG_LOGO_SUPERH_*.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 arch/sh/configs/dreamcast_defconfig      | 2 --
 arch/sh/configs/ecovec24_defconfig       | 2 --
 arch/sh/configs/kfr2r09_defconfig        | 2 --
 arch/sh/configs/migor_defconfig          | 2 --
 arch/sh/configs/rts7751r2d1_defconfig    | 2 --
 arch/sh/configs/rts7751r2dplus_defconfig | 2 --
 arch/sh/configs/se7724_defconfig         | 2 --
 arch/sh/configs/se7780_defconfig         | 2 --
 arch/sh/configs/sh7785lcr_defconfig      | 3 ---
 arch/sh/configs/urquell_defconfig        | 3 ---
 10 files changed, 22 deletions(-)

diff --git a/arch/sh/configs/dreamcast_defconfig b/arch/sh/configs/dreamcast_defconfig
index 4573d5d64989..dd58797e8298 100644
--- a/arch/sh/configs/dreamcast_defconfig
+++ b/arch/sh/configs/dreamcast_defconfig
@@ -60,8 +60,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 # CONFIG_DNOTIFY is not set
 CONFIG_PROC_KCORE=y
 CONFIG_TMPFS=y
diff --git a/arch/sh/configs/ecovec24_defconfig b/arch/sh/configs/ecovec24_defconfig
index 458115d83184..e751933ac840 100644
--- a/arch/sh/configs/ecovec24_defconfig
+++ b/arch/sh/configs/ecovec24_defconfig
@@ -78,8 +78,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SND=y
 CONFIG_SND_SEQUENCER=y
diff --git a/arch/sh/configs/kfr2r09_defconfig b/arch/sh/configs/kfr2r09_defconfig
index d80e83e7ec38..056ba52600f9 100644
--- a/arch/sh/configs/kfr2r09_defconfig
+++ b/arch/sh/configs/kfr2r09_defconfig
@@ -66,8 +66,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_CLUT224 is not set
 CONFIG_USB_GADGET=y
 CONFIG_USB_CDC_COMPOSITE=m
 CONFIG_MMC=y
diff --git a/arch/sh/configs/migor_defconfig b/arch/sh/configs/migor_defconfig
index 7cdaa909ffd6..1d9d543eef4c 100644
--- a/arch/sh/configs/migor_defconfig
+++ b/arch/sh/configs/migor_defconfig
@@ -71,8 +71,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_CLUT224 is not set
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_M66592=y
 CONFIG_USB_G_SERIAL=m
diff --git a/arch/sh/configs/rts7751r2d1_defconfig b/arch/sh/configs/rts7751r2d1_defconfig
index 0c54ab2b06e6..745490d4807f 100644
--- a/arch/sh/configs/rts7751r2d1_defconfig
+++ b/arch/sh/configs/rts7751r2d1_defconfig
@@ -50,8 +50,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SND=m
 CONFIG_SND_YMFPCI=m
diff --git a/arch/sh/configs/rts7751r2dplus_defconfig b/arch/sh/configs/rts7751r2dplus_defconfig
index 3173b616b2cb..cd90f5354459 100644
--- a/arch/sh/configs/rts7751r2dplus_defconfig
+++ b/arch/sh/configs/rts7751r2dplus_defconfig
@@ -55,8 +55,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SND=m
 CONFIG_SND_YMFPCI=m
diff --git a/arch/sh/configs/se7724_defconfig b/arch/sh/configs/se7724_defconfig
index 8ca46d704c8b..9b4f8f3a1fdf 100644
--- a/arch/sh/configs/se7724_defconfig
+++ b/arch/sh/configs/se7724_defconfig
@@ -79,8 +79,6 @@ CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SND=m
 # CONFIG_SND_DRIVERS is not set
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig
index 12463b766120..13fa6a59b8f1 100644
--- a/arch/sh/configs/se7780_defconfig
+++ b/arch/sh/configs/se7780_defconfig
@@ -66,8 +66,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
 CONFIG_SOUND=y
 CONFIG_SOUND_PRIME=y
 CONFIG_HID_A4TECH=y
diff --git a/arch/sh/configs/sh7785lcr_defconfig b/arch/sh/configs/sh7785lcr_defconfig
index 2fcf50d8c820..8738c590d5a0 100644
--- a/arch/sh/configs/sh7785lcr_defconfig
+++ b/arch/sh/configs/sh7785lcr_defconfig
@@ -60,9 +60,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
-# CONFIG_LOGO_SUPERH_CLUT224 is not set
 CONFIG_HID_A4TECH=y
 CONFIG_HID_APPLE=y
 CONFIG_HID_BELKIN=y
diff --git a/arch/sh/configs/urquell_defconfig b/arch/sh/configs/urquell_defconfig
index f51ff6b1ec38..e7924db29b69 100644
--- a/arch/sh/configs/urquell_defconfig
+++ b/arch/sh/configs/urquell_defconfig
@@ -86,9 +86,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_SUPERH_MONO is not set
-# CONFIG_LOGO_SUPERH_VGA16 is not set
-# CONFIG_LOGO_SUPERH_CLUT224 is not set
 CONFIG_HID_A4TECH=y
 CONFIG_HID_APPLE=y
 CONFIG_HID_BELKIN=y

-- 
2.51.2


^ permalink raw reply related

* [PATCH 4/6] newport_con: depend on LOGO_LINUX_CLUT224 instead of LOGO_SGI_CLUT224
From: Vincent Mailhol @ 2025-12-30 22:20 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20251230-custom-logo-v1-0-4736374569ee@kernel.org>

newport_show_logo() is only activated if CONFIG_LOGO_LINUX_CLUT224 is
set (otherwise it is a NOP). This configuration value will be removed
in an upcoming change so instead, make it depend on LOGO_LINUX_CLUT224.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/console/newport_con.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/video/console/newport_con.c b/drivers/video/console/newport_con.c
index 242415366074..337e04236d6d 100644
--- a/drivers/video/console/newport_con.c
+++ b/drivers/video/console/newport_con.c
@@ -95,7 +95,7 @@ static inline void newport_init_cmap(void)
 
 static const struct linux_logo *newport_show_logo(void)
 {
-#ifdef CONFIG_LOGO_SGI_CLUT224
+#ifdef CONFIG_LOGO_LINUX_CLUT224
 	const struct linux_logo *logo = fb_find_logo(8);
 	const unsigned char *clut;
 	const unsigned char *data;
@@ -127,7 +127,7 @@ static const struct linux_logo *newport_show_logo(void)
 	return logo;
 #else
 	return NULL;
-#endif /* CONFIG_LOGO_SGI_CLUT224 */
+#endif /* CONFIG_LOGO_LINUX_CLUT224 */
 }
 
 static inline void newport_clear_screen(int xstart, int ystart, int xend,

-- 
2.51.2


^ permalink raw reply related

* [PATCH 3/6] video/logo: allow custom logo
From: Vincent Mailhol @ 2025-12-30 22:20 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20251230-custom-logo-v1-0-4736374569ee@kernel.org>

Some people like to replace the default Tux boot logo by an image of
their own. There exist a few tutorials here [1] and there [2]. But
this requires modifying the sources which is a bit cumbersome.

Add a string entry in Kbuild for each of the logo categories
(monochrome, 16-colors, 224-colors). The string entry takes a path to
a .pbm or .ppm image allowing the user to more easily provide a custom
logo without having to modify the sources.

Add an help entry with a short hint on how to convert images to the
portable pixmap file format.

Update the Makefile accordingly. When converted to .c file, the logo
will have one of these fixed file name:

  - logo_linux_mono.c
  - logo_linux_vga16.c
  - logo_linux_clut224.c:

depending on the image type and this regardless of the name of the
.pgm/.ppm source filename. This will allow for further simplifications
in an upcoming change.

[1] ArmadeuS Project wiki -- Linux Boot Logo
Link: https://www.armadeus.org/wiki/index.php?title=Linux_Boot_Logo

[2] Timesys -- How To Use a Custom Boot Logo / Splash Screen
Link: https://linuxlink.timesys.com/docs/wiki/engineering/HOWTO_Use_a_custom_boot_logo

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/logo/Kconfig  | 41 +++++++++++++++++++++++++++++++++++++++++
 drivers/video/logo/Makefile | 11 ++++++++++-
 2 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
index ce6bb753522d..1d1651c067a1 100644
--- a/drivers/video/logo/Kconfig
+++ b/drivers/video/logo/Kconfig
@@ -22,14 +22,55 @@ config LOGO_LINUX_MONO
 	bool "Standard black and white Linux logo"
 	default y
 
+config LOGO_LINUX_MONO_FILE
+	string "Monochrome logo .pbm file"
+	depends on LOGO_LINUX_MONO
+	default "drivers/video/logo/logo_linux_mono.pbm"
+	help
+	  Takes a path to a monochromatic logo in the portable pixmap file
+	  format (.pbm). This defaults to the Tux penguin.
+
+	  For example, the below ImageMagick command can be used to reduce
+	  an image to black and white and convert it into a pbm file:
+
+	    magick source_image -compress none destination.pbm
+
 config LOGO_LINUX_VGA16
 	bool "Standard 16-color Linux logo"
 	default y
 
+config LOGO_LINUX_VGA16_FILE
+	string "16-color logo .ppm file"
+	depends on LOGO_LINUX_VGA16
+	default "drivers/video/logo/logo_linux_vga16.ppm"
+	help
+	  Takes a path to a logo in the portable pixmap file format (.ppm),
+	  using the 16 colors from the drivers/video/logo/clut_vga16.ppm
+	  palette. This defaults to the Tux penguin.
+
+	  For example, the below ImageMagick command can be used to reduce an
+	  image to the VGA 16 colors palette and convert into a ppm file:
+
+	    magick source_image -compress none \
+	      -remap drivers/video/logo/clut_vga16.ppm destination.ppm
+
 config LOGO_LINUX_CLUT224
 	bool "Standard 224-color Linux logo"
 	default y
 
+config LOGO_LINUX_CLUT224_FILE
+	string "224-color logo .ppm file"
+	depends on LOGO_LINUX_CLUT224
+	default "drivers/video/logo/logo_linux_clut224.ppm"
+	help
+	  Takes a path to a 224-color logo in the portable pixmap file
+	  format (.ppm). This defaults to the Tux penguin.
+
+	  For example, the below ImageMagick command can be used to reduce
+	  an image palette to 224 colors and convert it into a ppm file:
+
+	    magick source_image -compress none -colors 224 destination.ppm
+
 config LOGO_DEC_CLUT224
 	bool "224-color Digital Equipment Corporation Linux logo"
 	depends on MACH_DECSTATION || ALPHA
diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 3f249e9dcf37..ac8e9da3f51a 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -22,7 +22,16 @@ hostprogs := pnmtologo
 
 # Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
 quiet_cmd_logo = LOGO    $@
-      cmd_logo = $(obj)/pnmtologo -t $2 -n $* -o $@ $<
+      cmd_logo = $(obj)/pnmtologo -t $2 -n $(basename $(notdir $@)) -o $@ $<
+
+$(obj)/logo_linux_mono.c: $(CONFIG_LOGO_LINUX_MONO_FILE) $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,mono)
+
+$(obj)/logo_linux_vga16.c: $(CONFIG_LOGO_LINUX_VGA16_FILE) $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,vga16)
+
+$(obj)/logo_linux_clut224.c: $(CONFIG_LOGO_LINUX_CLUT224_FILE) $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,clut224)
 
 $(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
 	$(call if_changed,logo,mono)

-- 
2.51.2


^ permalink raw reply related

* [PATCH 2/6] video/logo: add a type parameter to the logo makefile function
From: Vincent Mailhol @ 2025-12-30 22:20 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20251230-custom-logo-v1-0-4736374569ee@kernel.org>

When translating a portable pixmap file into a .c file, the pnmtologo
tool expects to receive the image type (either mono, vga16 or clut224)
as an argument under the -t option.

Currently, this information is stored in the file name. Because we
will allow for custom logo in an upcoming change, it is preferable to
decouple the image name from its type.

Add a new $2 parameter to the Makefile logo function which contains
the image type.

Update all the individual targets to provide this new argument. Note
that this transitional: all those targets will be removed in an
upcoming clean-up change.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/logo/Makefile | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 8b67c4941a4c..3f249e9dcf37 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -22,13 +22,16 @@ hostprogs := pnmtologo
 
 # Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
 quiet_cmd_logo = LOGO    $@
-      cmd_logo = $(obj)/pnmtologo -t $(lastword $(subst _, ,$*)) -n $* -o $@ $<
+      cmd_logo = $(obj)/pnmtologo -t $2 -n $* -o $@ $<
 
 $(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo)
+	$(call if_changed,logo,mono)
 
-$(obj)/%.c: $(src)/%.ppm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo)
+$(obj)/%_vga16.c: $(src)/%_vga16.ppm $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,vga16)
+
+$(obj)/%_clut224.c: $(src)/%_clut224.ppm $(obj)/pnmtologo FORCE
+	$(call if_changed,logo,clut224)
 
 # generated C files
 targets += *_mono.c *_vga16.c *_clut224.c

-- 
2.51.2


^ permalink raw reply related

* [PATCH 1/6] video/logo: remove orphan .pgm Makefile rule
From: Vincent Mailhol @ 2025-12-30 22:20 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol
In-Reply-To: <20251230-custom-logo-v1-0-4736374569ee@kernel.org>

The kernel has no actual grey-scale logos. And looking at the git
history, it seems that there never was one (or maybe there was in the
pre-git history? I did not check that far…)

Remove the Makefile rule for the .pgm grey scale images.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
 drivers/video/logo/Makefile | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 895c60b8402e..8b67c4941a4c 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -30,8 +30,5 @@ $(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
 $(obj)/%.c: $(src)/%.ppm $(obj)/pnmtologo FORCE
 	$(call if_changed,logo)
 
-$(obj)/%.c: $(src)/%.pgm $(obj)/pnmtologo FORCE
-	$(call if_changed,logo)
-
 # generated C files
-targets += *_mono.c *_vga16.c *_clut224.c *_gray256.c
+targets += *_mono.c *_vga16.c *_clut224.c

-- 
2.51.2


^ permalink raw reply related

* [PATCH 0/6] video/logo: allow custom boot logo and simplify logic
From: Vincent Mailhol @ 2025-12-30 22:19 UTC (permalink / raw)
  To: Helge Deller, Greg Kroah-Hartman, Yoshinori Sato, Rich Felker,
	John Paul Adrian Glaubitz
  Cc: linux-fbdev, dri-devel, linux-kernel, linux-sh, Vincent Mailhol

This series allows the user to replace the default kernel boot logo by
a custom one directly in the kernel configuration. This makes it
easier to customise the boot logo without the need to modify the
sources and allows such customisation to remain persistent after
applying the configuration to another version of the kernel.

Patch #1 and #2 are clean-up and preparation while patch #3 is the
main feature of this series: making the boot logo customisable.

While working on this, I realised that managing the logo file directly
in Kbuild allows us to simplify how we handle the different existing
variants of the Tux logo. This series thus ends with a clean-up which
moves all the logo selection logic to Kbuild, simplifying the Makefile
and C code.

Patch #4 and #5 do a tree-wide clean-up on the Kconfig symbols that
are to be removed in patch #6 and patch #6 simplify the logic as
explained above.

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
Vincent Mailhol (6):
      video/logo: remove orphan .pgm Makefile rule
      video/logo: add a type parameter to the logo makefile function
      video/logo: allow custom logo
      newport_con: depend on LOGO_LINUX_CLUT224 instead of LOGO_SGI_CLUT224
      sh: defconfig: remove CONFIG_LOGO_SUPERH_*
      video/logo: move logo selection logic to Kconfig

 arch/sh/configs/dreamcast_defconfig      |  2 -
 arch/sh/configs/ecovec24_defconfig       |  2 -
 arch/sh/configs/kfr2r09_defconfig        |  2 -
 arch/sh/configs/migor_defconfig          |  2 -
 arch/sh/configs/rts7751r2d1_defconfig    |  2 -
 arch/sh/configs/rts7751r2dplus_defconfig |  2 -
 arch/sh/configs/se7724_defconfig         |  2 -
 arch/sh/configs/se7780_defconfig         |  2 -
 arch/sh/configs/sh7785lcr_defconfig      |  3 --
 arch/sh/configs/urquell_defconfig        |  3 --
 drivers/video/console/newport_con.c      |  4 +-
 drivers/video/logo/Kconfig               | 84 ++++++++++++++++++--------------
 drivers/video/logo/Makefile              | 26 +++-------
 drivers/video/logo/logo.c                | 46 ++---------------
 include/linux/linux_logo.h               |  9 ----
 15 files changed, 61 insertions(+), 130 deletions(-)
---
base-commit: 8640b74557fc8b4c300030f6ccb8cd078f665ec8
change-id: 20251227-custom-logo-932df316a02c

Best regards,
-- 
Vincent Mailhol <mailhol@kernel.org>


^ permalink raw reply

* Re: [PATCH v3 4/4] fbdev: sh_mobile_lcdc: Make FB_DEVICE dependency optional
From: Chintan Patel @ 2025-12-30 18:25 UTC (permalink / raw)
  To: Helge Deller; +Cc: linux-fbdev, linux-omap, linux-kernel, dri-devel
In-Reply-To: <aVOJovo-k6-0KnVg@carbonx1>



On 12/30/25 00:13, Helge Deller wrote:
> * Chintan Patel <chintanlike@gmail.com>:
>> The sh_mobile_lcdc driver exposes overlay configuration via sysfs, but the
>> core driver does not require CONFIG_FB_DEVICE.
>>
>> Make sysfs support optional by defining overlay_sysfs_groups conditionally
>> using PTR_IF(). The driver always sets .dev_groups, and the kernel
>> naturally skips NULL attribute groups while the code remains buildable
>> and type-checked.
>>
>> Suggested-by: Helge Deller <deller@gmx.de>
>> Signed-off-by: Chintan Patel <chintanlike@gmail.com>
>> ---
>>   drivers/video/fbdev/sh_mobile_lcdcfb.c | 12 +++++++++++-
>>   1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/video/fbdev/sh_mobile_lcdcfb.c b/drivers/video/fbdev/sh_mobile_lcdcfb.c
>> index dd950e4ab5ce..cb7ed1ff9165 100644
>> --- a/drivers/video/fbdev/sh_mobile_lcdcfb.c
>> +++ b/drivers/video/fbdev/sh_mobile_lcdcfb.c
>> @@ -1350,7 +1350,17 @@ static struct attribute *overlay_sysfs_attrs[] = {
>>   	&dev_attr_overlay_rop3.attr,
>>   	NULL,
>>   };
>> -ATTRIBUTE_GROUPS(overlay_sysfs);
> 
> Instead of replacing the ^ ATTRIBUTE_GROUPS() by the code below,
> isn't it possible to just mark the overlay_sysfs_attrs[] array
> _maybe_unused, and just do:
> + #ifdef CONFIG_FB_DEVICE
> + ATTRIBUTE_GROUPS(overlay_sysfs);
> + #endif
> 
> ?
Hi Helge,

Yes, the __maybe_unused + #ifdef ATTRIBUTE_GROUPS() approach would work.

I went with the PTR_IF(IS_ENABLED()) pattern because Andy suggested 
using PTR_IF() to conditionally include overlay_sysfs_group in 
overlay_sysfs_groups, and to keep .dev_groups always populated while 
letting the device core skip NULL groups. This avoids conditional wiring 
via #ifdef and keeps the code type-checked without CONFIG_FB_DEVICE.
If you still prefer the simpler #ifdef ATTRIBUTE_GROUPS() approach for 
this driver, I can switch to that, but I wanted to follow Andy’s 
guidance here.


Thanks!

^ permalink raw reply

* Re: [PATCH v3 3/4] fbdev: omapfb: Make FB_DEVICE dependency optional
From: Chintan Patel @ 2025-12-30 18:01 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-fbdev, linux-staging, linux-omap, linux-kernel, dri-devel,
	tzimmermann, andy, deller, gregkh
In-Reply-To: <aVO5X0NKSdkH6Ab5@smile.fi.intel.com>



On 12/30/25 03:37, Andy Shevchenko wrote:
> On Mon, Dec 29, 2025 at 09:28:21PM -0800, Chintan Patel wrote:
>> omapfb provides several sysfs interfaces for framebuffer configuration
>> and debugging, but these are not required for the core driver.
>>
>> Remove the hard dependency on CONFIG_FB_DEVICE and make sysfs support
>> optional by using dev_of_fbinfo() to obtain the backing device at runtime.
>> When FB_DEVICE is disabled, sysfs operations are skipped while the code
>> still builds and is type-checked.
> 
> ...
> 
>> +		struct device *dev = dev_of_fbinfo(fbdev->fbs[i]);
> 
> Still the same issue I pointed out in v2 review.
> 
>>   		int t;
>> +
>> +		if (!dev)
>> +			continue;
> 
> ...
> 
>> +		struct device *dev = dev_of_fbinfo(fbdev->fbs[i]);
>> +
>> +		if (!dev)
>> +			continue;
> 
> Ditto.
Sorry about that. I had actually made your suggested changes but somehow 
I mistakenly send old patches instead of updated one. I will send 
updated one. Should I send v4 or v3 is fine?




^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox