Skip to content

Commit

Permalink
fbdev: fbmem: add config option to center the bootup logo
Browse files Browse the repository at this point in the history
If there are extra logos (CONFIG_FB_LOGO_EXTRA) the heights of these
extra logos are not considered when centering the first logo vertically.

Signed-off-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  • Loading branch information
Peter Rosin authored and Bartlomiej Zolnierkiewicz committed Dec 20, 2018
1 parent e41f184 commit 3d8b193
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
25 changes: 24 additions & 1 deletion drivers/video/fbdev/core/fbmem.c
Original file line number Diff line number Diff line change
Expand Up @@ -506,8 +506,25 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
fb_set_logo(info, logo, logo_new, fb_logo.depth);
}

#ifdef CONFIG_FB_LOGO_CENTER
{
int xres = info->var.xres;
int yres = info->var.yres;

if (rotate == FB_ROTATE_CW || rotate == FB_ROTATE_CCW) {
xres = info->var.yres;
yres = info->var.xres;
}

while (n && (n * (logo->width + 8) - 8 > xres))
--n;
image.dx = (xres - n * (logo->width + 8) - 8) / 2;
image.dy = y ?: (yres - logo->height) / 2;
}
#else
image.dx = 0;
image.dy = y;
#endif
image.width = logo->width;
image.height = logo->height;

Expand Down Expand Up @@ -604,6 +621,7 @@ int fb_prepare_logo(struct fb_info *info, int rotate)
{
int depth = fb_get_color_depth(&info->var, &info->fix);
unsigned int yres;
int height;

memset(&fb_logo, 0, sizeof(struct logo_data));

Expand Down Expand Up @@ -665,7 +683,12 @@ int fb_prepare_logo(struct fb_info *info, int rotate)
}
}

return fb_prepare_extra_logos(info, fb_logo.logo->height, yres);
height = fb_logo.logo->height;
#ifdef CONFIG_FB_LOGO_CENTER
height += (yres - fb_logo.logo->height) / 2;
#endif

return fb_prepare_extra_logos(info, height, yres);
}

int fb_show_logo(struct fb_info *info, int rotate)
Expand Down
9 changes: 9 additions & 0 deletions drivers/video/logo/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@ menuconfig LOGO

if LOGO

config FB_LOGO_CENTER
bool "Center the logo"
depends on FB=y
help
When this option is selected, the bootup logo is centered both
horizontally and vertically. If more than one logo is displayed
due to multiple CPUs, the collected line of logos is centered
as a whole.

config FB_LOGO_EXTRA
bool
depends on FB=y
Expand Down

0 comments on commit 3d8b193

Please sign in to comment.