diff options
Diffstat (limited to 'drivers/usb/gadget/uvc_queue.h')
| -rw-r--r-- | drivers/usb/gadget/uvc_queue.h | 32 | 
1 files changed, 13 insertions, 19 deletions
diff --git a/drivers/usb/gadget/uvc_queue.h b/drivers/usb/gadget/uvc_queue.h index 1812a8ecc5d..8e76ce982f1 100644 --- a/drivers/usb/gadget/uvc_queue.h +++ b/drivers/usb/gadget/uvc_queue.h @@ -6,6 +6,7 @@  #include <linux/kernel.h>  #include <linux/poll.h>  #include <linux/videodev2.h> +#include <media/videobuf2-core.h>  /* Maximum frame size in bytes, for sanity checking. */  #define UVC_MAX_FRAME_SIZE	(16*1024*1024) @@ -25,42 +26,35 @@ enum uvc_buffer_state {  };  struct uvc_buffer { -	unsigned long vma_use_count; -	struct list_head stream; - -	/* Touched by interrupt handler. */ -	struct v4l2_buffer buf; +	struct vb2_buffer buf;  	struct list_head queue; -	wait_queue_head_t wait; +  	enum uvc_buffer_state state; +	void *mem; +	unsigned int length; +	unsigned int bytesused;  }; -#define UVC_QUEUE_STREAMING		(1 << 0) -#define UVC_QUEUE_DISCONNECTED		(1 << 1) -#define UVC_QUEUE_DROP_INCOMPLETE	(1 << 2) -#define UVC_QUEUE_PAUSED		(1 << 3) +#define UVC_QUEUE_DISCONNECTED		(1 << 0) +#define UVC_QUEUE_DROP_INCOMPLETE	(1 << 1) +#define UVC_QUEUE_PAUSED		(1 << 2)  struct uvc_video_queue { -	enum v4l2_buf_type type; +	struct vb2_queue queue; +	struct mutex mutex;	/* Protects queue */ -	void *mem;  	unsigned int flags;  	__u32 sequence; -	unsigned int count; -	unsigned int buf_size;  	unsigned int buf_used; -	struct uvc_buffer buffer[UVC_MAX_VIDEO_BUFFERS]; -	struct mutex mutex;	/* protects buffers and mainqueue */ -	spinlock_t irqlock;	/* protects irqqueue */ -	struct list_head mainqueue; +	spinlock_t irqlock;	/* Protects flags and irqqueue */  	struct list_head irqqueue;  };  static inline int uvc_queue_streaming(struct uvc_video_queue *queue)  { -	return queue->flags & UVC_QUEUE_STREAMING; +	return vb2_is_streaming(&queue->queue);  }  #endif /* __KERNEL__ */  |