at v3.17-rc2 63 lines 1.3 kB view raw
1#ifndef _UVC_QUEUE_H_ 2#define _UVC_QUEUE_H_ 3 4#ifdef __KERNEL__ 5 6#include <linux/kernel.h> 7#include <linux/poll.h> 8#include <linux/videodev2.h> 9#include <media/videobuf2-core.h> 10 11/* Maximum frame size in bytes, for sanity checking. */ 12#define UVC_MAX_FRAME_SIZE (16*1024*1024) 13/* Maximum number of video buffers. */ 14#define UVC_MAX_VIDEO_BUFFERS 32 15 16/* ------------------------------------------------------------------------ 17 * Structures. 18 */ 19 20enum uvc_buffer_state { 21 UVC_BUF_STATE_IDLE = 0, 22 UVC_BUF_STATE_QUEUED = 1, 23 UVC_BUF_STATE_ACTIVE = 2, 24 UVC_BUF_STATE_DONE = 3, 25 UVC_BUF_STATE_ERROR = 4, 26}; 27 28struct uvc_buffer { 29 struct vb2_buffer buf; 30 struct list_head queue; 31 32 enum uvc_buffer_state state; 33 void *mem; 34 unsigned int length; 35 unsigned int bytesused; 36}; 37 38#define UVC_QUEUE_DISCONNECTED (1 << 0) 39#define UVC_QUEUE_DROP_INCOMPLETE (1 << 1) 40#define UVC_QUEUE_PAUSED (1 << 2) 41 42struct uvc_video_queue { 43 struct vb2_queue queue; 44 struct mutex mutex; /* Protects queue */ 45 46 unsigned int flags; 47 __u32 sequence; 48 49 unsigned int buf_used; 50 51 spinlock_t irqlock; /* Protects flags and irqqueue */ 52 struct list_head irqqueue; 53}; 54 55static inline int uvc_queue_streaming(struct uvc_video_queue *queue) 56{ 57 return vb2_is_streaming(&queue->queue); 58} 59 60#endif /* __KERNEL__ */ 61 62#endif /* _UVC_QUEUE_H_ */ 63