]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/video/fbmem.c
[PATCH] video/aty/atyfb_base.c: fix an off-by-one error
[linux-2.6-omap-h63xx.git] / drivers / video / fbmem.c
index 996c7b58564e33b4f555c9669ff14935b79ae457..944855b3e4afe304aab2f25c43d24c6b5dbe82bf 100644 (file)
@@ -55,7 +55,7 @@
 
 #define FBPIXMAPSIZE   (1024 * 8)
 
-static struct notifier_block *fb_notifier_list;
+static BLOCKING_NOTIFIER_HEAD(fb_notifier_list);
 struct fb_info *registered_fb[FB_MAX];
 int num_registered_fb;
 
@@ -784,7 +784,7 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
 
                    event.info = info;
                    event.data = &mode1;
-                   ret = notifier_call_chain(&fb_notifier_list,
+                   ret = blocking_notifier_call_chain(&fb_notifier_list,
                                              FB_EVENT_MODE_DELETE, &event);
                }
 
@@ -830,8 +830,8 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
 
                                info->flags &= ~FBINFO_MISC_USEREVENT;
                                event.info = info;
-                               notifier_call_chain(&fb_notifier_list, evnt,
-                                                   &event);
+                               blocking_notifier_call_chain(&fb_notifier_list,
+                                               evnt, &event);
                        }
                }
        }
@@ -854,7 +854,8 @@ fb_blank(struct fb_info *info, int blank)
 
                event.info = info;
                event.data = ␣
-               notifier_call_chain(&fb_notifier_list, FB_EVENT_BLANK, &event);
+               blocking_notifier_call_chain(&fb_notifier_list,
+                               FB_EVENT_BLANK, &event);
        }
 
        return ret;
@@ -925,7 +926,7 @@ fb_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
                con2fb.framebuffer = -1;
                event.info = info;
                event.data = &con2fb;
-               notifier_call_chain(&fb_notifier_list,
+               blocking_notifier_call_chain(&fb_notifier_list,
                                    FB_EVENT_GET_CONSOLE_MAP, &event);
                return copy_to_user(argp, &con2fb,
                                    sizeof(con2fb)) ? -EFAULT : 0;
@@ -944,7 +945,7 @@ fb_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
                    return -EINVAL;
                event.info = info;
                event.data = &con2fb;
-               return notifier_call_chain(&fb_notifier_list,
+               return blocking_notifier_call_chain(&fb_notifier_list,
                                           FB_EVENT_SET_CONSOLE_MAP,
                                           &event);
        case FBIOBLANK:
@@ -1169,11 +1170,6 @@ fb_mmap(struct file *file, struct vm_area_struct * vma)
        vma->vm_pgoff = off >> PAGE_SHIFT;
        /* This is an IO map - tell maydump to skip this VMA */
        vma->vm_flags |= VM_IO | VM_RESERVED;
-#if defined(__sparc_v9__)
-       if (io_remap_pfn_range(vma, vma->vm_start, off >> PAGE_SHIFT,
-                               vma->vm_end - vma->vm_start, vma->vm_page_prot))
-               return -EAGAIN;
-#else
 #if defined(__mc68000__)
 #if defined(CONFIG_SUN3)
        pgprot_val(vma->vm_page_prot) |= SUN3_PAGE_NOCACHE;
@@ -1195,7 +1191,7 @@ fb_mmap(struct file *file, struct vm_area_struct * vma)
 #elif defined(__i386__) || defined(__x86_64__)
        if (boot_cpu_data.x86 > 3)
                pgprot_val(vma->vm_page_prot) |= _PAGE_PCD;
-#elif defined(__mips__)
+#elif defined(__mips__) || defined(__sparc_v9__)
        vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 #elif defined(__hppa__)
        pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE;
@@ -1212,7 +1208,6 @@ fb_mmap(struct file *file, struct vm_area_struct * vma)
        if (io_remap_pfn_range(vma, vma->vm_start, off >> PAGE_SHIFT,
                             vma->vm_end - vma->vm_start, vma->vm_page_prot))
                return -EAGAIN;
-#endif /* !__sparc_v9__ */
        return 0;
 #endif /* !sparc32 */
 }
@@ -1330,7 +1325,7 @@ register_framebuffer(struct fb_info *fb_info)
        devfs_mk_cdev(MKDEV(FB_MAJOR, i),
                        S_IFCHR | S_IRUGO | S_IWUGO, "fb/%d", i);
        event.info = fb_info;
-       notifier_call_chain(&fb_notifier_list,
+       blocking_notifier_call_chain(&fb_notifier_list,
                            FB_EVENT_FB_REGISTERED, &event);
        return 0;
 }
@@ -1372,7 +1367,7 @@ unregister_framebuffer(struct fb_info *fb_info)
  */
 int fb_register_client(struct notifier_block *nb)
 {
-       return notifier_chain_register(&fb_notifier_list, nb);
+       return blocking_notifier_chain_register(&fb_notifier_list, nb);
 }
 
 /**
@@ -1381,7 +1376,7 @@ int fb_register_client(struct notifier_block *nb)
  */
 int fb_unregister_client(struct notifier_block *nb)
 {
-       return notifier_chain_unregister(&fb_notifier_list, nb);
+       return blocking_notifier_chain_unregister(&fb_notifier_list, nb);
 }
 
 /**
@@ -1399,11 +1394,13 @@ void fb_set_suspend(struct fb_info *info, int state)
 
        event.info = info;
        if (state) {
-               notifier_call_chain(&fb_notifier_list, FB_EVENT_SUSPEND, &event);
+               blocking_notifier_call_chain(&fb_notifier_list,
+                               FB_EVENT_SUSPEND, &event);
                info->state = FBINFO_STATE_SUSPENDED;
        } else {
                info->state = FBINFO_STATE_RUNNING;
-               notifier_call_chain(&fb_notifier_list, FB_EVENT_RESUME, &event);
+               blocking_notifier_call_chain(&fb_notifier_list,
+                               FB_EVENT_RESUME, &event);
        }
 }
 
@@ -1475,7 +1472,7 @@ int fb_new_modelist(struct fb_info *info)
 
        if (!list_empty(&info->modelist)) {
                event.info = info;
-               err = notifier_call_chain(&fb_notifier_list,
+               err = blocking_notifier_call_chain(&fb_notifier_list,
                                           FB_EVENT_NEW_MODELIST,
                                           &event);
        }
@@ -1501,7 +1498,7 @@ int fb_con_duit(struct fb_info *info, int event, void *data)
        evnt.info = info;
        evnt.data = data;
 
-       return notifier_call_chain(&fb_notifier_list, event, &evnt);
+       return blocking_notifier_call_chain(&fb_notifier_list, event, &evnt);
 }
 EXPORT_SYMBOL(fb_con_duit);
 
@@ -1591,7 +1588,7 @@ static int __init video_setup(char *options)
                }
        }
 
-       return 0;
+       return 1;
 }
 __setup("video=", video_setup);
 #endif