13d0407baSopenharmony_ci/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT)
23d0407baSopenharmony_ci *
33d0407baSopenharmony_ci * Copyright (C) 2019 Rockchip Electronics Co., Ltd.
43d0407baSopenharmony_ci */
53d0407baSopenharmony_ci
63d0407baSopenharmony_ci#ifndef _UAPI_RKISPP_CONFIG_H
73d0407baSopenharmony_ci#define _UAPI_RKISPP_CONFIG_H
83d0407baSopenharmony_ci
93d0407baSopenharmony_ci#include <linux/types.h>
103d0407baSopenharmony_ci#include <linux/v4l2-controls.h>
113d0407baSopenharmony_ci
123d0407baSopenharmony_ci#define ISPP_API_VERSION		KERNEL_VERSION(1, 8, 0)
133d0407baSopenharmony_ci
143d0407baSopenharmony_ci#define ISPP_ID_TNR			(0)
153d0407baSopenharmony_ci#define ISPP_ID_NR			(1)
163d0407baSopenharmony_ci#define ISPP_ID_SHP			(2)
173d0407baSopenharmony_ci#define ISPP_ID_FEC			(3)
183d0407baSopenharmony_ci#define ISPP_ID_ORB			(4)
193d0407baSopenharmony_ci#define ISPP_ID_MAX			(5)
203d0407baSopenharmony_ci
213d0407baSopenharmony_ci#define ISPP_MODULE_TNR			BIT(ISPP_ID_TNR)//2TO1
223d0407baSopenharmony_ci#define ISPP_MODULE_NR			BIT(ISPP_ID_NR)
233d0407baSopenharmony_ci#define ISPP_MODULE_SHP			BIT(ISPP_ID_SHP)
243d0407baSopenharmony_ci#define ISPP_MODULE_FEC			BIT(ISPP_ID_FEC)//CALIBRATION
253d0407baSopenharmony_ci#define ISPP_MODULE_ORB			BIT(ISPP_ID_ORB)
263d0407baSopenharmony_ci//extra function
273d0407baSopenharmony_ci#define ISPP_MODULE_TNR_3TO1		(BIT(16) | ISPP_MODULE_TNR)
283d0407baSopenharmony_ci#define ISPP_MODULE_FEC_ST		(BIT(17) | ISPP_MODULE_FEC)//STABILIZATION
293d0407baSopenharmony_ci
303d0407baSopenharmony_ci#define TNR_SIGMA_CURVE_SIZE		17
313d0407baSopenharmony_ci#define TNR_LUMA_CURVE_SIZE		6
323d0407baSopenharmony_ci#define TNR_GFCOEF6_SIZE		6
333d0407baSopenharmony_ci#define TNR_GFCOEF3_SIZE		3
343d0407baSopenharmony_ci#define TNR_SCALE_YG_SIZE		4
353d0407baSopenharmony_ci#define TNR_SCALE_YL_SIZE		3
363d0407baSopenharmony_ci#define TNR_SCALE_CG_SIZE		3
373d0407baSopenharmony_ci#define TNR_SCALE_Y2CG_SIZE		3
383d0407baSopenharmony_ci#define TNR_SCALE_CL_SIZE		2
393d0407baSopenharmony_ci#define TNR_SCALE_Y2CL_SIZE		3
403d0407baSopenharmony_ci#define TNR_WEIGHT_Y_SIZE		3
413d0407baSopenharmony_ci
423d0407baSopenharmony_ci#define NR_UVNR_UVGAIN_SIZE		2
433d0407baSopenharmony_ci#define NR_UVNR_T1FLT_WTQ_SIZE		8
443d0407baSopenharmony_ci#define NR_UVNR_T2GEN_WTQ_SIZE		4
453d0407baSopenharmony_ci#define NR_UVNR_T2FLT_WT_SIZE		3
463d0407baSopenharmony_ci#define NR_YNR_SGM_DX_SIZE		16
473d0407baSopenharmony_ci#define NR_YNR_SGM_Y_SIZE		17
483d0407baSopenharmony_ci#define NR_YNR_HWEIT_D_SIZE		20
493d0407baSopenharmony_ci#define NR_YNR_HGRAD_Y_SIZE		24
503d0407baSopenharmony_ci#define NR_YNR_HSTV_Y_SIZE		17
513d0407baSopenharmony_ci#define NR_YNR_CI_SIZE			4
523d0407baSopenharmony_ci#define NR_YNR_LGAIN_MIN_SIZE		4
533d0407baSopenharmony_ci#define NR_YNR_LWEIT_FLT_SIZE		4
543d0407baSopenharmony_ci#define NR_YNR_HGAIN_SGM_SIZE		4
553d0407baSopenharmony_ci#define NR_YNR_HWEIT_SIZE		4
563d0407baSopenharmony_ci#define NR_YNR_LWEIT_CMP_SIZE		2
573d0407baSopenharmony_ci#define NR_YNR_ST_SCALE_SIZE		3
583d0407baSopenharmony_ci
593d0407baSopenharmony_ci#define SHP_PBF_KERNEL_SIZE		3
603d0407baSopenharmony_ci#define SHP_MRF_KERNEL_SIZE		6
613d0407baSopenharmony_ci#define SHP_MBF_KERNEL_SIZE		12
623d0407baSopenharmony_ci#define SHP_HRF_KERNEL_SIZE		6
633d0407baSopenharmony_ci#define SHP_HBF_KERNEL_SIZE		3
643d0407baSopenharmony_ci#define SHP_EDGE_COEF_SIZE		3
653d0407baSopenharmony_ci#define SHP_EDGE_SMOTH_SIZE		3
663d0407baSopenharmony_ci#define SHP_EDGE_GAUS_SIZE		6
673d0407baSopenharmony_ci#define SHP_DOG_KERNEL_SIZE		6
683d0407baSopenharmony_ci#define SHP_LUM_POINT_SIZE		6
693d0407baSopenharmony_ci#define SHP_SIGMA_SIZE			8
703d0407baSopenharmony_ci#define SHP_LUM_CLP_SIZE		8
713d0407baSopenharmony_ci#define SHP_LUM_MIN_SIZE		8
723d0407baSopenharmony_ci#define SHP_EDGE_LUM_THED_SIZE		8
733d0407baSopenharmony_ci#define SHP_CLAMP_SIZE			8
743d0407baSopenharmony_ci#define SHP_DETAIL_ALPHA_SIZE		8
753d0407baSopenharmony_ci
763d0407baSopenharmony_ci#define ORB_DATA_NUM			10000
773d0407baSopenharmony_ci#define ORB_BRIEF_NUM			15
783d0407baSopenharmony_ci#define ORB_DUMMY_NUM			13
793d0407baSopenharmony_ci
803d0407baSopenharmony_ci#define FEC_MESH_XY_POINT_SIZE		6
813d0407baSopenharmony_ci#define FEC_MESH_XY_NUM			131072
823d0407baSopenharmony_ci#define FEC_MESH_BUF_NUM		2
833d0407baSopenharmony_ci
843d0407baSopenharmony_ci#define TNR_BUF_IDXFD_NUM		64
853d0407baSopenharmony_ci
863d0407baSopenharmony_ci/************VIDIOC_PRIVATE*************/
873d0407baSopenharmony_ci#define RKISPP_CMD_GET_FECBUF_INFO	\
883d0407baSopenharmony_ci	_IOR('V', BASE_VIDIOC_PRIVATE + 0, struct rkispp_fecbuf_info)
893d0407baSopenharmony_ci
903d0407baSopenharmony_ci#define RKISPP_CMD_SET_FECBUF_SIZE	\
913d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 1, struct rkispp_fecbuf_size)
923d0407baSopenharmony_ci
933d0407baSopenharmony_ci#define RKISPP_CMD_FEC_IN_OUT \
943d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 10, struct rkispp_fec_in_out)
953d0407baSopenharmony_ci
963d0407baSopenharmony_ci#define RKISPP_CMD_TRIGGER_YNRRUN       \
973d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 11, struct rkispp_tnr_inf)
983d0407baSopenharmony_ci
993d0407baSopenharmony_ci#define RKISPP_CMD_GET_TNRBUF_FD \
1003d0407baSopenharmony_ci	_IOR('V', BASE_VIDIOC_PRIVATE + 12, struct rkispp_buf_idxfd)
1013d0407baSopenharmony_ci
1023d0407baSopenharmony_ci#define RKISPP_CMD_TRIGGER_MODE		\
1033d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 13, struct rkispp_trigger_mode)
1043d0407baSopenharmony_ci
1053d0407baSopenharmony_ci/************EVENT_PRIVATE**************/
1063d0407baSopenharmony_ci#define RKISPP_V4L2_EVENT_TNR_COMPLETE  \
1073d0407baSopenharmony_ci	(V4L2_EVENT_PRIVATE_START + 3)
1083d0407baSopenharmony_ci
1093d0407baSopenharmony_cistruct rkispp_fec_in_out {
1103d0407baSopenharmony_ci	int width;
1113d0407baSopenharmony_ci	int height;
1123d0407baSopenharmony_ci	int in_fourcc;
1133d0407baSopenharmony_ci	int out_fourcc;
1143d0407baSopenharmony_ci	int in_pic_fd;
1153d0407baSopenharmony_ci	int out_pic_fd;
1163d0407baSopenharmony_ci	int mesh_xint_fd;
1173d0407baSopenharmony_ci	int mesh_xfra_fd;
1183d0407baSopenharmony_ci	int mesh_yint_fd;
1193d0407baSopenharmony_ci	int mesh_yfra_fd;
1203d0407baSopenharmony_ci};
1213d0407baSopenharmony_ci
1223d0407baSopenharmony_cistruct rkispp_tnr_inf {
1233d0407baSopenharmony_ci	u32 dev_id;
1243d0407baSopenharmony_ci	u32 frame_id;
1253d0407baSopenharmony_ci	u32 gainkg_idx;
1263d0407baSopenharmony_ci	u32 gainwr_idx;
1273d0407baSopenharmony_ci	u32 gainkg_size;
1283d0407baSopenharmony_ci	u32 gainwr_size;
1293d0407baSopenharmony_ci} __attribute__ ((packed));
1303d0407baSopenharmony_ci
1313d0407baSopenharmony_cistruct rkispp_buf_idxfd {
1323d0407baSopenharmony_ci	u32 buf_num;
1333d0407baSopenharmony_ci	u32 index[TNR_BUF_IDXFD_NUM];
1343d0407baSopenharmony_ci	s32 dmafd[TNR_BUF_IDXFD_NUM];
1353d0407baSopenharmony_ci} __attribute__ ((packed));
1363d0407baSopenharmony_ci
1373d0407baSopenharmony_cistruct rkispp_trigger_mode {
1383d0407baSopenharmony_ci	u32 module;
1393d0407baSopenharmony_ci	u32 on;
1403d0407baSopenharmony_ci} __attribute__ ((packed));
1413d0407baSopenharmony_ci
1423d0407baSopenharmony_cistruct rkispp_tnr_config {
1433d0407baSopenharmony_ci	u8 opty_en;
1443d0407baSopenharmony_ci	u8 optc_en;
1453d0407baSopenharmony_ci	u8 gain_en;
1463d0407baSopenharmony_ci	u8 pk0_y;
1473d0407baSopenharmony_ci	u8 pk1_y;
1483d0407baSopenharmony_ci	u8 pk0_c;
1493d0407baSopenharmony_ci	u8 pk1_c;
1503d0407baSopenharmony_ci	u8 glb_gain_cur_sqrt;
1513d0407baSopenharmony_ci	u8 sigma_x[TNR_SIGMA_CURVE_SIZE - 1];
1523d0407baSopenharmony_ci	u8 gfcoef_y0[TNR_GFCOEF6_SIZE];
1533d0407baSopenharmony_ci	u8 gfcoef_y1[TNR_GFCOEF3_SIZE];
1543d0407baSopenharmony_ci	u8 gfcoef_y2[TNR_GFCOEF3_SIZE];
1553d0407baSopenharmony_ci	u8 gfcoef_y3[TNR_GFCOEF3_SIZE];
1563d0407baSopenharmony_ci	u8 gfcoef_yg0[TNR_GFCOEF6_SIZE];
1573d0407baSopenharmony_ci	u8 gfcoef_yg1[TNR_GFCOEF3_SIZE];
1583d0407baSopenharmony_ci	u8 gfcoef_yg2[TNR_GFCOEF3_SIZE];
1593d0407baSopenharmony_ci	u8 gfcoef_yg3[TNR_GFCOEF3_SIZE];
1603d0407baSopenharmony_ci	u8 gfcoef_yl0[TNR_GFCOEF6_SIZE];
1613d0407baSopenharmony_ci	u8 gfcoef_yl1[TNR_GFCOEF3_SIZE];
1623d0407baSopenharmony_ci	u8 gfcoef_yl2[TNR_GFCOEF3_SIZE];
1633d0407baSopenharmony_ci	u8 gfcoef_cg0[TNR_GFCOEF6_SIZE];
1643d0407baSopenharmony_ci	u8 gfcoef_cg1[TNR_GFCOEF3_SIZE];
1653d0407baSopenharmony_ci	u8 gfcoef_cg2[TNR_GFCOEF3_SIZE];
1663d0407baSopenharmony_ci	u8 gfcoef_cl0[TNR_GFCOEF6_SIZE];
1673d0407baSopenharmony_ci	u8 gfcoef_cl1[TNR_GFCOEF3_SIZE];
1683d0407baSopenharmony_ci	u8 weight_y[TNR_WEIGHT_Y_SIZE];
1693d0407baSopenharmony_ci
1703d0407baSopenharmony_ci	u16 glb_gain_cur __attribute__((aligned(2)));
1713d0407baSopenharmony_ci	u16 glb_gain_nxt;
1723d0407baSopenharmony_ci	u16 glb_gain_cur_div;
1733d0407baSopenharmony_ci	u16 txt_th1_y;
1743d0407baSopenharmony_ci	u16 txt_th0_c;
1753d0407baSopenharmony_ci	u16 txt_th1_c;
1763d0407baSopenharmony_ci	u16 txt_thy_dlt;
1773d0407baSopenharmony_ci	u16 txt_thc_dlt;
1783d0407baSopenharmony_ci	u16 txt_th0_y;
1793d0407baSopenharmony_ci	u16 sigma_y[TNR_SIGMA_CURVE_SIZE];
1803d0407baSopenharmony_ci	u16 luma_curve[TNR_LUMA_CURVE_SIZE];
1813d0407baSopenharmony_ci	u16 scale_yg[TNR_SCALE_YG_SIZE];
1823d0407baSopenharmony_ci	u16 scale_yl[TNR_SCALE_YL_SIZE];
1833d0407baSopenharmony_ci	u16 scale_cg[TNR_SCALE_CG_SIZE];
1843d0407baSopenharmony_ci	u16 scale_y2cg[TNR_SCALE_Y2CG_SIZE];
1853d0407baSopenharmony_ci	u16 scale_cl[TNR_SCALE_CL_SIZE];
1863d0407baSopenharmony_ci	u16 scale_y2cl[TNR_SCALE_Y2CL_SIZE];
1873d0407baSopenharmony_ci} __attribute__ ((packed));
1883d0407baSopenharmony_ci
1893d0407baSopenharmony_cistruct rkispp_nr_config {
1903d0407baSopenharmony_ci	u8 uvnr_step1_en;
1913d0407baSopenharmony_ci	u8 uvnr_step2_en;
1923d0407baSopenharmony_ci	u8 nr_gain_en;
1933d0407baSopenharmony_ci	u8 uvnr_sd32_self_en;
1943d0407baSopenharmony_ci	u8 uvnr_nobig_en;
1953d0407baSopenharmony_ci	u8 uvnr_big_en;
1963d0407baSopenharmony_ci	u8 uvnr_gain_1sigma;
1973d0407baSopenharmony_ci	u8 uvnr_gain_offset;
1983d0407baSopenharmony_ci	u8 uvnr_gain_t2gen;
1993d0407baSopenharmony_ci	u8 uvnr_gain_iso;
2003d0407baSopenharmony_ci	u8 uvnr_t1gen_m3alpha;
2013d0407baSopenharmony_ci	u8 uvnr_t1flt_mode;
2023d0407baSopenharmony_ci	u8 uvnr_t1flt_wtp;
2033d0407baSopenharmony_ci	u8 uvnr_t2gen_m3alpha;
2043d0407baSopenharmony_ci	u8 uvnr_t2gen_wtp;
2053d0407baSopenharmony_ci	u8 uvnr_gain_uvgain[NR_UVNR_UVGAIN_SIZE];
2063d0407baSopenharmony_ci	u8 uvnr_t1flt_wtq[NR_UVNR_T1FLT_WTQ_SIZE];
2073d0407baSopenharmony_ci	u8 uvnr_t2gen_wtq[NR_UVNR_T2GEN_WTQ_SIZE];
2083d0407baSopenharmony_ci	u8 uvnr_t2flt_wtp;
2093d0407baSopenharmony_ci	u8 uvnr_t2flt_wt[NR_UVNR_T2FLT_WT_SIZE];
2103d0407baSopenharmony_ci	u8 ynr_sgm_dx[NR_YNR_SGM_DX_SIZE];
2113d0407baSopenharmony_ci	u8 ynr_lci[NR_YNR_CI_SIZE];
2123d0407baSopenharmony_ci	u8 ynr_lgain_min[NR_YNR_LGAIN_MIN_SIZE];
2133d0407baSopenharmony_ci	u8 ynr_lgain_max;
2143d0407baSopenharmony_ci	u8 ynr_lmerge_bound;
2153d0407baSopenharmony_ci	u8 ynr_lmerge_ratio;
2163d0407baSopenharmony_ci	u8 ynr_lweit_flt[NR_YNR_LWEIT_FLT_SIZE];
2173d0407baSopenharmony_ci	u8 ynr_hlci[NR_YNR_CI_SIZE];
2183d0407baSopenharmony_ci	u8 ynr_lhci[NR_YNR_CI_SIZE];
2193d0407baSopenharmony_ci	u8 ynr_hhci[NR_YNR_CI_SIZE];
2203d0407baSopenharmony_ci	u8 ynr_hgain_sgm[NR_YNR_HGAIN_SGM_SIZE];
2213d0407baSopenharmony_ci	u8 ynr_hweit_d[NR_YNR_HWEIT_D_SIZE];
2223d0407baSopenharmony_ci	u8 ynr_hgrad_y[NR_YNR_HGRAD_Y_SIZE];
2233d0407baSopenharmony_ci	u8 ynr_hmax_adjust;
2243d0407baSopenharmony_ci	u8 ynr_hstrength;
2253d0407baSopenharmony_ci	u8 ynr_lweit_cmp[NR_YNR_LWEIT_CMP_SIZE];
2263d0407baSopenharmony_ci	u8 ynr_lmaxgain_lv4;
2273d0407baSopenharmony_ci
2283d0407baSopenharmony_ci	u16 uvnr_t1flt_msigma __attribute__((aligned(2)));
2293d0407baSopenharmony_ci	u16 uvnr_t2gen_msigma;
2303d0407baSopenharmony_ci	u16 uvnr_t2flt_msigma;
2313d0407baSopenharmony_ci	u16 ynr_lsgm_y[NR_YNR_SGM_Y_SIZE];
2323d0407baSopenharmony_ci	u16 ynr_hsgm_y[NR_YNR_SGM_Y_SIZE];
2333d0407baSopenharmony_ci	u16 ynr_hweit[NR_YNR_HWEIT_SIZE];
2343d0407baSopenharmony_ci	u16 ynr_hstv_y[NR_YNR_HSTV_Y_SIZE];
2353d0407baSopenharmony_ci	u16 ynr_st_scale[NR_YNR_ST_SCALE_SIZE];
2363d0407baSopenharmony_ci} __attribute__ ((packed));
2373d0407baSopenharmony_ci
2383d0407baSopenharmony_cistruct rkispp_sharp_config {
2393d0407baSopenharmony_ci	u8 rotation;
2403d0407baSopenharmony_ci	u8 scl_down_v;
2413d0407baSopenharmony_ci	u8 scl_down_h;
2423d0407baSopenharmony_ci	u8 tile_ycnt;
2433d0407baSopenharmony_ci	u8 tile_xcnt;
2443d0407baSopenharmony_ci	u8 alpha_adp_en;
2453d0407baSopenharmony_ci	u8 yin_flt_en;
2463d0407baSopenharmony_ci	u8 edge_avg_en;
2473d0407baSopenharmony_ci	u8 ehf_th;
2483d0407baSopenharmony_ci	u8 pbf_ratio;
2493d0407baSopenharmony_ci	u8 edge_thed;
2503d0407baSopenharmony_ci	u8 dir_min;
2513d0407baSopenharmony_ci	u8 pbf_shf_bits;
2523d0407baSopenharmony_ci	u8 mbf_shf_bits;
2533d0407baSopenharmony_ci	u8 hbf_shf_bits;
2543d0407baSopenharmony_ci	u8 m_ratio;
2553d0407baSopenharmony_ci	u8 h_ratio;
2563d0407baSopenharmony_ci	u8 pbf_k[SHP_PBF_KERNEL_SIZE];
2573d0407baSopenharmony_ci	u8 mrf_k[SHP_MRF_KERNEL_SIZE];
2583d0407baSopenharmony_ci	u8 mbf_k[SHP_MBF_KERNEL_SIZE];
2593d0407baSopenharmony_ci	u8 hrf_k[SHP_HRF_KERNEL_SIZE];
2603d0407baSopenharmony_ci	u8 hbf_k[SHP_HBF_KERNEL_SIZE];
2613d0407baSopenharmony_ci	s8 eg_coef[SHP_EDGE_COEF_SIZE];
2623d0407baSopenharmony_ci	u8 eg_smoth[SHP_EDGE_SMOTH_SIZE];
2633d0407baSopenharmony_ci	u8 eg_gaus[SHP_EDGE_GAUS_SIZE];
2643d0407baSopenharmony_ci	s8 dog_k[SHP_DOG_KERNEL_SIZE];
2653d0407baSopenharmony_ci	u8 lum_point[SHP_LUM_POINT_SIZE];
2663d0407baSopenharmony_ci	u8 pbf_sigma[SHP_SIGMA_SIZE];
2673d0407baSopenharmony_ci	u8 lum_clp_m[SHP_LUM_CLP_SIZE];
2683d0407baSopenharmony_ci	s8 lum_min_m[SHP_LUM_MIN_SIZE];
2693d0407baSopenharmony_ci	u8 mbf_sigma[SHP_SIGMA_SIZE];
2703d0407baSopenharmony_ci	u8 lum_clp_h[SHP_LUM_CLP_SIZE];
2713d0407baSopenharmony_ci	u8 hbf_sigma[SHP_SIGMA_SIZE];
2723d0407baSopenharmony_ci	u8 edge_lum_thed[SHP_EDGE_LUM_THED_SIZE];
2733d0407baSopenharmony_ci	u8 clamp_pos[SHP_CLAMP_SIZE];
2743d0407baSopenharmony_ci	u8 clamp_neg[SHP_CLAMP_SIZE];
2753d0407baSopenharmony_ci	u8 detail_alpha[SHP_DETAIL_ALPHA_SIZE];
2763d0407baSopenharmony_ci
2773d0407baSopenharmony_ci	u16 hbf_ratio __attribute__((aligned(2)));
2783d0407baSopenharmony_ci	u16 smoth_th4;
2793d0407baSopenharmony_ci	u16 l_alpha;
2803d0407baSopenharmony_ci	u16 g_alpha;
2813d0407baSopenharmony_ci	u16 rfl_ratio;
2823d0407baSopenharmony_ci	u16 rfh_ratio;
2833d0407baSopenharmony_ci} __attribute__ ((packed));
2843d0407baSopenharmony_ci
2853d0407baSopenharmony_cienum rkispp_fecbuf_stat {
2863d0407baSopenharmony_ci	FEC_BUF_INIT = 0,
2873d0407baSopenharmony_ci	FEC_BUF_WAIT2CHIP,
2883d0407baSopenharmony_ci	FEC_BUF_CHIPINUSE,
2893d0407baSopenharmony_ci};
2903d0407baSopenharmony_ci
2913d0407baSopenharmony_cistruct rkispp_fecbuf_info {
2923d0407baSopenharmony_ci	s32 buf_fd[FEC_MESH_BUF_NUM];
2933d0407baSopenharmony_ci	u32 buf_size[FEC_MESH_BUF_NUM];
2943d0407baSopenharmony_ci} __attribute__ ((packed));
2953d0407baSopenharmony_ci
2963d0407baSopenharmony_cistruct rkispp_fecbuf_size {
2973d0407baSopenharmony_ci	u32 meas_width;
2983d0407baSopenharmony_ci	u32 meas_height;
2993d0407baSopenharmony_ci	u32 meas_mode;
3003d0407baSopenharmony_ci} __attribute__ ((packed));
3013d0407baSopenharmony_ci
3023d0407baSopenharmony_cistruct rkispp_fec_head {
3033d0407baSopenharmony_ci	enum rkispp_fecbuf_stat stat;
3043d0407baSopenharmony_ci	u32 meshxf_oft;
3053d0407baSopenharmony_ci	u32 meshyf_oft;
3063d0407baSopenharmony_ci	u32 meshxi_oft;
3073d0407baSopenharmony_ci	u32 meshyi_oft;
3083d0407baSopenharmony_ci} __attribute__ ((packed));
3093d0407baSopenharmony_ci
3103d0407baSopenharmony_cistruct rkispp_fec_config {
3113d0407baSopenharmony_ci	u8 mesh_density;
3123d0407baSopenharmony_ci	u8 crop_en;
3133d0407baSopenharmony_ci	u16 crop_width __attribute__((aligned(2)));
3143d0407baSopenharmony_ci	u16 crop_height;
3153d0407baSopenharmony_ci	u32 mesh_size __attribute__((aligned(4)));
3163d0407baSopenharmony_ci	s32 buf_fd;
3173d0407baSopenharmony_ci} __attribute__ ((packed));
3183d0407baSopenharmony_ci
3193d0407baSopenharmony_cistruct rkispp_orb_config {
3203d0407baSopenharmony_ci	u8 limit_value;
3213d0407baSopenharmony_ci	u32 max_feature __attribute__((aligned(4)));
3223d0407baSopenharmony_ci} __attribute__ ((packed));
3233d0407baSopenharmony_ci
3243d0407baSopenharmony_ci/**
3253d0407baSopenharmony_ci * struct rkispp_params_cfg - Rockchip ISPP Input Parameters Meta Data
3263d0407baSopenharmony_ci *
3273d0407baSopenharmony_ci * @module_en_update: mask the enable bits of which module  should be updated
3283d0407baSopenharmony_ci * @module_ens: mask the enable value of each module, only update the module
3293d0407baSopenharmony_ci * which correspond bit was set in module_en_update
3303d0407baSopenharmony_ci * @module_cfg_update: mask the config bits of which module  should be updated
3313d0407baSopenharmony_ci * @module_init_en: initial enable module function
3323d0407baSopenharmony_ci */
3333d0407baSopenharmony_cistruct rkispp_params_cfg {
3343d0407baSopenharmony_ci	u32 module_en_update;
3353d0407baSopenharmony_ci	u32 module_ens;
3363d0407baSopenharmony_ci	u32 module_cfg_update;
3373d0407baSopenharmony_ci	u32 module_init_ens;
3383d0407baSopenharmony_ci
3393d0407baSopenharmony_ci	u32 frame_id;
3403d0407baSopenharmony_ci	struct rkispp_tnr_config tnr_cfg;
3413d0407baSopenharmony_ci	struct rkispp_nr_config nr_cfg;
3423d0407baSopenharmony_ci	struct rkispp_sharp_config shp_cfg;
3433d0407baSopenharmony_ci	struct rkispp_fec_config fec_cfg;
3443d0407baSopenharmony_ci	struct rkispp_orb_config orb_cfg;
3453d0407baSopenharmony_ci} __attribute__ ((packed));
3463d0407baSopenharmony_ci
3473d0407baSopenharmony_cistruct rkispp_orb_data {
3483d0407baSopenharmony_ci	u8 brief[ORB_BRIEF_NUM];
3493d0407baSopenharmony_ci	u32 y : 13;
3503d0407baSopenharmony_ci	u32 x : 13;
3513d0407baSopenharmony_ci	u32 dmy1 : 6;
3523d0407baSopenharmony_ci	u8 dmy2[ORB_DUMMY_NUM];
3533d0407baSopenharmony_ci} __attribute__ ((packed));
3543d0407baSopenharmony_ci
3553d0407baSopenharmony_ci/**
3563d0407baSopenharmony_ci * struct rkispp_stats_buffer - Rockchip ISPP Statistics
3573d0407baSopenharmony_ci *
3583d0407baSopenharmony_ci * @meas_type: measurement types
3593d0407baSopenharmony_ci * @frame_id: frame ID for sync
3603d0407baSopenharmony_ci * @data: statistics data
3613d0407baSopenharmony_ci */
3623d0407baSopenharmony_cistruct rkispp_stats_buffer {
3633d0407baSopenharmony_ci	struct rkispp_orb_data data[ORB_DATA_NUM];
3643d0407baSopenharmony_ci
3653d0407baSopenharmony_ci	u32 total_num __attribute__((aligned(4)));
3663d0407baSopenharmony_ci	u32 meas_type;
3673d0407baSopenharmony_ci	u32 frame_id;
3683d0407baSopenharmony_ci} __attribute__ ((packed));
3693d0407baSopenharmony_ci
3703d0407baSopenharmony_ci#endif
371