Commit accaa24c492f1aa3b9c37226d868dc59c3007531
Committed by
Linus Torvalds
1 parent
840bc9b093
Exists in
master
and in
4 other branches
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 |