xref: /OK3568_Linux_fs/kernel/drivers/media/platform/rockchip/isp/dmarx.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd. */
3 
4 #ifndef _RKISP_DMARX_H
5 #define _RKISP_DMARX_H
6 
7 #include "capture.h"
8 #include "common.h"
9 #include "isp_external.h"
10 
11 #define DMA_VDEV_NAME DRIVER_NAME	"_dmapath"
12 #define DMARX0_VDEV_NAME DRIVER_NAME	"_rawrd0_m"
13 #define DMARX1_VDEV_NAME DRIVER_NAME	"_rawrd1_l"
14 #define DMARX2_VDEV_NAME DRIVER_NAME	"_rawrd2_s"
15 
16 struct rkisp_dmarx_device;
17 
18 enum {
19 	RKISP_STREAM_DMARX,
20 	RKISP_STREAM_RAWRD0,
21 	RKISP_STREAM_RAWRD1,
22 	RKISP_STREAM_RAWRD2,
23 	RKISP_MAX_DMARX_STREAM,
24 };
25 
26 enum rkisp_dmarx_pad {
27 	RKISP_DMARX_PAD_SINK,
28 	RKISP_DMARX_PAD_SOURCE,
29 	RKISP_DMARX_PAD_MAX
30 };
31 
32 enum rkisp_dmarx_trigger {
33 	T_AUTO = 0,
34 	T_MANUAL,
35 };
36 
37 struct rkisp_dmarx_frame {
38 	u64 sof_timestamp;
39 	u64 timestamp;
40 	u32 id;
41 };
42 
43 struct rkisp_rx_buf_pool {
44 	struct rkisp_buffer buf;
45 	struct rkisp_rx_buf *dbufs;
46 	void *mem_priv;
47 };
48 
49 /*
50  * struct rkisp_dmarx_device
51  * trigger: read back mode
52  * cur_frame: current frame id and timestamp in ns
53  * pre_frame: previous frame id and timestamp in ns
54  */
55 struct rkisp_dmarx_device {
56 	struct rkisp_device *ispdev;
57 	struct rkisp_stream stream[RKISP_MAX_DMARX_STREAM];
58 	enum rkisp_dmarx_trigger trigger;
59 	struct rkisp_dmarx_frame cur_frame;
60 	struct rkisp_dmarx_frame pre_frame;
61 };
62 
63 void rkisp_dmarx_isr(u32 mis_val, struct rkisp_device *dev);
64 void rkisp2_rawrd_isr(u32 mis_val, struct rkisp_device *dev);
65 void rkisp_dmarx_set_fmt(struct rkisp_stream *stream,
66 			 struct v4l2_pix_format_mplane pixm);
67 void rkisp_rawrd_set_pic_size(struct rkisp_device *dev,
68 			      u32 width, u32 height);
69 void rkisp_dmarx_get_frame(struct rkisp_device *dev, u32 *id,
70 			   u64 *sof_timestamp, u64 *timestamp,
71 			   bool sync);
72 void rkisp_unregister_dmarx_vdev(struct rkisp_device *dev);
73 int rkisp_register_dmarx_vdev(struct rkisp_device *dev);
74 #endif /* _RKISP_DMARX_H */
75