Commit accaa24c492f1aa3b9c37226d868dc59c3007531

Authored by Randy Dunlap
Committed by Linus Torvalds
1 parent 840bc9b093

fbcon: logo: disable logo at boot

Add logo.nologo kernel boot option to disable the logo in order to provide
more screen space for kernel messages; especially useful when debugging and
screen space is more critical.

newport_con driver changes are untested.

[akpm@linux-foundation.org: cleanups, coding-style fixes]
Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 3 changed files with 26 additions and 6 deletions Side-by-side Diff

Documentation/kernel-parameters.txt
... ... @@ -911,6 +911,11 @@
911 911 n must be a power of two. The default size
912 912 is set in the kernel config file.
913 913  
  914 + logo.nologo [FB] Disables display of the built-in Linux logo.
  915 + This may be used to provide more screen space for
  916 + kernel log messages and is useful when debugging
  917 + kernel boot problems.
  918 +
914 919 lp=0 [LP] Specify parallel ports to use, e.g,
915 920 lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses
916 921 lp=reset first parallel port). 'lp=0' disables the
drivers/video/console/newport_con.c
... ... @@ -98,14 +98,19 @@
98 98 }
99 99 }
100 100  
101   -static void newport_show_logo(void)
  101 +static struct linux_logo *newport_show_logo(void)
102 102 {
103 103 #ifdef CONFIG_LOGO_SGI_CLUT224
104 104 const struct linux_logo *logo = fb_find_logo(8);
105   - const unsigned char *clut = logo->clut;
106   - const unsigned char *data = logo->data;
  105 + const unsigned char *clut;
  106 + const unsigned char *data;
107 107 unsigned long i;
108 108  
  109 + if (!logo)
  110 + return NULL;
  111 + *clut = logo->clut;
  112 + *data = logo->data;
  113 +
109 114 for (i = 0; i < logo->clutsize; i++) {
110 115 newport_bfwait(npregs);
111 116 newport_cmap_setaddr(npregs, i + 0x20);
... ... @@ -123,6 +128,8 @@
123 128  
124 129 for (i = 0; i < logo->width*logo->height; i++)
125 130 npregs->go.hostrw0 = *data++ << 24;
  131 +
  132 + return logo;
126 133 #endif /* CONFIG_LOGO_SGI_CLUT224 */
127 134 }
128 135  
... ... @@ -465,9 +472,10 @@
465 472 npregs->cset.topscan = 0x3ff;
466 473  
467 474 if (!logo_drawn) {
468   - newport_show_logo();
469   - logo_drawn = 1;
470   - logo_active = 1;
  475 + if (newport_show_logo()) {
  476 + logo_drawn = 1;
  477 + logo_active = 1;
  478 + }
471 479 }
472 480  
473 481 return 1;
drivers/video/logo/logo.c
... ... @@ -34,6 +34,10 @@
34 34 extern const struct linux_logo logo_superh_clut224;
35 35 extern const struct linux_logo logo_m32r_clut224;
36 36  
  37 +static int nologo;
  38 +module_param(nologo, bool, 0);
  39 +MODULE_PARM_DESC(nologo, "Disables startup logo");
  40 +
37 41 /* logo's are marked __initdata. Use __init_refok to tell
38 42 * modpost that it is intended that this function uses data
39 43 * marked __initdata.
... ... @@ -41,6 +45,9 @@
41 45 const struct linux_logo * __init_refok fb_find_logo(int depth)
42 46 {
43 47 const struct linux_logo *logo = NULL;
  48 +
  49 + if (nologo)
  50 + return NULL;
44 51  
45 52 if (depth >= 1) {
46 53 #ifdef CONFIG_LOGO_LINUX_MONO