You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

205 lines
4.4 KiB

/* SPDX-License-Identifier: (GPL-2.0+ WITH Linux-syscall-note) OR MIT
*
* Rockchip AIISP
* Copyright (C) 2025 Rockchip Electronics Co., Ltd.
*/
#ifndef _UAPI_RK_AIISP_CONFIG_H
#define _UAPI_RK_AIISP_CONFIG_H
#include "common/rkisp2-config.h"
#define RKAIISP_PYRAMID_LAYER_NUM 4
#define RKAIISP_AIYNR_LAYER_NUM 5
#define RKAIISP_MAX_RUNCNT 8
#define RKAIISP_MAX_ISPBUF 8
#define RKAIISP_MODEL_UPDATE 0x01
#define RKAIISP_OTHER_UPDATE 0x02
#define RKAIISP_CMD_SET_PARAM_INFO \
_IOW('V', BASE_VIDIOC_PRIVATE + 0, struct rkaiisp_param_info)
#define RKAIISP_CMD_INIT_BUFPOOL \
_IOW('V', BASE_VIDIOC_PRIVATE + 1, struct rkaiisp_ispbuf_info)
#define RKAIISP_CMD_FREE_BUFPOOL \
_IO('V', BASE_VIDIOC_PRIVATE + 2)
#define RKAIISP_CMD_QUEUE_BUF \
_IOW('V', BASE_VIDIOC_PRIVATE + 3, union rkaiisp_queue_buf)
#define RKAIISP_CMD_INIT_AIRMS_BUFPOOL \
_IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct rkaiisp_rmsbuf_info)
#define RKAIISP_CMD_GET_YNRBUF_INFO \
_IOR('V', BASE_VIDIOC_PRIVATE + 5, struct rkaiisp_ynrbuf_info)
#define RKAIISP_CMD_SET_MEMORY_MODE \
_IOW('V', BASE_VIDIOC_PRIVATE + 6, enum rkaiisp_mem_mode)
#define RKAIISP_CMD_CLEAR_IQPARAMS \
_IO('V', BASE_VIDIOC_PRIVATE + 7)
/**********************EVENT_PRIVATE***************************/
#define RKAIISP_V4L2_EVENT_AIISP_DONE (V4L2_EVENT_PRIVATE_START + 1)
enum rkaiisp_chn_src {
ISP_IIR,
VPSL_YRAW_CHN0,
VPSL_YRAW_CHN1,
VPSL_YRAW_CHN2,
VPSL_YRAW_CHN3,
VPSL_YRAW_CHN4,
VPSL_YRAW_CHN5,
VPSL_SIG_CHN0,
VPSL_SIG_CHN1,
VPSL_SIG_CHN2,
VPSL_SIG_CHN3,
VPSL_SIG_CHN4,
ISP_AIPRE_NARMAP,
AIISP_LAST_OUT,
VICAP_BAYER_RAW,
ALLZERO_SIGMA,
ALLZERO_NARMAP,
ISP_FINAL_Y,
VICAP_BAYER_RAW_DOWN
};
enum rkaiisp_exealgo {
AIBNR,
AIRMS,
AIYNR
};
enum rkaiisp_model_mode {
SINGLE_MODE,
COMBO_MODE,
SINGLEX2_MODE,
REMOSAIC_MODE,
AIYNR_MODE,
REMOSAIC_USEL1_MODE
};
enum rkaiisp_exemode {
BOTHEVENT_TO_AIQ,
ISPEVENT_IN_KERNEL,
BOTHEVENT_IN_KERNEL
};
enum rkaiisp_mem_mode {
SINGLE_MEMODE,
COMBO_MEMODE,
};
struct rkaiisp_airms_st {
int sequence;
int inbuf_idx;
int outbuf_idx;
} __attribute__ ((packed));
struct rkaiisp_ynrbuf_info {
int width;
int height;
__u32 buf_cnt;
int dma_fd[8];
} __attribute__ ((packed));
union rkaiisp_queue_buf {
struct rkisp_aiisp_st aibnr_st;
struct rkaiisp_airms_st airms_st;
} __attribute__ ((packed));
struct rkaiisp_param_info {
enum rkaiisp_exealgo exealgo;
enum rkaiisp_exemode exemode;
__u32 para_size;
__u32 max_runcnt;
} __attribute__ ((packed));
struct rkaiisp_ispbuf_info {
struct rkisp_bnr_buf_info bnr_buf;
__u32 iir_width;
__u32 iir_height;
__u32 raw_width[6];
__u32 raw_height[6];
__u32 sig_width[5];
__u32 sig_height[5];
__u32 narmap_width;
__u32 narmap_height;
} __attribute__ ((packed));
struct rkaiisp_rmsbuf_info {
__u32 image_width;
__u32 image_height;
__u32 sigma_width;
__u32 sigma_height;
__u32 narmap_width;
__u32 narmap_height;
__u32 inbuf_num;
__u32 outbuf_num;
int inbuf_fd[6];
int outbuf_fd[6];
} __attribute__ ((packed));
struct rkaiisp_other_cfg {
__u16 sw_neg_noiselimit;
__u16 sw_pos_noiselimit;
__u16 sw_prev_blacklvl;
__u16 sw_post_blacklvl;
__u16 sw_in_comp_y[33];
__u16 sw_out_decomp_y[33];
} __attribute__ ((packed));
struct rkaiisp_model_cfg {
enum rkaiisp_chn_src mi_chn_src[7];
__u32 sw_aiisp_mode;
__u32 sw_aiisp_level_num;
__u32 sw_aiisp_l1_level_num;
__u32 sw_aiisp_op_mode;
__u32 sw_aiisp_drop_en;
__u32 sw_aiisp_lv_active[16];
__u32 sw_aiisp_lv_mode[16];
__u32 sw_mi_chn_en[7];
__u32 sw_mi_chn_mode[7];
__u32 sw_mi_chn_num[7];
__u32 sw_mi_chn_data_mode[7];
__u32 sw_mi_chn1_sel;
__u32 sw_mi_chn3_sel;
__u32 sw_out_d2s_en;
__u32 sw_out_mode;
__u32 sw_lastlvlm1_clip8bit;
} __attribute__ ((packed));
struct rkaiisp_kwt_cfg {
__u32 kwt_offet[RKAIISP_MAX_RUNCNT];
__u32 kwt_size[RKAIISP_MAX_RUNCNT];
__u32 kwt_pad_size[RKAIISP_MAX_RUNCNT];
} __attribute__ ((packed));
struct rkaiisp_params {
__u32 frame_id;
__u32 module_update;
__u32 model_runcnt;
enum rkaiisp_model_mode model_mode;
struct rkaiisp_other_cfg other_cfg;
struct rkaiisp_model_cfg model_cfg[RKAIISP_MAX_RUNCNT];
struct rkaiisp_kwt_cfg kwt_cfg;
__u8 reserved[36];
} __attribute__ ((packed));
struct rkaiisp_model_info {
__u32 checksum;
__u32 model_runcnt;
float model_qr;
enum rkaiisp_model_mode model_mode;
struct rkaiisp_model_cfg model_cfg[RKAIISP_MAX_RUNCNT];
struct rkaiisp_kwt_cfg kwt_cfg;
__u8 reserved[48];
} __attribute__ ((packed));
#endif /* _UAPI_RK_AIISP_CONFIG_H */