61 lines
1.4 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd. */
#ifndef _RKISPP_DEV_H
#define _RKISPP_DEV_H
#include "ispp.h"
#include "params.h"
#include "stream.h"
#include "stats.h"
#include "hw.h"
#include "procfs.h"
#define DRIVER_NAME "rkispp"
#define II_VDEV_NAME DRIVER_NAME "_input_image"
#define MB_VDEV_NAME DRIVER_NAME "_m_bypass"
#define S0_VDEV_NAME DRIVER_NAME "_scale0"
#define S1_VDEV_NAME DRIVER_NAME "_scale1"
#define S2_VDEV_NAME DRIVER_NAME "_scale2"
#define VIR_VDEV_NAME DRIVER_NAME "_iqtool"
enum rkispp_input {
INP_INVAL = 0,
INP_ISP,
INP_DDR,
};
struct rkispp_device {
char name[128];
struct device *dev;
void *sw_base_addr;
struct media_device media_dev;
struct v4l2_device v4l2_dev;
struct v4l2_ctrl_handler ctrl_handler;
struct rkispp_hw_dev *hw_dev;
struct rkispp_subdev ispp_sdev;
struct rkispp_stream_vdev stream_vdev;
struct rkispp_params_vdev params_vdev[PARAM_VDEV_MAX];
struct rkispp_stats_vdev stats_vdev[STATS_VDEV_MAX];
struct proc_dir_entry *procfs;
struct work_struct irq_work;
enum rkispp_ver ispp_ver;
/* mutex to serialize the calls from user */
struct mutex apilock;
/* mutex to serialize the calls of iq */
struct mutex iqlock;
enum rkispp_input inp;
u32 dev_id;
u32 isp_mode;
u32 isr_cnt;
u32 isr_err_cnt;
u32 mis_val;
wait_queue_head_t sync_onoff;
bool stream_sync;
u8 stream_max;
void (*irq_hdl)(u32 mis, struct rkispp_device *dev);
};
#endif