76 lines
1.9 KiB
C
76 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd. */
|
|
|
|
#ifndef _RKISP_DMARX_H
|
|
#define _RKISP_DMARX_H
|
|
|
|
#include "capture.h"
|
|
#include "common.h"
|
|
#include "isp_external.h"
|
|
|
|
#define DMA_VDEV_NAME DRIVER_NAME "_dmapath"
|
|
#define DMARX0_VDEV_NAME DRIVER_NAME "_rawrd0_m"
|
|
#define DMARX1_VDEV_NAME DRIVER_NAME "_rawrd1_l"
|
|
#define DMARX2_VDEV_NAME DRIVER_NAME "_rawrd2_s"
|
|
|
|
struct rkisp_dmarx_device;
|
|
|
|
enum {
|
|
RKISP_STREAM_DMARX,
|
|
RKISP_STREAM_RAWRD0,
|
|
RKISP_STREAM_RAWRD1,
|
|
RKISP_STREAM_RAWRD2,
|
|
RKISP_MAX_DMARX_STREAM,
|
|
};
|
|
|
|
enum rkisp_dmarx_pad {
|
|
RKISP_DMARX_PAD_SINK,
|
|
RKISP_DMARX_PAD_SOURCE,
|
|
RKISP_DMARX_PAD_MAX
|
|
};
|
|
|
|
enum rkisp_dmarx_trigger {
|
|
T_AUTO = 0,
|
|
T_MANUAL,
|
|
};
|
|
|
|
struct rkisp_dmarx_frame {
|
|
u64 sof_timestamp;
|
|
u64 timestamp;
|
|
u32 id;
|
|
};
|
|
|
|
struct rkisp_rx_buf_pool {
|
|
struct rkisp_buffer buf;
|
|
struct rkisp_rx_buf *dbufs;
|
|
struct dma_buf_attachment *dba;
|
|
struct sg_table *sgt;
|
|
};
|
|
|
|
/*
|
|
* struct rkisp_dmarx_device
|
|
* trigger: read back mode
|
|
* cur_frame: current frame id and timestamp in ns
|
|
* pre_frame: previous frame id and timestamp in ns
|
|
*/
|
|
struct rkisp_dmarx_device {
|
|
struct rkisp_device *ispdev;
|
|
struct rkisp_stream stream[RKISP_MAX_DMARX_STREAM];
|
|
enum rkisp_dmarx_trigger trigger;
|
|
struct rkisp_dmarx_frame cur_frame;
|
|
struct rkisp_dmarx_frame pre_frame;
|
|
};
|
|
|
|
void rkisp_dmarx_isr(u32 mis_val, struct rkisp_device *dev);
|
|
void rkisp2_rawrd_isr(u32 mis_val, struct rkisp_device *dev);
|
|
void rkisp_dmarx_set_fmt(struct rkisp_stream *stream,
|
|
struct v4l2_pix_format_mplane pixm);
|
|
void rkisp_rawrd_set_pic_size(struct rkisp_device *dev,
|
|
u32 width, u32 height);
|
|
void rkisp_dmarx_get_frame(struct rkisp_device *dev, u32 *id,
|
|
u64 *sof_timestamp, u64 *timestamp,
|
|
bool sync);
|
|
void rkisp_unregister_dmarx_vdev(struct rkisp_device *dev);
|
|
int rkisp_register_dmarx_vdev(struct rkisp_device *dev);
|
|
#endif /* _RKISP_DMARX_H */
|