Pull output-switch into test branch
[safe/jmp/linux-2.6] / drivers / video / arcfb.c
index 080db81..30a8369 100644 (file)
@@ -39,7 +39,6 @@
 #include <linux/errno.h>
 #include <linux/string.h>
 #include <linux/mm.h>
-#include <linux/tty.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 #include <linux/delay.h>
@@ -219,8 +218,7 @@ static int arcfb_pan_display(struct fb_var_screeninfo *var,
        return -EINVAL;
 }
 
-static irqreturn_t arcfb_interrupt(int vec, void *dev_instance,
-               struct pt_regs *regs)
+static irqreturn_t arcfb_interrupt(int vec, void *dev_instance)
 {
        struct fb_info *info = dev_instance;
        unsigned char ctl2status;
@@ -253,7 +251,7 @@ static void arcfb_lcd_update_page(struct arcfb_par *par, unsigned int upper,
 {
        unsigned char *src;
        unsigned int xindex, yindex, chipindex, linesize;
-       int i, count;
+       int i;
        unsigned char val;
        unsigned char bitmask, rightshift;
 
@@ -282,7 +280,6 @@ static void arcfb_lcd_update_page(struct arcfb_par *par, unsigned int upper,
                }
                ks108_writeb_data(par, chipindex, val);
                left++;
-               count++;
                if (bitmask == 0x80) {
                        bitmask = 1;
                        src++;
@@ -366,7 +363,8 @@ static void arcfb_lcd_update(struct arcfb_par *par, unsigned int dx,
        }
 }
 
-void arcfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
+static void arcfb_fillrect(struct fb_info *info,
+                          const struct fb_fillrect *rect)
 {
        struct arcfb_par *par = info->par;
 
@@ -376,7 +374,8 @@ void arcfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
        arcfb_lcd_update(par, rect->dx, rect->dy, rect->width, rect->height);
 }
 
-void arcfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
+static void arcfb_copyarea(struct fb_info *info,
+                          const struct fb_copyarea *area)
 {
        struct arcfb_par *par = info->par;
 
@@ -386,7 +385,7 @@ void arcfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
        arcfb_lcd_update(par, area->dx, area->dy, area->width, area->height);
 }
 
-void arcfb_imageblit(struct fb_info *info, const struct fb_image *image)
+static void arcfb_imageblit(struct fb_info *info, const struct fb_image *image)
 {
        struct arcfb_par *par = info->par;
 
@@ -397,9 +396,8 @@ void arcfb_imageblit(struct fb_info *info, const struct fb_image *image)
                                image->height);
 }
 
-static int arcfb_ioctl(struct inode *inode, struct file *file,
-                         unsigned int cmd, unsigned long arg,
-                         struct fb_info *info)
+static int arcfb_ioctl(struct fb_info *info,
+                         unsigned int cmd, unsigned long arg)
 {
        void __user *argp = (void __user *)arg;
        struct arcfb_par *par = info->par;
@@ -441,7 +439,7 @@ static int arcfb_ioctl(struct inode *inode, struct file *file,
  * the fb. it's inefficient for them to do anything less than 64*8
  * writes since we update the lcd in each write() anyway.
  */
-static ssize_t arcfb_write(struct file *file, const char *buf, size_t count,
+static ssize_t arcfb_write(struct file *file, const char __user *buf, size_t count,
                                loff_t *ppos)
 {
        /* modded from epson 1355 */
@@ -456,14 +454,14 @@ static ssize_t arcfb_write(struct file *file, const char *buf, size_t count,
        unsigned int xres;
 
        p = *ppos;
-       inode = file->f_dentry->d_inode;
+       inode = file->f_path.dentry->d_inode;
        fbidx = iminor(inode);
        info = registered_fb[fbidx];
-       par = info->par;
 
        if (!info || !info->screen_base)
                return -ENODEV;
 
+       par = info->par;
        xres = info->var.xres;
        fbmemlength = (xres * info->var.yres)/8;
 
@@ -561,7 +559,7 @@ static int __init arcfb_probe(struct platform_device *dev)
        platform_set_drvdata(dev, info);
        if (irq) {
                par->irq = irq;
-               if (request_irq(par->irq, &arcfb_interrupt, SA_SHIRQ,
+               if (request_irq(par->irq, &arcfb_interrupt, IRQF_SHARED,
                                "arcfb", info)) {
                        printk(KERN_INFO
                                "arcfb: Failed req IRQ %d\n", par->irq);