1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (c) 2011-2018 Magewell Electronics Co., Ltd. (Nanjing)
4  * All rights reserved.
5  * Author: Yong Deng <yong.deng@magewell.com>
6  */
7 
8 #ifndef __SUN6I_VIDEO_H__
9 #define __SUN6I_VIDEO_H__
10 
11 #include <media/v4l2-dev.h>
12 #include <media/videobuf2-core.h>
13 
14 struct sun6i_csi;
15 
16 struct sun6i_video {
17 	struct video_device		vdev;
18 	struct media_pad		pad;
19 	struct sun6i_csi		*csi;
20 
21 	struct mutex			lock;
22 
23 	struct vb2_queue		vb2_vidq;
24 	spinlock_t			dma_queue_lock;
25 	struct list_head		dma_queue;
26 
27 	unsigned int			sequence;
28 	struct v4l2_format		fmt;
29 	u32				mbus_code;
30 };
31 
32 int sun6i_video_init(struct sun6i_video *video, struct sun6i_csi *csi,
33 		     const char *name);
34 void sun6i_video_cleanup(struct sun6i_video *video);
35 
36 void sun6i_video_frame_done(struct sun6i_video *video);
37 
38 #endif /* __SUN6I_VIDEO_H__ */
39