X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fvideo%2Foffb.c;h=f5a776364c72b025b7b0eea4825fa3f049d5a750;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=92a41f71e2e072bfe9b821a3bc478d69c06b7541;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/video/offb.c b/drivers/video/offb.c index 92a41f71e..f5a776364 100644 --- a/drivers/video/offb.c +++ b/drivers/video/offb.c @@ -47,20 +47,14 @@ enum { }; struct offb_par { - volatile unsigned char *cmap_adr; - volatile unsigned char *cmap_data; + volatile void __iomem *cmap_adr; + volatile void __iomem *cmap_data; int cmap_type; int blanked; }; struct offb_par default_par; -#ifdef __powerpc__ -#define mach_eieio() eieio() -#else -#define mach_eieio() do {} while (0) -#endif - /* * Interface used by the world */ @@ -110,44 +104,36 @@ static int offb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, switch (par->cmap_type) { case cmap_m64: - *par->cmap_adr = regno; - mach_eieio(); - *par->cmap_data = red; - mach_eieio(); - *par->cmap_data = green; - mach_eieio(); - *par->cmap_data = blue; - mach_eieio(); + writeb(regno, par->cmap_adr); + writeb(red, par->cmap_data); + writeb(green, par->cmap_data); + writeb(blue, par->cmap_data); break; case cmap_M3A: /* Clear PALETTE_ACCESS_CNTL in DAC_CNTL */ - out_le32((unsigned *) (par->cmap_adr + 0x58), - in_le32((unsigned *) (par->cmap_adr + - 0x58)) & ~0x20); + out_le32(par->cmap_adr + 0x58, + in_le32(par->cmap_adr + 0x58) & ~0x20); case cmap_r128: /* Set palette index & data */ out_8(par->cmap_adr + 0xb0, regno); - out_le32((unsigned *) (par->cmap_adr + 0xb4), + out_le32(par->cmap_adr + 0xb4, (red << 16 | green << 8 | blue)); break; case cmap_M3B: /* Set PALETTE_ACCESS_CNTL in DAC_CNTL */ - out_le32((unsigned *) (par->cmap_adr + 0x58), - in_le32((unsigned *) (par->cmap_adr + - 0x58)) | 0x20); + out_le32(par->cmap_adr + 0x58, + in_le32(par->cmap_adr + 0x58) | 0x20); /* Set palette index & data */ out_8(par->cmap_adr + 0xb0, regno); - out_le32((unsigned *) (par->cmap_adr + 0xb4), - (red << 16 | green << 8 | blue)); + out_le32(par->cmap_adr + 0xb4, (red << 16 | green << 8 | blue)); break; case cmap_radeon: /* Set palette index & data (could be smarter) */ out_8(par->cmap_adr + 0xb0, regno); - out_le32((unsigned *) (par->cmap_adr + 0xb4), - (red << 16 | green << 8 | blue)); + out_le32(par->cmap_adr + 0xb4, (red << 16 | green << 8 | blue)); break; case cmap_gxt2000: - out_le32((unsigned *) par->cmap_adr + regno, + out_le32((unsigned __iomem *) par->cmap_adr + regno, (red << 16 | green << 8 | blue)); break; } @@ -191,47 +177,33 @@ static int offb_blank(int blank, struct fb_info *info) for (i = 0; i < 256; i++) { switch (par->cmap_type) { case cmap_m64: - *par->cmap_adr = i; - mach_eieio(); - for (j = 0; j < 3; j++) { - *par->cmap_data = 0; - mach_eieio(); - } + writeb(i, par->cmap_adr); + for (j = 0; j < 3; j++) + writeb(0, par->cmap_data); break; case cmap_M3A: /* Clear PALETTE_ACCESS_CNTL in DAC_CNTL */ - out_le32((unsigned *) (par->cmap_adr + - 0x58), - in_le32((unsigned *) (par-> - cmap_adr + - 0x58)) & - ~0x20); + out_le32(par->cmap_adr + 0x58, + in_le32(par->cmap_adr + 0x58) & ~0x20); case cmap_r128: /* Set palette index & data */ out_8(par->cmap_adr + 0xb0, i); - out_le32((unsigned *) (par->cmap_adr + - 0xb4), 0); + out_le32(par->cmap_adr + 0xb4, 0); break; case cmap_M3B: /* Set PALETTE_ACCESS_CNTL in DAC_CNTL */ - out_le32((unsigned *) (par->cmap_adr + - 0x58), - in_le32((unsigned *) (par-> - cmap_adr + - 0x58)) | - 0x20); + out_le32(par->cmap_adr + 0x58, + in_le32(par->cmap_adr + 0x58) | 0x20); /* Set palette index & data */ out_8(par->cmap_adr + 0xb0, i); - out_le32((unsigned *) (par->cmap_adr + - 0xb4), 0); + out_le32(par->cmap_adr + 0xb4, 0); break; case cmap_radeon: out_8(par->cmap_adr + 0xb0, i); - out_le32((unsigned *) (par->cmap_adr + - 0xb4), 0); + out_le32(par->cmap_adr + 0xb4, 0); break; case cmap_gxt2000: - out_le32((unsigned *) par->cmap_adr + i, + out_le32((unsigned __iomem *) par->cmap_adr + i, 0); break; }