Commit 691f50ab authored by Peter Rosin's avatar Peter Rosin Committed by Bartlomiej Zolnierkiewicz

fbdev: fbmem: allow overriding the number of bootup logos

Probably most useful if you want no logo at all, or if you only want one
logo regardless of how many CPU cores you have.
Signed-off-by: default avatarPeter Rosin <peda@axentia.se>
Reviewed-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190827110854.12574-3-peda@axentia.se
parent fd933c00
...@@ -174,6 +174,11 @@ C. Boot options ...@@ -174,6 +174,11 @@ C. Boot options
displayed due to multiple CPUs, the collected line of logos is moved displayed due to multiple CPUs, the collected line of logos is moved
as a whole. as a whole.
9. fbcon=logo-count:<n>
The value 'n' overrides the number of bootup logos. 0 disables the
logo, and -1 gives the default which is the number of online CPUs.
C. Attaching, Detaching and Unloading C. Attaching, Detaching and Unloading
Before going on to how to attach, detach and unload the framebuffer console, an Before going on to how to attach, detach and unload the framebuffer console, an
......
...@@ -536,6 +536,13 @@ static int __init fb_console_setup(char *this_opt) ...@@ -536,6 +536,13 @@ static int __init fb_console_setup(char *this_opt)
fb_center_logo = true; fb_center_logo = true;
continue; continue;
} }
if (!strncmp(options, "logo-count:", 11)) {
options += 11;
if (*options)
fb_logo_count = simple_strtol(options, &options, 0);
continue;
}
} }
return 1; return 1;
} }
......
...@@ -56,6 +56,8 @@ EXPORT_SYMBOL(num_registered_fb); ...@@ -56,6 +56,8 @@ EXPORT_SYMBOL(num_registered_fb);
bool fb_center_logo __read_mostly; bool fb_center_logo __read_mostly;
EXPORT_SYMBOL(fb_center_logo); EXPORT_SYMBOL(fb_center_logo);
int fb_logo_count __read_mostly = -1;
static struct fb_info *get_fb_info(unsigned int idx) static struct fb_info *get_fb_info(unsigned int idx)
{ {
struct fb_info *fb_info; struct fb_info *fb_info;
...@@ -620,7 +622,7 @@ int fb_prepare_logo(struct fb_info *info, int rotate) ...@@ -620,7 +622,7 @@ int fb_prepare_logo(struct fb_info *info, int rotate)
memset(&fb_logo, 0, sizeof(struct logo_data)); memset(&fb_logo, 0, sizeof(struct logo_data));
if (info->flags & FBINFO_MISC_TILEBLITTING || if (info->flags & FBINFO_MISC_TILEBLITTING ||
info->fbops->owner) info->fbops->owner || !fb_logo_count)
return 0; return 0;
if (info->fix.visual == FB_VISUAL_DIRECTCOLOR) { if (info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
...@@ -686,10 +688,14 @@ int fb_prepare_logo(struct fb_info *info, int rotate) ...@@ -686,10 +688,14 @@ int fb_prepare_logo(struct fb_info *info, int rotate)
int fb_show_logo(struct fb_info *info, int rotate) int fb_show_logo(struct fb_info *info, int rotate)
{ {
unsigned int count;
int y; int y;
y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, if (!fb_logo_count)
num_online_cpus()); return 0;
count = fb_logo_count < 0 ? num_online_cpus() : fb_logo_count;
y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, count);
y = fb_show_extra_logos(info, y, rotate); y = fb_show_extra_logos(info, y, rotate);
return y; return y;
......
...@@ -625,6 +625,7 @@ extern int fb_new_modelist(struct fb_info *info); ...@@ -625,6 +625,7 @@ extern int fb_new_modelist(struct fb_info *info);
extern struct fb_info *registered_fb[FB_MAX]; extern struct fb_info *registered_fb[FB_MAX];
extern int num_registered_fb; extern int num_registered_fb;
extern bool fb_center_logo; extern bool fb_center_logo;
extern int fb_logo_count;
extern struct class *fb_class; extern struct class *fb_class;
#define for_each_registered_fb(i) \ #define for_each_registered_fb(i) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment