]> git.hungrycats.org Git - linux/commitdiff
[PATCH] fbdev: Add iomem annotations to fbmem.c
authorAntonino Daplas <adaplas@hotpop.com>
Tue, 19 Oct 2004 01:07:17 +0000 (18:07 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 19 Oct 2004 01:07:17 +0000 (18:07 -0700)
Add iomem annotations to fbmem.c

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/video/fbmem.c

index 7e5a20e442b6b01fbe56069a56396c1a354af70f..c21b42e4b09a9754cc30cb047598da8ac8b89a21 100644 (file)
@@ -507,7 +507,8 @@ fb_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
        struct inode *inode = file->f_dentry->d_inode;
        int fbidx = iminor(inode);
        struct fb_info *info = registered_fb[fbidx];
-       u32 *buffer, *dst, *src;
+       u32 *buffer, *dst;
+       u32 __iomem *src;
        int c, i, cnt = 0, err = 0;
        unsigned long total_size;
 
@@ -537,7 +538,7 @@ fb_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
        if (!buffer)
                return -ENOMEM;
 
-       src = (u32 *) (info->screen_base + p);
+       src = (u32 __iomem *) (info->screen_base + p);
 
        if (info->fbops->fb_sync)
                info->fbops->fb_sync(info);
@@ -549,12 +550,12 @@ fb_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
                        *dst++ = fb_readl(src++);
                if (c & 3) {
                        u8 *dst8 = (u8 *) dst;
-                       u8 *src8 = (u8 *) src;
+                       u8 __iomem *src8 = (u8 __iomem *) src;
 
                        for (i = c & 3; i--;)
                                *dst8++ = fb_readb(src8++);
 
-                       src = (u32 *) src8;
+                       src = (u32 __iomem *) src8;
                }
 
                if (copy_to_user(buf, buffer, c)) {
@@ -578,7 +579,8 @@ fb_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
        struct inode *inode = file->f_dentry->d_inode;
        int fbidx = iminor(inode);
        struct fb_info *info = registered_fb[fbidx];
-       u32 *buffer, *dst, *src;
+       u32 *buffer, *src;
+       u32 __iomem *dst;
        int c, i, cnt = 0, err;
        unsigned long total_size;
 
@@ -610,7 +612,7 @@ fb_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
        if (!buffer)
                return -ENOMEM;
 
-       dst = (u32 *) (info->screen_base + p);
+       dst = (u32 __iomem *) (info->screen_base + p);
 
        if (info->fbops->fb_sync)
                info->fbops->fb_sync(info);
@@ -626,12 +628,12 @@ fb_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
                        fb_writel(*src++, dst++);
                if (c & 3) {
                        u8 *src8 = (u8 *) src;
-                       u8 *dst8 = (u8 *) dst;
+                       u8 __iomem *dst8 = (u8 __iomem *) dst;
 
                        for (i = c & 3; i--; )
                                fb_writeb(*src8++, dst8++);
 
-                       dst = (u32 *) dst8;
+                       dst = (u32 __iomem *) dst8;
                }
                *ppos += c;
                buf += c;
@@ -657,7 +659,8 @@ fb_load_cursor_image(struct fb_info *info)
        u8 *data = (u8 *) info->cursor.image.data;
 
        if (info->sprite.outbuf)
-           info->sprite.outbuf(info, info->sprite.addr, data, width);
+           info->sprite.outbuf(info, info->sprite.addr, data,
+                               width);
        else
            memcpy(info->sprite.addr, data, width);
 }
@@ -851,20 +854,28 @@ int
 fb_blank(struct fb_info *info, int blank)
 {      
        /* ??? Variable sized stack allocation.  */
-       u16 black[info->cmap.len];
        struct fb_cmap cmap;
+       u16 *black = NULL;
+       int err = 0;
        
        if (info->fbops->fb_blank && !info->fbops->fb_blank(blank, info))
                return 0;
        if (blank) { 
-               memset(black, 0, info->cmap.len * sizeof(u16));
-               cmap.red = cmap.green = cmap.blue = black;
-               cmap.transp = info->cmap.transp ? black : NULL;
-               cmap.start = info->cmap.start;
-               cmap.len = info->cmap.len;
+               black = kmalloc(sizeof(u16) * info->cmap.len, GFP_KERNEL);
+               if (!black) {
+                       memset(black, 0, info->cmap.len * sizeof(u16));
+                       cmap.red = cmap.green = cmap.blue = black;
+                       cmap.transp = info->cmap.transp ? black : NULL;
+                       cmap.start = info->cmap.start;
+                       cmap.len = info->cmap.len;
+               }
        } else
                cmap = info->cmap;
-       return fb_set_cmap(&cmap, info);
+
+       err = fb_set_cmap(&cmap, info);
+       kfree(black);
+
+       return err;
 }
 
 static int