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

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
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -174,6 +174,11 @@ C. Boot options
	displayed due to multiple CPUs, the collected line of logos is moved
	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

Before going on to how to attach, detach and unload the framebuffer console, an
+7 −0
Original line number Diff line number Diff line
@@ -536,6 +536,13 @@ static int __init fb_console_setup(char *this_opt)
				fb_center_logo = true;
			continue;
		}

		if (!strncmp(options, "logo-count:", 11)) {
			options += 11;
			if (*options)
				fb_logo_count = simple_strtol(options, &options, 0);
			continue;
		}
	}
	return 1;
}
+9 −3
Original line number Diff line number Diff line
@@ -56,6 +56,8 @@ EXPORT_SYMBOL(num_registered_fb);
bool fb_center_logo __read_mostly;
EXPORT_SYMBOL(fb_center_logo);

int fb_logo_count __read_mostly = -1;

static struct fb_info *get_fb_info(unsigned int idx)
{
	struct fb_info *fb_info;
@@ -620,7 +622,7 @@ int fb_prepare_logo(struct fb_info *info, int rotate)
	memset(&fb_logo, 0, sizeof(struct logo_data));

	if (info->flags & FBINFO_MISC_TILEBLITTING ||
	    info->fbops->owner)
	    info->fbops->owner || !fb_logo_count)
		return 0;

	if (info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
@@ -686,10 +688,14 @@ int fb_prepare_logo(struct fb_info *info, int rotate)

int fb_show_logo(struct fb_info *info, int rotate)
{
	unsigned int count;
	int y;

	y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
			      num_online_cpus());
	if (!fb_logo_count)
		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);

	return y;
+1 −0
Original line number Diff line number Diff line
@@ -625,6 +625,7 @@ extern int fb_new_modelist(struct fb_info *info);
extern struct fb_info *registered_fb[FB_MAX];
extern int num_registered_fb;
extern bool fb_center_logo;
extern int fb_logo_count;
extern struct class *fb_class;

#define for_each_registered_fb(i)		\