This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / drivers / video / offb.c
index f5a7763..92a41f7 100644 (file)
@@ -47,14 +47,20 @@ enum {
 };
 
 struct offb_par {
-       volatile void __iomem *cmap_adr;
-       volatile void __iomem *cmap_data;
+       volatile unsigned char *cmap_adr;
+       volatile unsigned char *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
      */
@@ -104,36 +110,44 @@ static int offb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
 
        switch (par->cmap_type) {
        case cmap_m64:
-               writeb(regno, par->cmap_adr);
-               writeb(red, par->cmap_data);
-               writeb(green, par->cmap_data);
-               writeb(blue, par->cmap_data);
+               *par->cmap_adr = regno;
+               mach_eieio();
+               *par->cmap_data = red;
+               mach_eieio();
+               *par->cmap_data = green;
+               mach_eieio();
+               *par->cmap_data = blue;
+               mach_eieio();
                break;
        case cmap_M3A:
                /* Clear PALETTE_ACCESS_CNTL in DAC_CNTL */
-               out_le32(par->cmap_adr + 0x58,
-                        in_le32(par->cmap_adr + 0x58) & ~0x20);
+               out_le32((unsigned *) (par->cmap_adr + 0x58),
+                        in_le32((unsigned *) (par->cmap_adr +
+                                              0x58)) & ~0x20);
        case cmap_r128:
                /* Set palette index & data */
                out_8(par->cmap_adr + 0xb0, regno);
-               out_le32(par->cmap_adr + 0xb4,
+               out_le32((unsigned *) (par->cmap_adr + 0xb4),
                         (red << 16 | green << 8 | blue));
                break;
        case cmap_M3B:
                /* Set PALETTE_ACCESS_CNTL in DAC_CNTL */
-               out_le32(par->cmap_adr + 0x58,
-                        in_le32(par->cmap_adr + 0x58) | 0x20);
+               out_le32((unsigned *) (par->cmap_adr + 0x58),
+                        in_le32((unsigned *) (par->cmap_adr +
+                                              0x58)) | 0x20);
                /* Set palette index & data */
                out_8(par->cmap_adr + 0xb0, regno);
-               out_le32(par->cmap_adr + 0xb4, (red << 16 | green << 8 | blue));
+               out_le32((unsigned *) (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(par->cmap_adr + 0xb4, (red << 16 | green << 8 | blue));
+               out_le32((unsigned *) (par->cmap_adr + 0xb4),
+                        (red << 16 | green << 8 | blue));
                break;
        case cmap_gxt2000:
-               out_le32((unsigned __iomem *) par->cmap_adr + regno,
+               out_le32((unsigned *) par->cmap_adr + regno,
                         (red << 16 | green << 8 | blue));
                break;
        }
@@ -177,33 +191,47 @@ static int offb_blank(int blank, struct fb_info *info)
                for (i = 0; i < 256; i++) {
                        switch (par->cmap_type) {
                        case cmap_m64:
-                               writeb(i, par->cmap_adr);
-                               for (j = 0; j < 3; j++)
-                                       writeb(0, par->cmap_data);
+                               *par->cmap_adr = i;
+                               mach_eieio();
+                               for (j = 0; j < 3; j++) {
+                                       *par->cmap_data = 0;
+                                       mach_eieio();
+                               }
                                break;
                        case cmap_M3A:
                                /* Clear PALETTE_ACCESS_CNTL in DAC_CNTL */
-                               out_le32(par->cmap_adr + 0x58,
-                                        in_le32(par->cmap_adr + 0x58) & ~0x20);
+                               out_le32((unsigned *) (par->cmap_adr +
+                                                      0x58),
+                                        in_le32((unsigned *) (par->
+                                                              cmap_adr +
+                                                              0x58)) &
+                                        ~0x20);
                        case cmap_r128:
                                /* Set palette index & data */
                                out_8(par->cmap_adr + 0xb0, i);
-                               out_le32(par->cmap_adr + 0xb4, 0);
+                               out_le32((unsigned *) (par->cmap_adr +
+                                                      0xb4), 0);
                                break;
                        case cmap_M3B:
                                /* Set PALETTE_ACCESS_CNTL in DAC_CNTL */
-                               out_le32(par->cmap_adr + 0x58,
-                                        in_le32(par->cmap_adr + 0x58) | 0x20);
+                               out_le32((unsigned *) (par->cmap_adr +
+                                                      0x58),
+                                        in_le32((unsigned *) (par->
+                                                              cmap_adr +
+                                                              0x58)) |
+                                        0x20);
                                /* Set palette index & data */
                                out_8(par->cmap_adr + 0xb0, i);
-                               out_le32(par->cmap_adr + 0xb4, 0);
+                               out_le32((unsigned *) (par->cmap_adr +
+                                                      0xb4), 0);
                                break;
                        case cmap_radeon:
                                out_8(par->cmap_adr + 0xb0, i);
-                               out_le32(par->cmap_adr + 0xb4, 0);
+                               out_le32((unsigned *) (par->cmap_adr +
+                                                      0xb4), 0);
                                break;
                        case cmap_gxt2000:
-                               out_le32((unsigned __iomem *) par->cmap_adr + i,
+                               out_le32((unsigned *) par->cmap_adr + i,
                                         0);
                                break;
                        }