• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
10 #define DMA_VDEV_NAME DRIVER_NAME	"_dmapath"
11 #define DMARX0_VDEV_NAME DRIVER_NAME	"_rawrd0_m"
12 #define DMARX1_VDEV_NAME DRIVER_NAME	"_rawrd1_l"
13 #define DMARX2_VDEV_NAME DRIVER_NAME	"_rawrd2_s"
14 
15 struct rkisp_dmarx_device;
16 
17 enum {
18 	RKISP_STREAM_DMARX,
19 	RKISP_STREAM_RAWRD0,
20 	RKISP_STREAM_RAWRD1,
21 	RKISP_STREAM_RAWRD2,
22 	RKISP_MAX_DMARX_STREAM,
23 };
24 
25 enum rkisp_dmarx_pad {
26 	RKISP_DMARX_PAD_SINK,
27 	RKISP_DMARX_PAD_SOURCE,
28 	RKISP_DMARX_PAD_MAX
29 };
30 
31 enum rkisp_dmarx_trigger {
32 	T_AUTO = 0,
33 	T_MANUAL,
34 };
35 
36 struct rkisp_dmarx_frame {
37 	u64 sof_timestamp;
38 	u64 timestamp;
39 	u32 id;
40 };
41 
42 /*
43  * struct rkisp_dmarx_device
44  * trigger: read back mode
45  * cur_frame: current frame id and timestamp in ns
46  * pre_frame: previous frame id and timestamp in ns
47  */
48 struct rkisp_dmarx_device {
49 	struct rkisp_device *ispdev;
50 	struct rkisp_stream stream[RKISP_MAX_DMARX_STREAM];
51 	enum rkisp_dmarx_trigger trigger;
52 	struct rkisp_dmarx_frame cur_frame;
53 	struct rkisp_dmarx_frame pre_frame;
54 };
55 
56 void rkisp_dmarx_isr(u32 mis_val, struct rkisp_device *dev);
57 void rkisp2_rawrd_isr(u32 mis_val, struct rkisp_device *dev);
58 void rkisp_dmarx_set_fmt(struct rkisp_stream *stream,
59 			 struct v4l2_pix_format_mplane pixm);
60 void rkisp_rawrd_set_pic_size(struct rkisp_device *dev,
61 			      u32 width, u32 height);
62 void rkisp_dmarx_get_frame(struct rkisp_device *dev, u32 *id,
63 			   u64 *sof_timestamp, u64 *timestamp,
64 			   bool sync);
65 void rkisp_unregister_dmarx_vdev(struct rkisp_device *dev);
66 int rkisp_register_dmarx_vdev(struct rkisp_device *dev);
67 #endif /* _RKISP_DMARX_H */
68