vserver 1.9.5.x5
[linux-2.6.git] / drivers / media / video / saa5246a.c
index c2fb64d..86a57b7 100644 (file)
@@ -681,6 +681,54 @@ static int do_saa5246a_ioctl(struct inode *inode, struct file *file,
        return -EINVAL;
 }
 
+/*
+ * Translates old vtx IOCTLs to new ones
+ *
+ * This keeps new kernel versions compatible with old userspace programs.
+ */
+static inline unsigned int vtx_fix_command(unsigned int cmd)
+{
+       switch (cmd) {
+       case VTXIOCGETINFO_OLD:
+               cmd = VTXIOCGETINFO;
+               break;
+       case VTXIOCCLRPAGE_OLD:
+               cmd = VTXIOCCLRPAGE;
+               break;
+       case VTXIOCCLRFOUND_OLD:
+               cmd = VTXIOCCLRFOUND;
+               break;
+       case VTXIOCPAGEREQ_OLD:
+               cmd = VTXIOCPAGEREQ;
+               break;
+       case VTXIOCGETSTAT_OLD:
+               cmd = VTXIOCGETSTAT;
+               break;
+       case VTXIOCGETPAGE_OLD:
+               cmd = VTXIOCGETPAGE;
+               break;
+       case VTXIOCSTOPDAU_OLD:
+               cmd = VTXIOCSTOPDAU;
+               break;
+       case VTXIOCPUTPAGE_OLD:
+               cmd = VTXIOCPUTPAGE;
+               break;
+       case VTXIOCSETDISP_OLD:
+               cmd = VTXIOCSETDISP;
+               break;
+       case VTXIOCPUTSTAT_OLD:
+               cmd = VTXIOCPUTSTAT;
+               break;
+       case VTXIOCCLRCACHE_OLD:
+               cmd = VTXIOCCLRCACHE;
+               break;
+       case VTXIOCSETVIRT_OLD:
+               cmd = VTXIOCSETVIRT;
+               break;
+       }
+       return cmd;
+}
+
 /*
  *     Handle the locking
  */
@@ -691,6 +739,7 @@ static int saa5246a_ioctl(struct inode *inode, struct file *file,
        struct saa5246a_device *t = vd->priv;
        int err;
 
+       cmd = vtx_fix_command(cmd);
        down(&t->lock);
        err = video_usercopy(inode, file, cmd, arg, do_saa5246a_ioctl);
        up(&t->lock);