]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/media/video/uvc/uvcvideo.h
Merge branch 'setns'
[karo-tx-linux.git] / drivers / media / video / uvc / uvcvideo.h
index 7cf224bae2e527eb2d14a3baf53f6d31168d241c..20107fd3574da44508f69835e5fc098b3eec86a6 100644 (file)
@@ -98,8 +98,11 @@ struct uvc_xu_control {
 #ifdef __KERNEL__
 
 #include <linux/poll.h>
+#include <linux/usb.h>
 #include <linux/usb/video.h>
 #include <linux/uvcvideo.h>
+#include <media/media-device.h>
+#include <media/v4l2-device.h>
 
 /* --------------------------------------------------------------------------
  * UVC constants
@@ -301,6 +304,13 @@ struct uvc_entity {
        __u16 type;
        char name[64];
 
+       /* Media controller-related fields. */
+       struct video_device *vdev;
+       struct v4l2_subdev subdev;
+       unsigned int num_pads;
+       unsigned int num_links;
+       struct media_pad *pads;
+
        union {
                struct {
                        __u16 wObjectiveFocalLengthMin;
@@ -504,6 +514,10 @@ struct uvc_device {
        atomic_t nmappings;
 
        /* Video control interface */
+#ifdef CONFIG_MEDIA_CONTROLLER
+       struct media_device mdev;
+#endif
+       struct v4l2_device vdev;
        __u16 uvc_version;
        __u32 clock_frequency;
 
@@ -583,6 +597,8 @@ extern unsigned int uvc_timeout_param;
 /* Core driver */
 extern struct uvc_driver uvc_driver;
 
+extern struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id);
+
 /* Video buffers queue management. */
 extern void uvc_queue_init(struct uvc_video_queue *queue,
                enum v4l2_buf_type type, int drop_corrupted);
@@ -616,6 +632,10 @@ static inline int uvc_queue_streaming(struct uvc_video_queue *queue)
 /* V4L2 interface */
 extern const struct v4l2_file_operations uvc_fops;
 
+/* Media controller */
+extern int uvc_mc_register_entities(struct uvc_video_chain *chain);
+extern void uvc_mc_cleanup_entity(struct uvc_entity *entity);
+
 /* Video */
 extern int uvc_video_init(struct uvc_streaming *stream);
 extern int uvc_video_suspend(struct uvc_streaming *stream);