Skip to content

Commit

Permalink
fbcon: logo: disable logo at boot
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
rddunlap authored and Linus Torvalds committed Oct 16, 2007
1 parent 840bc9b commit accaa24
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
5 changes: 5 additions & 0 deletions Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -911,6 +911,11 @@ and is between 256 and 4096 characters. It is defined in the file
n must be a power of two. The default size
is set in the kernel config file.

logo.nologo [FB] Disables display of the built-in Linux logo.
This may be used to provide more screen space for
kernel log messages and is useful when debugging
kernel boot problems.

lp=0 [LP] Specify parallel ports to use, e.g,
lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses
lp=reset first parallel port). 'lp=0' disables the
Expand Down
20 changes: 14 additions & 6 deletions drivers/video/console/newport_con.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,19 @@ static inline void newport_init_cmap(void)
}
}

static void newport_show_logo(void)
static struct linux_logo *newport_show_logo(void)
{
#ifdef CONFIG_LOGO_SGI_CLUT224
const struct linux_logo *logo = fb_find_logo(8);
const unsigned char *clut = logo->clut;
const unsigned char *data = logo->data;
const unsigned char *clut;
const unsigned char *data;
unsigned long i;

if (!logo)
return NULL;
*clut = logo->clut;
*data = logo->data;

for (i = 0; i < logo->clutsize; i++) {
newport_bfwait(npregs);
newport_cmap_setaddr(npregs, i + 0x20);
Expand All @@ -123,6 +128,8 @@ static void newport_show_logo(void)

for (i = 0; i < logo->width*logo->height; i++)
npregs->go.hostrw0 = *data++ << 24;

return logo;
#endif /* CONFIG_LOGO_SGI_CLUT224 */
}

Expand Down Expand Up @@ -465,9 +472,10 @@ static int newport_switch(struct vc_data *vc)
npregs->cset.topscan = 0x3ff;

if (!logo_drawn) {
newport_show_logo();
logo_drawn = 1;
logo_active = 1;
if (newport_show_logo()) {
logo_drawn = 1;
logo_active = 1;
}
}

return 1;
Expand Down
7 changes: 7 additions & 0 deletions drivers/video/logo/logo.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ extern const struct linux_logo logo_superh_vga16;
extern const struct linux_logo logo_superh_clut224;
extern const struct linux_logo logo_m32r_clut224;

static int nologo;
module_param(nologo, bool, 0);
MODULE_PARM_DESC(nologo, "Disables startup logo");

/* logo's are marked __initdata. Use __init_refok to tell
* modpost that it is intended that this function uses data
* marked __initdata.
Expand All @@ -42,6 +46,9 @@ const struct linux_logo * __init_refok fb_find_logo(int depth)
{
const struct linux_logo *logo = NULL;

if (nologo)
return NULL;

if (depth >= 1) {
#ifdef CONFIG_LOGO_LINUX_MONO
/* Generic Linux logo */
Expand Down

0 comments on commit accaa24

Please sign in to comment.