vserver 1.9.3
[linux-2.6.git] / drivers / video / cg14.c
index 40d28ba..c43322b 100644 (file)
@@ -278,7 +278,7 @@ static int cg14_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
 {
        struct cg14_par *par = (struct cg14_par *) info->par;
        struct cg14_regs *regs = par->regs;
-       struct mdi_cfginfo kmdi, *mdii;
+       struct mdi_cfginfo kmdi, __user *mdii;
        unsigned long flags;
        int cur_mode, mode, ret = 0;
 
@@ -301,13 +301,13 @@ static int cg14_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
                kmdi.mdi_size = par->ramsize;
                spin_unlock_irqrestore(&par->lock, flags);
 
-               mdii = (struct mdi_cfginfo *) arg;
+               mdii = (struct mdi_cfginfo __user *) arg;
                if (copy_to_user(mdii, &kmdi, sizeof(kmdi)))
                        ret = -EFAULT;
                break;
 
        case MDI_SET_PIXELMODE:
-               if (get_user(mode, (int *) arg)) {
+               if (get_user(mode, (int __user *) arg)) {
                        ret = -EFAULT;
                        break;
                }
@@ -550,7 +550,7 @@ static void cg14_init_one(struct sbus_dev *sdev, int node, int parent_node)
        all->par.mode = MDI_8_PIX;
        all->par.ramsize = (is_8mb ? 0x800000 : 0x400000);
 
-       all->info.flags = FBINFO_FLAG_DEFAULT;
+       all->info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN;
        all->info.fbops = &cg14_ops;
        all->info.currcon = -1;
        all->info.par = &all->par;
@@ -584,6 +584,9 @@ int __init cg14_init(void)
        struct sbus_bus *sbus;
        struct sbus_dev *sdev;
 
+       if (fb_get_options("cg14fb", NULL))
+               return -ENODEV;
+
 #ifdef CONFIG_SPARC32
        {
                int root, node;
@@ -626,8 +629,9 @@ cg14_setup(char *arg)
        return 0;
 }
 
-#ifdef MODULE
 module_init(cg14_init);
+
+#ifdef MODULE
 module_exit(cg14_exit);
 #endif