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