device.h: audit and cleanup users in main include dir
[linux-2.6.git] / include / media / v4l2-ioctl.h
index 7a4529d..032ff21 100644 (file)
 
 #include <linux/poll.h>
 #include <linux/fs.h>
-#include <linux/device.h>
 #include <linux/mutex.h>
 #include <linux/compiler.h> /* need __user */
-#ifdef CONFIG_VIDEO_V4L1_COMPAT
-#define __MIN_V4L1
-#include <linux/videodev.h>
-#else
 #include <linux/videodev2.h>
-#endif
+
+struct v4l2_fh;
 
 struct v4l2_ioctl_ops {
        /* ioctl callbacks */
@@ -40,6 +36,10 @@ struct v4l2_ioctl_ops {
                                            struct v4l2_fmtdesc *f);
        int (*vidioc_enum_fmt_vid_out)     (struct file *file, void *fh,
                                            struct v4l2_fmtdesc *f);
+       int (*vidioc_enum_fmt_vid_cap_mplane)(struct file *file, void *fh,
+                                             struct v4l2_fmtdesc *f);
+       int (*vidioc_enum_fmt_vid_out_mplane)(struct file *file, void *fh,
+                                             struct v4l2_fmtdesc *f);
        int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh,
                                            struct v4l2_fmtdesc *f);
 
@@ -60,6 +60,10 @@ struct v4l2_ioctl_ops {
                                        struct v4l2_format *f);
        int (*vidioc_g_fmt_sliced_vbi_out)(struct file *file, void *fh,
                                        struct v4l2_format *f);
+       int (*vidioc_g_fmt_vid_cap_mplane)(struct file *file, void *fh,
+                                          struct v4l2_format *f);
+       int (*vidioc_g_fmt_vid_out_mplane)(struct file *file, void *fh,
+                                          struct v4l2_format *f);
        int (*vidioc_g_fmt_type_private)(struct file *file, void *fh,
                                        struct v4l2_format *f);
 
@@ -80,6 +84,10 @@ struct v4l2_ioctl_ops {
                                        struct v4l2_format *f);
        int (*vidioc_s_fmt_sliced_vbi_out)(struct file *file, void *fh,
                                        struct v4l2_format *f);
+       int (*vidioc_s_fmt_vid_cap_mplane)(struct file *file, void *fh,
+                                          struct v4l2_format *f);
+       int (*vidioc_s_fmt_vid_out_mplane)(struct file *file, void *fh,
+                                          struct v4l2_format *f);
        int (*vidioc_s_fmt_type_private)(struct file *file, void *fh,
                                        struct v4l2_format *f);
 
@@ -100,6 +108,10 @@ struct v4l2_ioctl_ops {
                                          struct v4l2_format *f);
        int (*vidioc_try_fmt_sliced_vbi_out)(struct file *file, void *fh,
                                          struct v4l2_format *f);
+       int (*vidioc_try_fmt_vid_cap_mplane)(struct file *file, void *fh,
+                                            struct v4l2_format *f);
+       int (*vidioc_try_fmt_vid_out_mplane)(struct file *file, void *fh,
+                                            struct v4l2_format *f);
        int (*vidioc_try_fmt_type_private)(struct file *file, void *fh,
                                          struct v4l2_format *f);
 
@@ -109,12 +121,10 @@ struct v4l2_ioctl_ops {
        int (*vidioc_qbuf)    (struct file *file, void *fh, struct v4l2_buffer *b);
        int (*vidioc_dqbuf)   (struct file *file, void *fh, struct v4l2_buffer *b);
 
+       int (*vidioc_create_bufs)(struct file *file, void *fh, struct v4l2_create_buffers *b);
+       int (*vidioc_prepare_buf)(struct file *file, void *fh, struct v4l2_buffer *b);
 
        int (*vidioc_overlay) (struct file *file, void *fh, unsigned int i);
-#ifdef CONFIG_VIDEO_V4L1_COMPAT
-                       /* buffer type is struct vidio_mbuf * */
-       int (*vidiocgmbuf)  (struct file *file, void *fh, struct video_mbuf *p);
-#endif
        int (*vidioc_g_fbuf)   (struct file *file, void *fh,
                                struct v4l2_framebuffer *a);
        int (*vidioc_s_fbuf)   (struct file *file, void *fh,
@@ -185,6 +195,10 @@ struct v4l2_ioctl_ops {
                                        struct v4l2_crop *a);
        int (*vidioc_s_crop)           (struct file *file, void *fh,
                                        struct v4l2_crop *a);
+       int (*vidioc_g_selection)      (struct file *file, void *fh,
+                                       struct v4l2_selection *s);
+       int (*vidioc_s_selection)      (struct file *file, void *fh,
+                                       struct v4l2_selection *s);
        /* Compression ioctls */
        int (*vidioc_g_jpegcomp)       (struct file *file, void *fh,
                                        struct v4l2_jpegcompression *a);
@@ -239,9 +253,29 @@ struct v4l2_ioctl_ops {
        int (*vidioc_enum_frameintervals) (struct file *file, void *fh,
                                           struct v4l2_frmivalenum *fival);
 
+       /* DV Timings IOCTLs */
+       int (*vidioc_enum_dv_presets) (struct file *file, void *fh,
+                                      struct v4l2_dv_enum_preset *preset);
+
+       int (*vidioc_s_dv_preset) (struct file *file, void *fh,
+                                  struct v4l2_dv_preset *preset);
+       int (*vidioc_g_dv_preset) (struct file *file, void *fh,
+                                  struct v4l2_dv_preset *preset);
+       int (*vidioc_query_dv_preset) (struct file *file, void *fh,
+                                       struct v4l2_dv_preset *qpreset);
+       int (*vidioc_s_dv_timings) (struct file *file, void *fh,
+                                   struct v4l2_dv_timings *timings);
+       int (*vidioc_g_dv_timings) (struct file *file, void *fh,
+                                   struct v4l2_dv_timings *timings);
+
+       int (*vidioc_subscribe_event)  (struct v4l2_fh *fh,
+                                       struct v4l2_event_subscription *sub);
+       int (*vidioc_unsubscribe_event)(struct v4l2_fh *fh,
+                                       struct v4l2_event_subscription *sub);
+
        /* For other private ioctls */
        long (*vidioc_default)         (struct file *file, void *fh,
-                                       int cmd, void *arg);
+                                       bool valid_prio, int cmd, void *arg);
 };
 
 
@@ -278,22 +312,15 @@ extern void v4l_printk_ioctl(unsigned int cmd);
 extern const char *v4l2_field_names[];
 extern const char *v4l2_type_names[];
 
-/*  Compatibility layer interface  --  v4l1-compat module */
-typedef long (*v4l2_kioctl)(struct file *file,
-                          unsigned int cmd, void *arg);
-#ifdef CONFIG_VIDEO_V4L1_COMPAT
-long v4l_compat_translate_ioctl(struct file *file,
-                              int cmd, void *arg, v4l2_kioctl driver_ioctl);
-#else
-#define v4l_compat_translate_ioctl(file, cmd, arg, ioctl) (-EINVAL)
-#endif
-
 #ifdef CONFIG_COMPAT
 /* 32 Bits compatibility layer for 64 bits processors */
 extern long v4l2_compat_ioctl32(struct file *file, unsigned int cmd,
                                unsigned long arg);
 #endif
 
+typedef long (*v4l2_kioctl)(struct file *file,
+               unsigned int cmd, void *arg);
+
 /* Include support for obsoleted stuff */
 extern long video_usercopy(struct file *file, unsigned int cmd,
                                unsigned long arg, v4l2_kioctl func);