Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / media / platform / sunxi / sun6i-csi / sun6i_video.h
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__ */