device.h: audit and cleanup users in main include dir
[linux-2.6.git] / include / media / v4l2-ioctl.h
index 835af43..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
-#include <linux/videodev.h>
-#else
 #include <linux/videodev2.h>
-#endif
+
+struct v4l2_fh;
 
 struct v4l2_ioctl_ops {
        /* ioctl callbacks */
@@ -39,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);
 
@@ -59,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);
 
@@ -79,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);
 
@@ -99,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);
 
@@ -108,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,
@@ -184,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);
@@ -225,12 +240,12 @@ struct v4l2_ioctl_ops {
        /* Debugging ioctls */
 #ifdef CONFIG_VIDEO_ADV_DEBUG
        int (*vidioc_g_register)       (struct file *file, void *fh,
-                                       struct v4l2_register *reg);
+                                       struct v4l2_dbg_register *reg);
        int (*vidioc_s_register)       (struct file *file, void *fh,
-                                       struct v4l2_register *reg);
+                                       struct v4l2_dbg_register *reg);
 #endif
        int (*vidioc_g_chip_ident)     (struct file *file, void *fh,
-                                       struct v4l2_chip_ident *chip);
+                                       struct v4l2_dbg_chip_ident *chip);
 
        int (*vidioc_enum_framesizes)   (struct file *file, void *fh,
                                         struct v4l2_frmsizeenum *fsize);
@@ -238,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 */
-       int (*vidioc_default)          (struct file *file, void *fh,
-                                       int cmd, void *arg);
+       long (*vidioc_default)         (struct file *file, void *fh,
+                                       bool valid_prio, int cmd, void *arg);
 };
 
 
@@ -267,6 +302,7 @@ struct v4l2_ioctl_ops {
 
 /*  Video standard functions  */
 extern const char *v4l2_norm_to_name(v4l2_std_id id);
+extern void v4l2_video_std_frame_period(int id, struct v4l2_fract *frameperiod);
 extern int v4l2_video_std_construct(struct v4l2_standard *vs,
                                    int id, const char *name);
 /* Prints the ioctl in a human-readable format */
@@ -276,28 +312,21 @@ 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 int (*v4l2_kioctl)(struct file *file,
-                          unsigned int cmd, void *arg);
-#ifdef CONFIG_VIDEO_V4L1_COMPAT
-int 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 v4l_compat_ioctl32(struct file *file, unsigned int cmd,
+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 int video_usercopy(struct file *file, unsigned int cmd,
+extern long video_usercopy(struct file *file, unsigned int cmd,
                                unsigned long arg, v4l2_kioctl func);
 
 /* Standard handlers for V4L ioctl's */
-extern int video_ioctl2(struct file *file,
+extern long video_ioctl2(struct file *file,
                        unsigned int cmd, unsigned long arg);
 
 #endif /* _V4L2_IOCTL_H */