Jump to content

Boot splash problems / Allwinner


Igor

Recommended Posts

 

This way it works with 720p or whatever less than 1080p. There kernel logo doesn't want to show.

Good on 1280x1024 or 720p

Spoiler

[    3.336551] simple-framebuffer 7fb00000.framebuffer: framebuffer at 0x7fb00000, 0x500000 bytes, mapped to 0xf0900000
[    3.336562] simple-framebuffer 7fb00000.framebuffer: format=x8r8g8b8, mode=1280x1024x32, linelength=5120
[    3.363471] Console: switching to colour frame buffer device 160x64
[    3.365113] simple-framebuffer 7fb00000.framebuffer: fb0: simplefb registered

 


Broken on 1080p:

Spoiler

[    3.337435] simple-framebuffer 7f817000.framebuffer: framebuffer at 0x7f817000, 0x7e9000 bytes, mapped to 0xf0900000
[    3.337447] simple-framebuffer 7f817000.framebuffer: format=x8r8g8b8, mode=1920x1080x32, linelength=7680
[    3.379192] fbcon_init: disable boot-logo (boot-logo bigger than screen).
[    3.379203] Console: switching to colour frame buffer device 240x67
[    3.420003] simple-framebuffer 7f817000.framebuffer: fb0: simplefb registered

 


Relevant patch (without 320x200 bitmap.):
 

Spoiler

diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
--- a/drivers/video/logo/Kconfig
+++ b/drivers/video/logo/Kconfig
@@ -27,6 +27,10 @@ config LOGO_LINUX_CLUT224
 	bool "Standard 224-color Linux logo"
 	default y

+config LOGO_ARMBIAN_CLUT224
+	bool "Standard 224-color Armbian logo"
+	default y
+
 config LOGO_BLACKFIN_VGA16
 	bool "16-colour Blackfin Processor Linux logo"
 	depends on BLACKFIN
diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_LOGO_SUPERH_MONO)		+= logo_superh_mono.o
 obj-$(CONFIG_LOGO_SUPERH_VGA16)		+= logo_superh_vga16.o
 obj-$(CONFIG_LOGO_SUPERH_CLUT224)	+= logo_superh_clut224.o
 obj-$(CONFIG_LOGO_M32R_CLUT224)		+= logo_m32r_clut224.o
+obj-$(CONFIG_LOGO_ARMBIAN_CLUT224)	+= logo_armbian_clut224.o

 obj-$(CONFIG_SPU_BASE)			+= logo_spe_clut224.o

diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c
--- a/drivers/video/logo/logo.c
+++ b/drivers/video/logo/logo.c
@@ -1,4 +1,3 @@
-
 /*
  *  Linux logo to be displayed on boot
  *
@@ -36,6 +35,8 @@ static int __init fb_logo_late_init(void)

 late_initcall(fb_logo_late_init);

+extern const struct linux_logo logo_armbian_clut224;
+
 /* logo's are marked __initdata. Use __ref to tell
  * modpost that it is intended that this function uses data
  * marked __initdata.
@@ -111,6 +112,10 @@ const struct linux_logo * __ref fb_find_logo(int depth)
 		/* M32R Linux logo */
 		logo = &logo_m32r_clut224;
 #endif
+#ifdef CONFIG_LOGO_ARMBIAN_CLUT224
+		/* Armadeus Linux logo */
+		logo = &logo_armbian_clut224;
+#endif
 	}
 	return logo;
 }
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -487,7 +487,7 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
 	}

 	if (fb_logo.depth <= 4) {
-		logo_new = kmalloc(logo->width * logo->height, GFP_KERNEL);
+		logo_new = kmalloc(info->var.xres * info->var.yres, GFP_KERNEL);
 		if (logo_new == NULL) {
 			kfree(palette);
 			if (saved_pseudo_palette)
@@ -498,8 +498,9 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
 		fb_set_logo(info, logo, logo_new, fb_logo.depth);
 	}

-	image.dx = 0;
-	image.dy = y;
+	image.dx = (info->var.xres - logo->width) / 2;
+	image.dy = (info->var.yres - logo->height) / 2;
+
 	image.width = logo->width;
 	image.height = logo->height;

@@ -657,15 +658,14 @@ int fb_prepare_logo(struct fb_info *info, int rotate)
  		}
  	}

-	return fb_prepare_extra_logos(info, fb_logo.logo->height, yres);
+	return fb_prepare_extra_logos(info, info->var.yres, yres);
 }

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

-	y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
-			      num_online_cpus());
+	y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, 1);
 	y = fb_show_extra_logos(info, y, rotate);

 	return y;

 

 
I can't see what I did wrong. :angry:

Link to comment
Share on other sites

when I run  ./compile.sh BOARD=orangepipc KERNEL_ONLY=yes FORCE_CHECKOUT=no BRANCH=default

I got this

make[3]: *** No rule to make target `drivers/video/logo/logo_armbian_clut224.o', needed by `drivers/video/logo/built-in.o'.  Stop.

 

help me , thanks.

Link to comment
Share on other sites

That's correct - as I told, this logo function is not completely done and functional since it has some bugs and I don't know how to proceed.

Link to comment
Share on other sites

Hey I tried this patch in Yocto Linux on a 1024x600 LVDS touchpanel and got the same error message fbcon_init: disable boot-logo (boot-logo bigger than screen). Linux seems to be weird about the resolution of the kernel logo. I changed return fb_prepare_extra_logos(info, info->var.yres, yres); back to return fb_prepare_extra_logos(info, fb_logo.logo->height, yres); and was able to get the logo to display again but it only showed half of the logo vertically. I'm thinking that allowing the extra logos to take up the full size of the screen makes the kernel think that the framebuffer image is too big (not sure whatsoever just a guess).  Did you ever fix this issue?

Link to comment
Share on other sites

42 minutes ago, BoreyCutts said:

Did you ever fix this issue?


No, I haven't dug deeper into this issue but I would like to see this sorted ... once.

Link to comment
Share on other sites

Ok so I think I'm getting closer to a solution.  There's a parameter in drivers/video/console/fbcon.c called logo_height which controls the amount of vertical screen space allowed for the kernel logo to show.  I increased it to 600 (the vertical dimension of my screen) and the logo was finally able to display. However doing so caused issues with an application I'm using called wayland but that could just be a wayland thing so idk. I'll look more into this later today.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines