fbdev: c2p/atafb - Add support for Atari interleaved bitplanes

The c2p() for normal bitplanes is not suitable for interleaved bitplanes with
2 bytes of interleave, causing a garbled penguin logo. Add c2p_iplan2().

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
Geert Uytterhoeven
2008-12-21 15:48:12 +01:00
parent 2cd1de0a0f
commit 96f47d6105
5 changed files with 208 additions and 14 deletions

View File

@@ -122,7 +122,6 @@ static struct atafb_par {
void *screen_base;
int yres_virtual;
u_long next_line;
u_long next_plane;
#if defined ATAFB_TT || defined ATAFB_STE
union {
struct {
@@ -1392,14 +1391,7 @@ set_screen_base:
par->screen_base = screen_base + var->yoffset * linelen;
par->hw.falcon.xoffset = 0;
// FIXME!!! sort of works, no crash
//par->next_line = linelen;
//par->next_plane = yres_virtual * linelen;
par->next_line = linelen;
par->next_plane = 2;
// crashes
//par->next_plane = linelen;
//par->next_line = yres_virtual * linelen;
return 0;
}
@@ -2662,10 +2654,9 @@ static void atafb_imageblit(struct fb_info *info, const struct fb_image *image)
src += pitch;
}
} else {
// only used for logo; broken
c2p(info->screen_base, image->data, dx, dy, width, height,
par->next_line, par->next_plane, image->width,
info->var.bits_per_pixel);
c2p_iplan2(info->screen_base, image->data, dx, dy, width,
height, par->next_line, image->width,
info->var.bits_per_pixel);
}
}