diff --git a/include/uapi/linux/rkispp-config.h b/include/uapi/linux/rkispp-config.h index f60d9edbe41a..a82503675df9 100644 --- a/include/uapi/linux/rkispp-config.h +++ b/include/uapi/linux/rkispp-config.h @@ -73,58 +73,47 @@ struct rkispp_tnr_config { u8 opty_en; u8 optc_en; u8 gain_en; - u8 pk0_y; u8 pk1_y; u8 pk0_c; u8 pk1_c; + u8 glb_gain_cur_sqrt; + u8 sigma_x[TNR_SIGMA_CURVE_SIZE - 1]; + u8 gfcoef_y0[TNR_GFCOEF6_SIZE]; + u8 gfcoef_y1[TNR_GFCOEF3_SIZE]; + u8 gfcoef_y2[TNR_GFCOEF3_SIZE]; + u8 gfcoef_y3[TNR_GFCOEF3_SIZE]; + u8 gfcoef_yg0[TNR_GFCOEF6_SIZE]; + u8 gfcoef_yg1[TNR_GFCOEF3_SIZE]; + u8 gfcoef_yg2[TNR_GFCOEF3_SIZE]; + u8 gfcoef_yg3[TNR_GFCOEF3_SIZE]; + u8 gfcoef_yl0[TNR_GFCOEF6_SIZE]; + u8 gfcoef_yl1[TNR_GFCOEF3_SIZE]; + u8 gfcoef_yl2[TNR_GFCOEF3_SIZE]; + u8 gfcoef_cg0[TNR_GFCOEF6_SIZE]; + u8 gfcoef_cg1[TNR_GFCOEF3_SIZE]; + u8 gfcoef_cg2[TNR_GFCOEF3_SIZE]; + u8 gfcoef_cl0[TNR_GFCOEF6_SIZE]; + u8 gfcoef_cl1[TNR_GFCOEF3_SIZE]; + u8 weight_y[TNR_WEIGHT_Y_SIZE]; - u16 glb_gain_cur; + u16 glb_gain_cur __attribute__((aligned(2))); u16 glb_gain_nxt; u16 glb_gain_cur_div; - u8 glb_gain_cur_sqrt; - - u8 sigma_x[TNR_SIGMA_CURVE_SIZE - 1]; - u16 sigma_y[TNR_SIGMA_CURVE_SIZE]; - - u16 luma_curve[TNR_LUMA_CURVE_SIZE]; - - u16 txt_th0_y; u16 txt_th1_y; u16 txt_th0_c; u16 txt_th1_c; u16 txt_thy_dlt; u16 txt_thc_dlt; - - u8 gfcoef_y0[TNR_GFCOEF6_SIZE]; - u8 gfcoef_y1[TNR_GFCOEF3_SIZE]; - u8 gfcoef_y2[TNR_GFCOEF3_SIZE]; - u8 gfcoef_y3[TNR_GFCOEF3_SIZE]; - - u8 gfcoef_yg0[TNR_GFCOEF6_SIZE]; - u8 gfcoef_yg1[TNR_GFCOEF3_SIZE]; - u8 gfcoef_yg2[TNR_GFCOEF3_SIZE]; - u8 gfcoef_yg3[TNR_GFCOEF3_SIZE]; - - u8 gfcoef_yl0[TNR_GFCOEF6_SIZE]; - u8 gfcoef_yl1[TNR_GFCOEF3_SIZE]; - u8 gfcoef_yl2[TNR_GFCOEF3_SIZE]; - - u8 gfcoef_cg0[TNR_GFCOEF6_SIZE]; - u8 gfcoef_cg1[TNR_GFCOEF3_SIZE]; - u8 gfcoef_cg2[TNR_GFCOEF3_SIZE]; - - u8 gfcoef_cl0[TNR_GFCOEF6_SIZE]; - u8 gfcoef_cl1[TNR_GFCOEF3_SIZE]; - + u16 txt_th0_y; + u16 sigma_y[TNR_SIGMA_CURVE_SIZE]; + u16 luma_curve[TNR_LUMA_CURVE_SIZE]; u16 scale_yg[TNR_SCALE_YG_SIZE]; u16 scale_yl[TNR_SCALE_YL_SIZE]; u16 scale_cg[TNR_SCALE_CG_SIZE]; u16 scale_y2cg[TNR_SCALE_Y2CG_SIZE]; u16 scale_cl[TNR_SCALE_CL_SIZE]; u16 scale_y2cl[TNR_SCALE_Y2CL_SIZE]; - - u8 weight_y[TNR_WEIGHT_Y_SIZE]; } __attribute__ ((packed)); struct rkispp_nr_config { @@ -133,48 +122,44 @@ struct rkispp_nr_config { u8 nr_gain_en; u8 uvnr_nobig_en; u8 uvnr_big_en; - u8 uvnr_gain_1sigma; u8 uvnr_gain_offset; - u8 uvnr_gain_uvgain[NR_UVNR_UVGAIN_SIZE]; u8 uvnr_gain_t2gen; u8 uvnr_gain_iso; u8 uvnr_t1gen_m3alpha; u8 uvnr_t1flt_mode; - u16 uvnr_t1flt_msigma; u8 uvnr_t1flt_wtp; - u8 uvnr_t1flt_wtq[NR_UVNR_T1FLT_WTQ_SIZE]; u8 uvnr_t2gen_m3alpha; - u16 uvnr_t2gen_msigma; u8 uvnr_t2gen_wtp; + u8 uvnr_gain_uvgain[NR_UVNR_UVGAIN_SIZE]; + u8 uvnr_t1flt_wtq[NR_UVNR_T1FLT_WTQ_SIZE]; u8 uvnr_t2gen_wtq[NR_UVNR_T2GEN_WTQ_SIZE]; - u16 uvnr_t2flt_msigma; - u8 uvnr_t2flt_wtp; u8 uvnr_t2flt_wt[NR_UVNR_T2FLT_WT_SIZE]; - u8 ynr_sgm_dx[NR_YNR_SGM_DX_SIZE]; - u16 ynr_lsgm_y[NR_YNR_SGM_Y_SIZE]; u8 ynr_lci[NR_YNR_CI_SIZE]; u8 ynr_lgain_min[NR_YNR_LGAIN_MIN_SIZE]; u8 ynr_lgain_max; - u8 ynr_lmerge_bound; u8 ynr_lmerge_ratio; - u8 ynr_lweit_flt[NR_YNR_LWEIT_FLT_SIZE]; - u16 ynr_hsgm_y[NR_YNR_SGM_Y_SIZE]; u8 ynr_hlci[NR_YNR_CI_SIZE]; u8 ynr_lhci[NR_YNR_CI_SIZE]; u8 ynr_hhci[NR_YNR_CI_SIZE]; u8 ynr_hgain_sgm[NR_YNR_HGAIN_SGM_SIZE]; u8 ynr_hweit_d[NR_YNR_HWEIT_D_SIZE]; u8 ynr_hgrad_y[NR_YNR_HGRAD_Y_SIZE]; - u16 ynr_hweit[NR_YNR_HWEIT_SIZE]; u8 ynr_hmax_adjust; u8 ynr_hstrength; u8 ynr_lweit_cmp[NR_YNR_LWEIT_CMP_SIZE]; u8 ynr_lmaxgain_lv4; + + u16 uvnr_t1flt_msigma __attribute__((aligned(2))); + u16 uvnr_t2gen_msigma; + u16 uvnr_t2flt_msigma; + u16 ynr_lsgm_y[NR_YNR_SGM_Y_SIZE]; + u16 ynr_hsgm_y[NR_YNR_SGM_Y_SIZE]; + u16 ynr_hweit[NR_YNR_HWEIT_SIZE]; u16 ynr_hstv_y[NR_YNR_HSTV_Y_SIZE]; u16 ynr_st_scale[NR_YNR_ST_SCALE_SIZE]; } __attribute__ ((packed)); @@ -182,41 +167,30 @@ struct rkispp_nr_config { struct rkispp_sharp_config { u8 scl_down_v; u8 scl_down_h; - u8 tile_ycnt; u8 tile_xcnt; - u8 alpha_adp_en; u8 yin_flt_en; u8 edge_avg_en; - - u16 hbf_ratio; u8 ehf_th; u8 pbf_ratio; - u8 edge_thed; u8 dir_min; - u16 smoth_th4; - - u16 l_alpha; - u16 g_alpha; - + u8 pbf_shf_bits; + u8 mbf_shf_bits; + u8 hbf_shf_bits; + u8 m_ratio; + u8 h_ratio; u8 pbf_k[SHP_PBF_KERNEL_SIZE]; u8 mrf_k[SHP_MRF_KERNEL_SIZE]; u8 mbf_k[SHP_MBF_KERNEL_SIZE]; u8 hrf_k[SHP_HRF_KERNEL_SIZE]; u8 hbf_k[SHP_HBF_KERNEL_SIZE]; - s8 eg_coef[SHP_EDGE_COEF_SIZE]; u8 eg_smoth[SHP_EDGE_SMOTH_SIZE]; u8 eg_gaus[SHP_EDGE_GAUS_SIZE]; s8 dog_k[SHP_DOG_KERNEL_SIZE]; u8 lum_point[SHP_LUM_POINT_SIZE]; - - u8 pbf_shf_bits; - u8 mbf_shf_bits; - u8 hbf_shf_bits; - u8 pbf_sigma[SHP_SIGMA_SIZE]; u8 lum_clp_m[SHP_LUM_CLP_SIZE]; s8 lum_min_m[SHP_LUM_MIN_SIZE]; @@ -228,29 +202,31 @@ struct rkispp_sharp_config { u8 clamp_neg[SHP_CLAMP_SIZE]; u8 detail_alpha[SHP_DETAIL_ALPHA_SIZE]; + u16 hbf_ratio __attribute__((aligned(2))); + u16 smoth_th4; + u16 l_alpha; + u16 g_alpha; u16 rfl_ratio; u16 rfh_ratio; - - u8 m_ratio; - u8 h_ratio; } __attribute__ ((packed)); struct rkispp_fec_config { u8 mesh_density; - u32 mesh_size; u8 crop_en; - u16 crop_width; - u16 crop_height; - - u16 meshxi[FEC_MESH_XY_NUM]; u8 meshxf[FEC_MESH_XY_NUM]; - u16 meshyi[FEC_MESH_XY_NUM]; u8 meshyf[FEC_MESH_XY_NUM]; + + u16 crop_width __attribute__((aligned(2))); + u16 crop_height; + u16 meshxi[FEC_MESH_XY_NUM]; + u16 meshyi[FEC_MESH_XY_NUM]; + + u32 mesh_size __attribute__((aligned(4))); } __attribute__ ((packed)); struct rkispp_orb_config { u8 limit_value; - u32 max_feature; + u32 max_feature __attribute__((aligned(4))); } __attribute__ ((packed)); /** @@ -262,9 +238,9 @@ struct rkispp_orb_config { * @module_cfg_update: mask the config bits of which module should be updated */ struct rkispp_params_cfg { - unsigned int module_en_update; - unsigned int module_ens; - unsigned int module_cfg_update; + u32 module_en_update; + u32 module_ens; + u32 module_cfg_update; struct rkispp_tnr_config tnr_cfg; struct rkispp_nr_config nr_cfg; @@ -290,10 +266,10 @@ struct rkispp_orb_data { */ struct rkispp_stats_buffer { struct rkispp_orb_data data[ORB_DATA_NUM]; - unsigned int total_num; - unsigned int meas_type; - unsigned int frame_id; + u32 total_num __attribute__((aligned(4))); + u32 meas_type; + u32 frame_id; } __attribute__ ((packed)); #endif