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