Skip to contentSkip to conversation

: logo fix

PATCH Applied Antonino Daplas 3 participants 6 messages Feb 16, 2003 – Feb 17, 2003

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/5 : logo fix

The attached patch (linux-2.5.61 + James' fbdev.diff) fixes the following:

1. compile error because of missing scripts/pmntologo.

2. Break up of fb_show_logo() to fb_prepare_logo()/fb_show_logo() to fix weird "double drawing" or the "single draw, erase in a flash" of the logo.

3. Fixed all drivers affected by the (image.depth == 0) is color expansion.

Tony

drivers/video/cfbimgblt.c +4 -4
diff -Naur linux-2.5.61-fbdev/drivers/video/cfbimgblt.c linux-2.5.61-ad/drivers/video/cfbimgblt.c
@@ -113,7 +113,7 @@
 	int i, n, bpp = p->var.bits_per_pixel;
 	unsigned long null_bits = BITS_PER_LONG - bpp;
 	u32 *palette = (u32 *) p->pseudo_palette;
-	u8 *src = image->data;
+	u8 *src = (u8 *) image->data;
 
 	dst2 = (unsigned long *) dst1;
 	for (i = image->height; i--; ) {
@@ -173,7 +173,7 @@
 	unsigned long *dst, *dst2, val, pitch = p->fix.line_length;
 	unsigned long null_bits = BITS_PER_LONG - bpp;
 	unsigned long spitch = (image->width+7)/8;
-	u8 *src = image->data, *s;
+	const char *src = image->data, *s;
 	unsigned long i, j, l;
 	
 	dst2 = (unsigned long *) dst1;
@@ -246,7 +246,7 @@
 	u32 fgx = fgcolor, bgx = bgcolor, bpp = p->var.bits_per_pixel;
 	u32 ppw = BITS_PER_LONG/bpp, spitch = (image->width + 7)/8;
 	u32 bit_mask, end_mask, eorx, shift;
-	char *s = image->data, *src;
+	const char *s = image->data, *src;
 	unsigned long *dst;
 	u32 *tab = NULL;
 	int i, j, k;
@@ -328,7 +328,7 @@
 	if (p->fbops->fb_sync)
 		p->fbops->fb_sync(p);
 
-	if (image->depth == 1) {
+	if (image->depth == 0) {
 		if (p->fix.visual == FB_VISUAL_TRUECOLOR ||
 		    p->fix.visual == FB_VISUAL_DIRECTCOLOR) {
 			fgcolor = ((u32*)(p->pseudo_palette))[image->fg_color];
drivers/video/console/fbcon.c +3 -2
diff -Naur linux-2.5.61-fbdev/drivers/video/console/fbcon.c linux-2.5.61-ad/drivers/video/console/fbcon.c
@@ -555,7 +555,7 @@
 	cursor.image.height = height;
 	cursor.image.dx = xx * width;
 	cursor.image.dy = yy * height;
-	cursor.image.depth = 1;
+	cursor.image.depth = 0;
 	cursor.image.data = image;
 	cursor.image.bg_color = bgcolor;
 	cursor.image.fg_color = fgcolor;
@@ -945,6 +945,7 @@
 		int cnt;
 		int step;
 
+		logo_height = fb_prepare_logo(info);
 		logo_lines = (logo_height + vc->vc_font.height - 1) /
 			     vc->vc_font.height;
 		q = (unsigned short *) (vc->vc_origin +
@@ -1942,7 +1943,7 @@
 	if (logo_shown == -2) {
 		logo_shown = fg_console;
 		/* This is protected above by initmem_freed */
-		logo_height = fb_show_logo(info);
+		fb_show_logo(info);
 		update_region(fg_console,
 			      vc->vc_origin + vc->vc_size_row * vc->vc_top,
 			      vc->vc_size_row * (vc->vc_bottom -
drivers/video/fbmem.c +85 -65

219 lines not on this page · raw message

drivers/video/tdfxfb.c +1 -1
diff -Naur linux-2.5.61-fbdev/drivers/video/tdfxfb.c linux-2.5.61-ad/drivers/video/tdfxfb.c
@@ -939,7 +939,7 @@
 	u8 *chardata = (u8 *) pixmap->data;
 	u32 srcfmt;
 
-	if (pixmap->depth != 1) {
+	if (pixmap->depth != 0) {
 		//banshee_make_room(par, 6 + ((size + 3) >> 2));
 		//srcfmt = stride | ((bpp+((bpp==8) ? 0 : 8)) << 13) | 0x400000;
 		cfb_imageblit(info, pixmap);
drivers/video/tgafb.c +1 -1
diff -Naur linux-2.5.61-fbdev/drivers/video/tgafb.c linux-2.5.61-ad/drivers/video/tgafb.c
@@ -585,7 +585,7 @@
 	   can do better than the generic code.  */
 	/* ??? There is a DMA write mode; I wonder if that could be
 	   made to pull the data from the image buffer...  */
-	if (image->depth > 1) {
+	if (image->depth > 0) {
 		cfb_imageblit(info, image);
 		return;
 	}
include/linux/fb.h +1 -0
diff -Naur linux-2.5.61-fbdev/include/linux/fb.h linux-2.5.61-ad/include/linux/fb.h
@@ -462,6 +462,7 @@
 /* drivers/video/fbmem.c */
 extern int register_framebuffer(struct fb_info *fb_info);
 extern int unregister_framebuffer(struct fb_info *fb_info);
+extern int fb_prepare_logo(struct fb_info *fb_info);
 extern int fb_show_logo(struct fb_info *fb_info);
 extern struct fb_info *registered_fb[FB_MAX];
 extern int num_registered_fb;
scripts/Makefile +1 -1
diff -Naur linux-2.5.61-fbdev/scripts/Makefile linux-2.5.61-ad/scripts/Makefile
@@ -8,7 +8,7 @@
 # docproc: 	 Preprocess .tmpl file in order to generate .sgml documentation
 # conmakehash:	 Create arrays for initializing the kernel console tables
 
-host-progs    := fixdep split-include conmakehash docproc kallsyms
+host-progs    := fixdep split-include conmakehash docproc kallsyms pnmtologo
 build-targets := $(host-progs)
 
 # Let clean descend into subdirs
scripts/pnmtologo.c +498 -0

498 lines not on this page · raw message

#1 lore raw
Quoted 11 lines · Antonino Daplas

The attached patch (linux-2.5.61 + James' fbdev.diff) fixes the following:

1. compile error because of missing scripts/pmntologo.

2. Break up of fb_show_logo() to fb_prepare_logo()/fb_show_logo() to fix weird "double drawing" or the "single draw, erase in a flash" of the logo.

3. Fixed all drivers affected by the (image.depth == 0) is color expansion.

Here's an incremental diff to protect logo drawing code with an #ifdef CONFIG_FB_LOGO

Tony

drivers/video/fbmem.c +7 -1
diff -Naur linux-2.5.61-fbdev/drivers/video/fbmem.c linux-2.5.61-ad/drivers/video/fbmem.c
@@ -41,7 +41,6 @@
 #include <asm/pgtable.h>
 
 #include <linux/fb.h>
-#include <linux/linux_logo.h>
 
 #ifdef CONFIG_FRAMEBUFFER_CONSOLE
 #include "console/fbcon.h"
@@ -369,6 +368,9 @@
 	return n < 0 ? d >> -n : d << n;
 }
 
+#ifdef CONFIG_FB_LOGO
+#include <linux/linux_logo.h>
+
 static void __init fb_set_logocmap(struct fb_info *info,
 				   const struct linux_logo *logo)
 {
@@ -656,6 +658,10 @@
 		kfree(logo_new);
 	return fb_logo.logo->height;
 }
+#else
+int fb_prepare_logo(struct fb_info *info) { return 0; }
+int fb_show_logo(struct fb_info *info) { return 0; }
+#endif /* CONFIG_FB_LOGO */
 
 static int fbmem_read_proc(char *buf, char **start, off_t offset,
 			   int len, int *eof, void *private)

-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

#2 lore raw

Applied.

Quoted 42 lines · Antonino Daplas
Quoted 11 lines · Antonino Daplas

The attached patch (linux-2.5.61 + James' fbdev.diff) fixes the following:

1. compile error because of missing scripts/pmntologo.

2. Break up of fb_show_logo() to fb_prepare_logo()/fb_show_logo() to fix weird "double drawing" or the "single draw, erase in a flash" of the logo.

3. Fixed all drivers affected by the (image.depth == 0) is color expansion.

Here's an incremental diff to protect logo drawing code with an #ifdef CONFIG_FB_LOGO

Tony

diff -Naur linux-2.5.61-fbdev/drivers/video/fbmem.c linux-2.5.61-ad/drivers/video/fbmem.c

drivers/video/fbmem.c +3 -1
@@ -41,7 +41,6 @@
 #include <asm/pgtable.h>
 
 #include <linux/fb.h>
-#include <linux/linux_logo.h>
 
 #ifdef CONFIG_FRAMEBUFFER_CONSOLE
 #include "console/fbcon.h"
@@ -369,6 +368,9 @@
 	return n < 0 ? d >> -n : d << n;
 }
 
+#ifdef CONFIG_FB_LOGO
+#include <linux/linux_logo.h>
+
 static void __init fb_set_logocmap(struct fb_info *info,
 				   const struct linux_logo *logo)
 {

drivers/video/fbmem.c line 667

Quoted 10 lines
drivers/video/fbmem.c +4 -0
@@ -656,6 +658,10 @@
 		kfree(logo_new);
 	return fb_logo.logo->height;
 }
+#else
+int fb_prepare_logo(struct fb_info *info) { return 0; }
+int fb_show_logo(struct fb_info *info) { return 0; }
+#endif /* CONFIG_FB_LOGO */
 
 static int fbmem_read_proc(char *buf, char **start, off_t offset,
 			   int len, int *eof, void *private)

-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

#3 lore raw
In reply to Antonino Daplas
Quoted 9 lines · Antonino Daplas
Quoted 8 lines · Antonino Daplas

The attached patch (linux-2.5.61 + James' fbdev.diff) fixes the following:

1. compile error because of missing scripts/pmntologo.

2. Break up of fb_show_logo() to fb_prepare_logo()/fb_show_logo() to fix weird "double drawing" or the "single draw, erase in a flash" of the logo.

Quoted 6 lines
Quoted 3 lines

3. Fixed all drivers affected by the (image.depth == 0) is color expansion.

Here's an incremental diff to protect logo drawing code with an #ifdef CONFIG_FB_LOGO

Note that it's called CONFIG_LOGO now.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

#4 lore raw
In reply to Antonino Daplas

Applied.

Quoted 3 lines

The attached patch (linux-2.5.61 + James' fbdev.diff) fixes the following:

1. compile error because of missing scripts/pmntologo.

Hm. I thought there was only a c file that generated a binary to. That shouldn't be missing. It might be a BK sync issue on my part.

Quoted 6 lines

2. Break up of fb_show_logo() to fb_prepare_logo()/fb_show_logo() to fix weird "double drawing" or the "single draw, erase in a flash" of the logo.

3. Fixed all drivers affected by the (image.depth == 0) is color expansion.

-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

#5 lore raw
In reply to Antonino Daplas
Quoted 3 lines · Antonino Daplas

3. Fixed all drivers affected by the (image.depth == 0) is color expansion.

Sigh, missed fbcon_putc().

Tony

drivers/video/console/fbcon.c +1 -1
diff -Naur linux-2.5.61-fbdev/drivers/video/console/fbcon.c linux-2.5.61/drivers/video/console/fbcon.c
@@ -1157,7 +1157,7 @@
 	image.dy = real_y(p, ypos) * vc->vc_font.height;
 	image.width = vc->vc_font.width;
 	image.height = vc->vc_font.height;
-	image.depth = 1;
+	image.depth = 0;
 	image.data = p->fontdata + (c & charmask) * vc->vc_font.height * width;
 
 	info->fbops->fb_imageblit(info, &image);

-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf