mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
media: rockchip: ispp: adjust interface struct to speed cpu access
Signed-off-by: Hu Kejun <william.hu@rock-chips.com> Change-Id: I831829066ed2d8862cd76bab3b00cd9219f8018b
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user