[PATCH 5/7] fbdev/core: Build fb_logo iff CONFIG_LOGO has been selected

Thomas Zimmermann tzimmermann at suse.de
Tue Aug 29 14:15:44 UTC 2023


Only build fb_logo.c if CONFIG_LOGO has been selected. Otherwise
provide empty implementations of the contained interfaces and avoid
using the exported variables.

Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
---
 drivers/video/fbdev/core/Makefile      |  3 ++-
 drivers/video/fbdev/core/fb_internal.h | 11 +++++++++++
 drivers/video/fbdev/core/fb_logo.c     | 14 --------------
 drivers/video/fbdev/core/fbcon.c       |  4 ++++
 4 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/drivers/video/fbdev/core/Makefile b/drivers/video/fbdev/core/Makefile
index adce31155e92..36d3156dc759 100644
--- a/drivers/video/fbdev/core/Makefile
+++ b/drivers/video/fbdev/core/Makefile
@@ -2,7 +2,6 @@
 obj-$(CONFIG_FB_NOTIFY)           += fb_notify.o
 obj-$(CONFIG_FB_CORE)             += fb.o
 fb-y                              := fb_info.o \
-                                     fb_logo.o \
                                      fbmem.o fbcmap.o \
                                      modedb.o fbcvt.o fb_cmdline.o fb_io_fops.o
 ifdef CONFIG_FB
@@ -24,6 +23,8 @@ fb-y				  += fbcon_rotate.o fbcon_cw.o fbcon_ud.o \
 endif
 endif
 
+fb-$(CONFIG_LOGO)		  += fb_logo.o
+
 obj-$(CONFIG_FB_CFB_FILLRECT)  += cfbfillrect.o
 obj-$(CONFIG_FB_CFB_COPYAREA)  += cfbcopyarea.o
 obj-$(CONFIG_FB_CFB_IMAGEBLIT) += cfbimgblt.o
diff --git a/drivers/video/fbdev/core/fb_internal.h b/drivers/video/fbdev/core/fb_internal.h
index 79e57a5e6e7e..613832d335fe 100644
--- a/drivers/video/fbdev/core/fb_internal.h
+++ b/drivers/video/fbdev/core/fb_internal.h
@@ -21,10 +21,21 @@ static inline void fb_unregister_chrdev(void)
 #endif
 
 /* fb_logo.c */
+#if defined(CONFIG_LOGO)
 extern bool fb_center_logo;
 extern int fb_logo_count;
 int fb_prepare_logo(struct fb_info *fb_info, int rotate);
 int fb_show_logo(struct fb_info *fb_info, int rotate);
+#else
+static inline int fb_prepare_logo(struct fb_info *info, int rotate)
+{
+	return 0;
+}
+static inline int fb_show_logo(struct fb_info *info, int rotate)
+{
+	return 0;
+}
+#endif /* CONFIG_LOGO */
 
 /* fbmem.c */
 extern struct class *fb_class;
diff --git a/drivers/video/fbdev/core/fb_logo.c b/drivers/video/fbdev/core/fb_logo.c
index 76ba5a2bebae..cde0a330b2ad 100644
--- a/drivers/video/fbdev/core/fb_logo.c
+++ b/drivers/video/fbdev/core/fb_logo.c
@@ -7,7 +7,6 @@
 bool fb_center_logo __read_mostly;
 int fb_logo_count __read_mostly = -1;
 
-#ifdef CONFIG_LOGO
 static inline unsigned int safe_shift(unsigned int d, int n)
 {
 	return n < 0 ? d >> -n : d << n;
@@ -518,16 +517,3 @@ int fb_show_logo(struct fb_info *info, int rotate)
 	return y;
 }
 EXPORT_SYMBOL(fb_show_logo);
-#else
-int fb_prepare_logo(struct fb_info *info, int rotate)
-{
-	return 0;
-}
-EXPORT_SYMBOL(fb_prepare_logo);
-
-int fb_show_logo(struct fb_info *info, int rotate)
-{
-	return 0;
-}
-EXPORT_SYMBOL(fb_show_logo);
-#endif /* CONFIG_LOGO */
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index f157a5a1dffc..24b038510a71 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -474,15 +474,19 @@ static int __init fb_console_setup(char *this_opt)
 
 		if (!strncmp(options, "logo-pos:", 9)) {
 			options += 9;
+#ifdef CONFIG_LOGO
 			if (!strcmp(options, "center"))
 				fb_center_logo = true;
+#endif
 			continue;
 		}
 
 		if (!strncmp(options, "logo-count:", 11)) {
 			options += 11;
+#ifdef CONFIG_LOGO
 			if (*options)
 				fb_logo_count = simple_strtol(options, &options, 0);
+#endif
 			continue;
 		}
 	}
-- 
2.41.0



More information about the dri-devel mailing list