Commit 9299c003 authored by Petr Vandrovec's avatar Petr Vandrovec Committed by Linus Torvalds

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

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.
parent 26036678
...@@ -36,7 +36,7 @@ static u32 tab_cfb16[] = { ...@@ -36,7 +36,7 @@ static u32 tab_cfb16[] = {
void fbcon_cfb16_setup(struct display *p) 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; p->next_plane = 0;
} }
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
void fbcon_cfb32_setup(struct display *p) 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; p->next_plane = 0;
} }
......
...@@ -50,7 +50,7 @@ static u16 nibbletab_cfb4[] = { ...@@ -50,7 +50,7 @@ static u16 nibbletab_cfb4[] = {
void fbcon_cfb4_setup(struct display *p) 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; p->next_plane = 0;
} }
......
...@@ -41,7 +41,7 @@ static u32 nibbletab_cfb8[] = { ...@@ -41,7 +41,7 @@ static u32 nibbletab_cfb8[] = {
void fbcon_cfb8_setup(struct display *p) 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; p->next_plane = 0;
} }
......
...@@ -119,9 +119,9 @@ void fbcon_vga_planes_bmove(struct display *p, int sy, int sx, int dy, int dx, ...@@ -119,9 +119,9 @@ void fbcon_vga_planes_bmove(struct display *p, int sy, int sx, int dy, int dx,
height *= fontheight(p); height *= fontheight(p);
if (dy < sy || (dy == sy && dx < sx)) { if (dy < sy || (dy == sy && dx < sx)) {
line_ofs = p->line_length - width; line_ofs = p->fb_info->fix.line_length - width;
dest = p->fb_info->screen_base + dx + dy * p->line_length; dest = p->fb_info->screen_base + dx + dy * p->fb_info->fix.line_length;
src = p->fb_info->screen_base + sx + sy * p->line_length; src = p->fb_info->screen_base + sx + sy * p->fb_info->fix.line_length;
while (height--) { while (height--) {
for (x = 0; x < width; x++) { for (x = 0; x < width; x++) {
readb(src); readb(src);
...@@ -133,9 +133,9 @@ void fbcon_vga_planes_bmove(struct display *p, int sy, int sx, int dy, int dx, ...@@ -133,9 +133,9 @@ void fbcon_vga_planes_bmove(struct display *p, int sy, int sx, int dy, int dx,
dest += line_ofs; dest += line_ofs;
} }
} else { } else {
line_ofs = p->line_length - width; line_ofs = p->fb_info->fix.line_length - width;
dest = p->fb_info->screen_base + dx + width + (dy + height - 1) * p->line_length; 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->line_length; src = p->fb_info->screen_base + sx + width + (sy + height - 1) * p->fb_info->fix.line_length;
while (height--) { while (height--) {
for (x = 0; x < width; x++) { for (x = 0; x < width; x++) {
dest--; dest--;
...@@ -152,7 +152,7 @@ void fbcon_vga_planes_bmove(struct display *p, int sy, int sx, int dy, int dx, ...@@ -152,7 +152,7 @@ void fbcon_vga_planes_bmove(struct display *p, int sy, int sx, int dy, int dx,
void fbcon_vga_planes_clear(struct vc_data *conp, struct display *p, int sy, int sx, void fbcon_vga_planes_clear(struct vc_data *conp, struct display *p, int sy, int sx,
int height, int width) int height, int width)
{ {
int line_ofs = p->line_length - width; int line_ofs = p->fb_info->fix.line_length - width;
char *where; char *where;
int x; int x;
...@@ -167,7 +167,7 @@ void fbcon_vga_planes_clear(struct vc_data *conp, struct display *p, int sy, int ...@@ -167,7 +167,7 @@ void fbcon_vga_planes_clear(struct vc_data *conp, struct display *p, int sy, int
sy *= fontheight(p); sy *= fontheight(p);
height *= 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--) { while (height--) {
for (x = 0; x < width; x++) { for (x = 0; x < width; x++) {
writeb(0, where); writeb(0, where);
...@@ -184,7 +184,7 @@ void fbcon_ega_planes_putc(struct vc_data *conp, struct display *p, int c, int y ...@@ -184,7 +184,7 @@ void fbcon_ega_planes_putc(struct vc_data *conp, struct display *p, int c, int y
int y; int y;
u8 *cdat = p->fontdata + (c & p->charmask) * fontheight(p); 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); setmode(0);
setop(0); setop(0);
...@@ -193,13 +193,13 @@ void fbcon_ega_planes_putc(struct vc_data *conp, struct display *p, int c, int y ...@@ -193,13 +193,13 @@ void fbcon_ega_planes_putc(struct vc_data *conp, struct display *p, int c, int y
selectmask(); selectmask();
setmask(0xff); 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); rmw(where);
where -= p->line_length * y; where -= p->fb_info->fix.line_length * y;
setcolor(fg); setcolor(fg);
selectmask(); 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]) { if (cdat[y]) {
setmask(cdat[y]); setmask(cdat[y]);
rmw(where); rmw(where);
...@@ -213,7 +213,7 @@ void fbcon_vga_planes_putc(struct vc_data *conp, struct display *p, int c, int y ...@@ -213,7 +213,7 @@ void fbcon_vga_planes_putc(struct vc_data *conp, struct display *p, int c, int y
int y; int y;
u8 *cdat = p->fontdata + (c & p->charmask) * fontheight(p); 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); setmode(2);
setop(0); setop(0);
...@@ -227,7 +227,7 @@ void fbcon_vga_planes_putc(struct vc_data *conp, struct display *p, int c, int y ...@@ -227,7 +227,7 @@ void fbcon_vga_planes_putc(struct vc_data *conp, struct display *p, int c, int y
readb(where); /* fill latches */ readb(where); /* fill latches */
setmode(3); setmode(3);
wmb(); 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); writeb(cdat[y], where);
wmb(); wmb();
} }
...@@ -248,7 +248,7 @@ void fbcon_ega_planes_putcs(struct vc_data *conp, struct display *p, const unsig ...@@ -248,7 +248,7 @@ void fbcon_ega_planes_putcs(struct vc_data *conp, struct display *p, const unsig
selectmask(); selectmask();
setmask(0xff); 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); writeb(bg, where);
rmb(); rmb();
readb(where); /* fill latches */ readb(where); /* fill latches */
...@@ -263,9 +263,9 @@ void fbcon_ega_planes_putcs(struct vc_data *conp, struct display *p, const unsig ...@@ -263,9 +263,9 @@ void fbcon_ega_planes_putcs(struct vc_data *conp, struct display *p, const unsig
outb(*cdat++, GRAPHICS_DATA_REG); outb(*cdat++, GRAPHICS_DATA_REG);
wmb(); wmb();
writeb(fg, where); 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(); wmb();
...@@ -289,7 +289,7 @@ void fbcon_vga_planes_putcs(struct vc_data *conp, struct display *p, const unsig ...@@ -289,7 +289,7 @@ void fbcon_vga_planes_putcs(struct vc_data *conp, struct display *p, const unsig
selectmask(); selectmask();
setmask(0xff); 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); writeb(bg, where);
rmb(); rmb();
readb(where); /* fill latches */ readb(where); /* fill latches */
...@@ -302,9 +302,9 @@ void fbcon_vga_planes_putcs(struct vc_data *conp, struct display *p, const unsig ...@@ -302,9 +302,9 @@ void fbcon_vga_planes_putcs(struct vc_data *conp, struct display *p, const unsig
for (y = 0; y < fontheight(p); y++, cdat++) { for (y = 0; y < fontheight(p); y++, cdat++) {
writeb (*cdat, where); 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(); wmb();
...@@ -312,7 +312,7 @@ void fbcon_vga_planes_putcs(struct vc_data *conp, struct display *p, const unsig ...@@ -312,7 +312,7 @@ void fbcon_vga_planes_putcs(struct vc_data *conp, struct display *p, const unsig
void fbcon_vga_planes_revc(struct display *p, int xx, int yy) 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; int y;
setmode(0); setmode(0);
...@@ -324,7 +324,7 @@ void fbcon_vga_planes_revc(struct display *p, int xx, int yy) ...@@ -324,7 +324,7 @@ void fbcon_vga_planes_revc(struct display *p, int xx, int yy)
setmask(0xff); setmask(0xff);
for (y = 0; y < fontheight(p); y++) { for (y = 0; y < fontheight(p); y++) {
rmw(where); rmw(where);
where += p->line_length; where += p->fb_info->fix.line_length;
} }
} }
......
...@@ -2306,7 +2306,7 @@ static int __init fbcon_show_logo( void ) ...@@ -2306,7 +2306,7 @@ static int __init fbcon_show_logo( void )
} }
#endif #endif
#if defined(CONFIG_FBCON_CFB4) #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; src = logo;
for( y1 = 0; y1 < LOGO_H; y1++) { for( y1 = 0; y1 < LOGO_H; y1++) {
dst = fb + y1*line + x/2; dst = fb + y1*line + x/2;
...@@ -2320,7 +2320,7 @@ static int __init fbcon_show_logo( void ) ...@@ -2320,7 +2320,7 @@ static int __init fbcon_show_logo( void )
} }
#endif #endif
#if defined(CONFIG_FBCON_CFB8) || defined(CONFIG_FB_SBUS) #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 */ /* depth 8 or more, packed, with color registers */
src = logo; src = logo;
...@@ -2335,8 +2335,8 @@ static int __init fbcon_show_logo( void ) ...@@ -2335,8 +2335,8 @@ static int __init fbcon_show_logo( void )
#if defined(CONFIG_FBCON_AFB) || defined(CONFIG_FBCON_ILBM) || \ #if defined(CONFIG_FBCON_AFB) || defined(CONFIG_FBCON_ILBM) || \
defined(CONFIG_FBCON_IPLAN2P2) || defined(CONFIG_FBCON_IPLAN2P4) || \ defined(CONFIG_FBCON_IPLAN2P2) || defined(CONFIG_FBCON_IPLAN2P4) || \
defined(CONFIG_FBCON_IPLAN2P8) defined(CONFIG_FBCON_IPLAN2P8)
if (depth >= 2 && (p->type == FB_TYPE_PLANES || if (depth >= 2 && (info->fix.type == FB_TYPE_PLANES ||
p->type == FB_TYPE_INTERLEAVED_PLANES)) { info->fix.type == FB_TYPE_INTERLEAVED_PLANES)) {
/* planes (normal or interleaved), with color registers */ /* planes (normal or interleaved), with color registers */
int bit; int bit;
unsigned char val, mask; unsigned char val, mask;
...@@ -2388,9 +2388,9 @@ static int __init fbcon_show_logo( void ) ...@@ -2388,9 +2388,9 @@ static int __init fbcon_show_logo( void )
#if defined(CONFIG_FBCON_MFB) || defined(CONFIG_FBCON_AFB) || \ #if defined(CONFIG_FBCON_MFB) || defined(CONFIG_FBCON_AFB) || \
defined(CONFIG_FBCON_ILBM) || defined(CONFIG_FBCON_HGA) defined(CONFIG_FBCON_ILBM) || defined(CONFIG_FBCON_HGA)
if (depth == 1 && (p->type == FB_TYPE_PACKED_PIXELS || if (depth == 1 && (p->fix.type == FB_TYPE_PACKED_PIXELS ||
p->type == FB_TYPE_PLANES || p->fix.type == FB_TYPE_PLANES ||
p->type == FB_TYPE_INTERLEAVED_PLANES)) { p->fix.type == FB_TYPE_INTERLEAVED_PLANES)) {
/* monochrome */ /* monochrome */
unsigned char inverse = p->inverse || p->visual == FB_VISUAL_MONO01 unsigned char inverse = p->inverse || p->visual == FB_VISUAL_MONO01
...@@ -2411,7 +2411,7 @@ static int __init fbcon_show_logo( void ) ...@@ -2411,7 +2411,7 @@ static int __init fbcon_show_logo( void )
} }
#endif #endif
#if defined(CONFIG_FBCON_VGA_PLANES) #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(1,0x3ce); outb_p(0xf,0x3cf);
outb_p(3,0x3ce); outb_p(0,0x3cf); outb_p(3,0x3ce); outb_p(0,0x3cf);
outb_p(5,0x3ce); outb_p(0,0x3cf); outb_p(5,0x3ce); outb_p(0,0x3cf);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment