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