fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / linux / videodev.h
index cfcf6f1..8dba97a 100644 (file)
+/*
+ *     Video for Linux version 1 - OBSOLETE
+ *
+ *     Header file for v4l1 drivers and applications, for
+ *     Linux kernels 2.2.x or 2.4.x.
+ *
+ *     Provides header for legacy drivers and applications
+ *
+ *     See http://linuxtv.org for more info
+ *
+ */
 #ifndef __LINUX_VIDEODEV_H
 #define __LINUX_VIDEODEV_H
 
-#include <linux/types.h>
-#include <linux/version.h>
-
-#define HAVE_V4L2 1
 #include <linux/videodev2.h>
 
-#ifdef __KERNEL__
-
-#include <linux/poll.h>
-#include <linux/mm.h>
-#include <linux/device.h>
-
-struct video_device
-{
-       /* device info */
-       struct device *dev;
-       char name[32];
-       int type;       /* v4l1 */
-       int type2;      /* v4l2 */
-       int hardware;
-       int minor;
-
-       /* device ops + callbacks */
-       struct file_operations *fops;
-       void (*release)(struct video_device *vfd);
-
-
-#if 1 /* to be removed in 2.7.x */
-       /* obsolete -- fops->owner is used instead */
-       struct module *owner;
-       /* dev->driver_data will be used instead some day.
-        * Use the video_{get|set}_drvdata() helper functions,
-        * so the switch over will be transparent for you.
-        * Or use {pci|usb}_{get|set}_drvdata() directly. */
-       void *priv;
-#endif
-
-       /* for videodev.c intenal usage -- please don't touch */
-       int users;                     /* video_exclusive_{open|close} ... */
-       struct semaphore lock;         /* ... helper function uses these   */
-       char devfs_name[64];           /* devfs */
-       struct class_device class_dev; /* sysfs */
-};
-
-#define VIDEO_MAJOR    81
-
-#define VFL_TYPE_GRABBER       0
-#define VFL_TYPE_VBI           1
-#define VFL_TYPE_RADIO         2
-#define VFL_TYPE_VTX           3
-
-extern int video_register_device(struct video_device *, int type, int nr);
-extern void video_unregister_device(struct video_device *);
-extern struct video_device* video_devdata(struct file*);
-
-#define to_video_device(cd) container_of(cd, struct video_device, class_dev)
-static inline void
-video_device_create_file(struct video_device *vfd,
-                        struct class_device_attribute *attr)
-{
-       class_device_create_file(&vfd->class_dev, attr);
-}
-static inline void
-video_device_remove_file(struct video_device *vfd,
-                        struct class_device_attribute *attr)
-{
-       class_device_remove_file(&vfd->class_dev, attr);
-}
-
-/* helper functions to alloc / release struct video_device, the
-   later can be used for video_device->release() */
-struct video_device *video_device_alloc(void);
-void video_device_release(struct video_device *vfd);
-
-/* helper functions to access driver private data. */
-static inline void *video_get_drvdata(struct video_device *dev)
-{
-       return dev->priv;
-}
-
-static inline void video_set_drvdata(struct video_device *dev, void *data)
-{
-       dev->priv = data;
-}
-
-extern int video_exclusive_open(struct inode *inode, struct file *file);
-extern int video_exclusive_release(struct inode *inode, struct file *file);
-extern int video_usercopy(struct inode *inode, struct file *file,
-                         unsigned int cmd, unsigned long arg,
-                         int (*func)(struct inode *inode, struct file *file,
-                                     unsigned int cmd, void *arg));
-#endif /* __KERNEL__ */
-
-#define VID_TYPE_CAPTURE       1       /* Can capture */
-#define VID_TYPE_TUNER         2       /* Can tune */
-#define VID_TYPE_TELETEXT      4       /* Does teletext */
-#define VID_TYPE_OVERLAY       8       /* Overlay onto frame buffer */
-#define VID_TYPE_CHROMAKEY     16      /* Overlay by chromakey */
-#define VID_TYPE_CLIPPING      32      /* Can clip */
-#define VID_TYPE_FRAMERAM      64      /* Uses the frame buffer memory */
-#define VID_TYPE_SCALES                128     /* Scalable */
-#define VID_TYPE_MONOCHROME    256     /* Monochrome only */
-#define VID_TYPE_SUBCAPTURE    512     /* Can capture subareas of the image */
-#define VID_TYPE_MPEG_DECODER  1024    /* Can decode MPEG streams */
-#define VID_TYPE_MPEG_ENCODER  2048    /* Can encode MPEG streams */
-#define VID_TYPE_MJPEG_DECODER 4096    /* Can decode MJPEG streams */
-#define VID_TYPE_MJPEG_ENCODER 8192    /* Can encode MJPEG streams */
+#if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__)
 
 struct video_capability
 {
@@ -132,7 +39,7 @@ struct video_channel
 #define VIDEO_VC_AUDIO         2       /* Channel has audio */
        __u16  type;
 #define VIDEO_TYPE_TV          1
-#define VIDEO_TYPE_CAMERA      2       
+#define VIDEO_TYPE_CAMERA      2
        __u16 norm;                     /* Norm set by channel */
 };
 
@@ -171,7 +78,7 @@ struct video_picture
 #define VIDEO_PALETTE_HI240    2       /* High 240 cube (BT848) */
 #define VIDEO_PALETTE_RGB565   3       /* 565 16 bit RGB */
 #define VIDEO_PALETTE_RGB24    4       /* 24bit RGB */
-#define VIDEO_PALETTE_RGB32    5       /* 32bit RGB */ 
+#define VIDEO_PALETTE_RGB32    5       /* 32bit RGB */
 #define VIDEO_PALETTE_RGB555   6       /* 555 15bit RGB */
 #define VIDEO_PALETTE_YUV422   7       /* YUV422 capture */
 #define VIDEO_PALETTE_YUYV     8
@@ -197,16 +104,16 @@ struct video_audio
 #define VIDEO_AUDIO_MUTABLE    2
 #define VIDEO_AUDIO_VOLUME     4
 #define VIDEO_AUDIO_BASS       8
-#define VIDEO_AUDIO_TREBLE     16      
+#define VIDEO_AUDIO_TREBLE     16
 #define VIDEO_AUDIO_BALANCE    32
        char    name[16];
 #define VIDEO_SOUND_MONO       1
 #define VIDEO_SOUND_STEREO     2
 #define VIDEO_SOUND_LANG1      4
 #define VIDEO_SOUND_LANG2      8
-        __u16   mode;
-        __u16  balance;        /* Stereo balance */
-        __u16  step;           /* Step actual volume uses */
+       __u16   mode;
+       __u16   balance;        /* Stereo balance */
+       __u16   step;           /* Step actual volume uses */
 };
 
 struct video_clip
@@ -222,7 +129,7 @@ struct video_window
        __u32   width,height;           /* Its size */
        __u32   chromakey;
        __u32   flags;
-       struct  video_clip *clips;      /* Set only */
+       struct  video_clip __user *clips;       /* Set only */
        int     clipcount;
 #define VIDEO_WINDOW_INTERLACE 1
 #define VIDEO_WINDOW_CHROMAKEY 16      /* Overlay by chromakey */
@@ -262,20 +169,15 @@ struct video_key
        __u32   flags;
 };
 
-
-#define VIDEO_MAX_FRAME                32
-
 struct video_mbuf
 {
        int     size;           /* Total memory to map */
        int     frames;         /* Frames */
        int     offsets[VIDEO_MAX_FRAME];
 };
-       
 
 #define        VIDEO_NO_UNIT   (-1)
 
-       
 struct video_unit
 {
        int     video;          /* Video minor */
@@ -372,7 +274,7 @@ struct video_code
        /* p1: = VIDEO_MODE_PAL, VIDEO_MODE_NTSC, etc ... */
 #define VID_PLAY_GENLOCK               1
        /* p1: 0 = OFF, 1 = ON */
-       /* p2: GENLOCK FINE DELAY value */ 
+       /* p2: GENLOCK FINE DELAY value */
 #define VID_PLAY_NORMAL                        2
 #define VID_PLAY_PAUSE                 3
 #define VID_PLAY_SINGLE_FRAME          4
@@ -420,7 +322,7 @@ struct video_code
 #define VID_HARDWARE_CPIA      24
 #define VID_HARDWARE_ZR36120   25      /* Zoran ZR36120/ZR36125 */
 #define VID_HARDWARE_ZR36067   26      /* Zoran ZR36067/36060 */
-#define VID_HARDWARE_OV511     27      
+#define VID_HARDWARE_OV511     27
 #define VID_HARDWARE_ZR356700  28      /* Zoran 36700 series */
 #define VID_HARDWARE_W9966     29
 #define VID_HARDWARE_SE401     30      /* SE401 USB webcams */
@@ -429,8 +331,13 @@ struct video_code
 #define VID_HARDWARE_CPIA2     33
 #define VID_HARDWARE_VICAM      34
 #define VID_HARDWARE_SF16FMR2  35
-#define VID_HARDWARE_W9968CF    36
+#define VID_HARDWARE_W9968CF   36
 #define VID_HARDWARE_SAA7114H   37
+#define VID_HARDWARE_SN9C102   38
+#define VID_HARDWARE_ARV       39
+
+#endif /* CONFIG_VIDEO_V4L1_COMPAT */
+
 #endif /* __LINUX_VIDEODEV_H */
 
 /*