[PATCH] broken cfb* support in the 2.5.31-bk

STALE8768d

2 messages, 2 authors, 2002-08-15 · open the first message on its own page

[PATCH] broken cfb* support in the 2.5.31-bk

From: Petr Vandrovec <hidden>
Date: 2002-08-14 19:19:02

Hi Linus, hello others,
  please apply this.

line_length, type and visual moved from display struct to the fb_info's fix
structure during last fbdev updates. Unfortunately generic code was not updated
together, so now every fbdev driver is broken.

						Thanks,
							Petr Vandrovec
							vandrove@vc.cvut.cz

diff -urdN linux/drivers/video/fbcon-cfb16.c linux/drivers/video/fbcon-cfb16.c
--- linux/drivers/video/fbcon-cfb16.c	2002-08-14 17:55:16.000000000 +0200
+++ linux/drivers/video/fbcon-cfb16.c	2002-08-14 17:59:19.000000000 +0200
@@ -36,7 +36,7 @@
 
 void fbcon_cfb16_setup(struct display *p)
 {
-    p->next_line = p->line_length ? p->line_length : p->var.xres_virtual<<1;
+    p->next_line = p->fb_info->fix.line_length ? p->fb_info->fix.line_length : p->var.xres_virtual<<1;
     p->next_plane = 0;
 }
 
diff -urdN linux/drivers/video/fbcon-cfb32.c linux/drivers/video/fbcon-cfb32.c
--- linux/drivers/video/fbcon-cfb32.c	2002-08-14 17:55:09.000000000 +0200
+++ linux/drivers/video/fbcon-cfb32.c	2002-08-14 17:59:19.000000000 +0200
@@ -25,7 +25,7 @@
 
 void fbcon_cfb32_setup(struct display *p)
 {
-    p->next_line = p->line_length ? p->line_length : p->var.xres_virtual<<2;
+    p->next_line = p->fb_info->fix.line_length ? p->fb_info->fix.line_length : p->var.xres_virtual<<2;
     p->next_plane = 0;
 }
 
diff -urdN linux/drivers/video/fbcon-cfb4.c linux/drivers/video/fbcon-cfb4.c
--- linux/drivers/video/fbcon-cfb4.c	2002-08-14 17:55:12.000000000 +0200
+++ linux/drivers/video/fbcon-cfb4.c	2002-08-14 17:59:19.000000000 +0200
@@ -50,7 +50,7 @@
 
 void fbcon_cfb4_setup(struct display *p)
 {
-    p->next_line = p->line_length ? p->line_length : p->var.xres_virtual>>1;
+    p->next_line = p->fb_info->fix.line_length ? p->fb_info->fix.line_length : p->var.xres_virtual>>1;
     p->next_plane = 0;
 }
 
diff -urdN linux/drivers/video/fbcon-cfb8.c linux/drivers/video/fbcon-cfb8.c
--- linux/drivers/video/fbcon-cfb8.c	2002-08-14 17:55:16.000000000 +0200
+++ linux/drivers/video/fbcon-cfb8.c	2002-08-14 17:59:19.000000000 +0200
@@ -41,7 +41,7 @@
 
 void fbcon_cfb8_setup(struct display *p)
 {
-    p->next_line = p->line_length ? p->line_length : p->var.xres_virtual;
+    p->next_line = p->fb_info->fix.line_length ? p->fb_info->fix.line_length : p->var.xres_virtual;
     p->next_plane = 0;
 }
 
diff -urdN linux/drivers/video/fbcon-vga-planes.c linux/drivers/video/fbcon-vga-planes.c
--- linux/drivers/video/fbcon-vga-planes.c	2002-08-14 17:55:16.000000000 +0200
+++ linux/drivers/video/fbcon-vga-planes.c	2002-08-14 17:59:19.000000000 +0200
@@ -119,9 +119,9 @@
 	height *= fontheight(p);
 
 	if (dy < sy || (dy == sy && dx < sx)) {
-		line_ofs = p->line_length - width;
-		dest = p->fb_info->screen_base + dx + dy * p->line_length;
-		src = p->fb_info->screen_base + sx + sy * p->line_length;
+		line_ofs = p->fb_info->fix.line_length - width;
+		dest = p->fb_info->screen_base + dx + dy * p->fb_info->fix.line_length;
+		src = p->fb_info->screen_base + sx + sy * p->fb_info->fix.line_length;
 		while (height--) {
 			for (x = 0; x < width; x++) {
 				readb(src);
@@ -133,9 +133,9 @@
 			dest += line_ofs;
 		}
 	} else {
-		line_ofs = p->line_length - width;
-		dest = p->fb_info->screen_base + dx + width + (dy + height - 1) * p->line_length;
-		src = p->fb_info->screen_base + sx + width + (sy + height - 1) * p->line_length;
+		line_ofs = p->fb_info->fix.line_length - width;
+		dest = p->fb_info->screen_base + dx + width + (dy + height - 1) * p->fb_info->fix.line_length;
+		src = p->fb_info->screen_base + sx + width + (sy + height - 1) * p->fb_info->fix.line_length;
 		while (height--) {
 			for (x = 0; x < width; x++) {
 				dest--;
@@ -152,7 +152,7 @@
 void fbcon_vga_planes_clear(struct vc_data *conp, struct display *p, int sy, int sx,
 		   int height, int width)
 {
-	int line_ofs = p->line_length - width;
+	int line_ofs = p->fb_info->fix.line_length - width;
 	char *where;
 	int x;
 	
@@ -167,7 +167,7 @@
 	sy *= fontheight(p);
 	height *= fontheight(p);
 
-	where = p->fb_info->screen_base + sx + sy * p->line_length;
+	where = p->fb_info->screen_base + sx + sy * p->fb_info->fix.line_length;
 	while (height--) {
 		for (x = 0; x < width; x++) {
 			writeb(0, where);
@@ -184,7 +184,7 @@
 
 	int y;
 	u8 *cdat = p->fontdata + (c & p->charmask) * fontheight(p);
-	char *where = p->fb_info->screen_base + xx + yy * p->line_length * fontheight(p);
+	char *where = p->fb_info->screen_base + xx + yy * p->fb_info->fix.line_length * fontheight(p);
 
 	setmode(0);
 	setop(0);
@@ -193,13 +193,13 @@
 	selectmask();
 
 	setmask(0xff);
-	for (y = 0; y < fontheight(p); y++, where += p->line_length) 
+	for (y = 0; y < fontheight(p); y++, where += p->fb_info->fix.line_length) 
 		rmw(where);
 
-	where -= p->line_length * y;
+	where -= p->fb_info->fix.line_length * y;
 	setcolor(fg);
 	selectmask();
-	for (y = 0; y < fontheight(p); y++, where += p->line_length) 
+	for (y = 0; y < fontheight(p); y++, where += p->fb_info->fix.line_length) 
 		if (cdat[y]) {
 			setmask(cdat[y]);
 			rmw(where);
@@ -213,7 +213,7 @@
 
 	int y;
 	u8 *cdat = p->fontdata + (c & p->charmask) * fontheight(p);
-	char *where = p->fb_info->screen_base + xx + yy * p->line_length * fontheight(p);
+	char *where = p->fb_info->screen_base + xx + yy * p->fb_info->fix.line_length * fontheight(p);
 
 	setmode(2);
 	setop(0);
@@ -227,7 +227,7 @@
 	readb(where); /* fill latches */
 	setmode(3);
 	wmb();
-	for (y = 0; y < fontheight(p); y++, where += p->line_length) 
+	for (y = 0; y < fontheight(p); y++, where += p->fb_info->fix.line_length) 
 		writeb(cdat[y], where);
 	wmb();
 }
@@ -248,7 +248,7 @@
 	selectmask();
 
 	setmask(0xff);
-	where = p->fb_info->screen_base + xx + yy * p->line_length * fontheight(p);
+	where = p->fb_info->screen_base + xx + yy * p->fb_info->fix.line_length * fontheight(p);
 	writeb(bg, where);
 	rmb();
 	readb(where); /* fill latches */
@@ -263,9 +263,9 @@
 			outb(*cdat++, GRAPHICS_DATA_REG);	
 			wmb();
 			writeb(fg, where);
-			where += p->line_length;
+			where += p->fb_info->fix.line_length;
 		}
-		where += 1 - p->line_length * fontheight(p);
+		where += 1 - p->fb_info->fix.line_length * fontheight(p);
 	}
 	
 	wmb();
@@ -289,7 +289,7 @@
 	selectmask();
 
 	setmask(0xff);
-	where = p->fb_info->screen_base + xx + yy * p->line_length * fontheight(p);
+	where = p->fb_info->screen_base + xx + yy * p->fb_info->fix.line_length * fontheight(p);
 	writeb(bg, where);
 	rmb();
 	readb(where); /* fill latches */
@@ -302,9 +302,9 @@
 
 		for (y = 0; y < fontheight(p); y++, cdat++) {
 			writeb (*cdat, where);
-			where += p->line_length;
+			where += p->fb_info->fix.line_length;
 		}
-		where += 1 - p->line_length * fontheight(p);
+		where += 1 - p->fb_info->fix.line_length * fontheight(p);
 	}
 	
 	wmb();
@@ -312,7 +312,7 @@
 
 void fbcon_vga_planes_revc(struct display *p, int xx, int yy)
 {
-	char *where = p->fb_info->screen_base + xx + yy * p->line_length * fontheight(p);
+	char *where = p->fb_info->screen_base + xx + yy * p->fb_info->fix.line_length * fontheight(p);
 	int y;
 	
 	setmode(0);
@@ -324,7 +324,7 @@
 	setmask(0xff);
 	for (y = 0; y < fontheight(p); y++) {
 		rmw(where);
-		where += p->line_length;
+		where += p->fb_info->fix.line_length;
 	}
 }
 
diff -urdN linux/drivers/video/fbcon.c linux/drivers/video/fbcon.c
--- linux/drivers/video/fbcon.c	2002-08-14 17:55:08.000000000 +0200
+++ linux/drivers/video/fbcon.c	2002-08-14 17:59:19.000000000 +0200
@@ -2306,7 +2306,7 @@
 	}
 #endif
 #if defined(CONFIG_FBCON_CFB4)
-	if (depth == 4 && p->type == FB_TYPE_PACKED_PIXELS) {
+	if (depth == 4 && info->fix.type == FB_TYPE_PACKED_PIXELS) {
 		src = logo;
 		for( y1 = 0; y1 < LOGO_H; y1++) {
 			dst = fb + y1*line + x/2;
@@ -2320,7 +2320,7 @@
 	}
 #endif
 #if defined(CONFIG_FBCON_CFB8) || defined(CONFIG_FB_SBUS)
-	if (depth == 8 && p->type == FB_TYPE_PACKED_PIXELS) {
+	if (depth == 8 && info->fix.type == FB_TYPE_PACKED_PIXELS) {
 	    /* depth 8 or more, packed, with color registers */
 		
 	    src = logo;
@@ -2335,8 +2335,8 @@
 #if defined(CONFIG_FBCON_AFB) || defined(CONFIG_FBCON_ILBM) || \
     defined(CONFIG_FBCON_IPLAN2P2) || defined(CONFIG_FBCON_IPLAN2P4) || \
     defined(CONFIG_FBCON_IPLAN2P8)
-	if (depth >= 2 && (p->type == FB_TYPE_PLANES ||
-			   p->type == FB_TYPE_INTERLEAVED_PLANES)) {
+	if (depth >= 2 && (info->fix.type == FB_TYPE_PLANES ||
+			   info->fix.type == FB_TYPE_INTERLEAVED_PLANES)) {
 	    /* planes (normal or interleaved), with color registers */
 	    int bit;
 	    unsigned char val, mask;
@@ -2388,9 +2388,9 @@
 #if defined(CONFIG_FBCON_MFB) || defined(CONFIG_FBCON_AFB) || \
     defined(CONFIG_FBCON_ILBM) || defined(CONFIG_FBCON_HGA)
 
-	if (depth == 1 && (p->type == FB_TYPE_PACKED_PIXELS ||
-			   p->type == FB_TYPE_PLANES ||
-			   p->type == FB_TYPE_INTERLEAVED_PLANES)) {
+	if (depth == 1 && (p->fix.type == FB_TYPE_PACKED_PIXELS ||
+			   p->fix.type == FB_TYPE_PLANES ||
+			   p->fix.type == FB_TYPE_INTERLEAVED_PLANES)) {
 
 	    /* monochrome */
 	    unsigned char inverse = p->inverse || p->visual == FB_VISUAL_MONO01
@@ -2411,7 +2411,7 @@
 	}
 #endif
 #if defined(CONFIG_FBCON_VGA_PLANES)
-	if (depth == 4 && p->type == FB_TYPE_VGA_PLANES) {
+	if (depth == 4 && info->fix.type == FB_TYPE_VGA_PLANES) {
 		outb_p(1,0x3ce); outb_p(0xf,0x3cf);
 		outb_p(3,0x3ce); outb_p(0,0x3cf);
 		outb_p(5,0x3ce); outb_p(0,0x3cf);


-------------------------------------------------------
This sf.net email is sponsored by: Dice - The leading online job board
for high-tech professionals. Search and apply for tech jobs today!
http://seeker.dice.com/seeker.epl?rel_code=31

Re: [PATCH] broken cfb* support in the 2.5.31-bk

From: James Simmons <hidden>
Date: 2002-08-15 04:36:47

Hi Linus, hello others,
  please apply this.

line_length, type and visual moved from display struct to the fb_info's fix
structure during last fbdev updates. Unfortunately generic code was not updated
together, so now every fbdev driver is broken.
That was done to push people to port there drivers to the new api. I
applied the patch to the Bk repository but expect more breakage.



-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old
cell phone?  Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help