Lines Matching refs:params
16 #include <media/videobuf2-vmalloc.h> /* for ISP params */
95 rkisp1_param_set_bits(struct rkisp1_params *params, u32 reg, u32 bit_mask)
99 val = rkisp1_read(params->rkisp1, reg);
100 rkisp1_write(params->rkisp1, reg, val | bit_mask);
104 rkisp1_param_clear_bits(struct rkisp1_params *params, u32 reg, u32 bit_mask)
108 val = rkisp1_read(params->rkisp1, reg);
109 rkisp1_write(params->rkisp1, reg, val & ~bit_mask);
113 static void rkisp1_dpcc_config(struct rkisp1_params *params,
125 mode = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_DPCC_MODE);
128 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPCC_MODE, mode);
130 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPCC_OUTPUT_MODE,
132 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPCC_SET_USE,
136 rkisp1_write(params->rkisp1, RKISP1_ISP_DPCC_METHODS_SET(i),
139 rkisp1_write(params->rkisp1, RKISP1_ISP_DPCC_LINE_THRESH(i),
142 rkisp1_write(params->rkisp1, RKISP1_ISP_DPCC_LINE_MAD_FAC(i),
145 rkisp1_write(params->rkisp1, RKISP1_ISP_DPCC_PG_FAC(i),
148 rkisp1_write(params->rkisp1, RKISP1_ISP_DPCC_RND_THRESH(i),
151 rkisp1_write(params->rkisp1, RKISP1_ISP_DPCC_RG_FAC(i),
156 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPCC_RND_OFFS,
158 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPCC_RO_LIMITS,
163 static void rkisp1_bls_config(struct rkisp1_params *params,
169 new_control = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_BLS_CTRL);
181 rkisp1_bls_swap_regs(params->raw_type, regs, swapped);
183 rkisp1_write(params->rkisp1, swapped[0], arg->fixed_val.r);
184 rkisp1_write(params->rkisp1, swapped[1], arg->fixed_val.gr);
185 rkisp1_write(params->rkisp1, swapped[2], arg->fixed_val.gb);
186 rkisp1_write(params->rkisp1, swapped[3], arg->fixed_val.b);
189 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_H2_START,
191 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_H2_STOP,
193 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_V2_START,
195 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_V2_STOP,
201 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_H1_START,
203 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_H1_STOP,
205 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_V1_START,
207 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_V1_STOP,
212 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_SAMPLES,
217 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_BLS_CTRL, new_control);
222 rkisp1_lsc_matrix_config_v10(struct rkisp1_params *params,
225 struct rkisp1_device *rkisp1 = params->rkisp1;
282 rkisp1_lsc_matrix_config_v12(struct rkisp1_params *params,
285 struct rkisp1_device *rkisp1 = params->rkisp1;
341 static void rkisp1_lsc_config(struct rkisp1_params *params,
344 struct rkisp1_device *rkisp1 = params->rkisp1;
350 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
352 params->ops->lsc_matrix_config(params, arg);
378 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
381 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
386 static void rkisp1_flt_config(struct rkisp1_params *params,
391 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_THRESH_BL0,
393 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_THRESH_BL1,
395 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_THRESH_SH0,
397 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_THRESH_SH1,
399 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_FAC_BL0,
401 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_FAC_BL1,
403 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_FAC_MID,
405 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_FAC_SH0,
407 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_FAC_SH1,
409 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_LUM_WEIGHT,
412 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_MODE,
419 filt_mode = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_FILT_MODE);
426 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_FILT_MODE, filt_mode);
430 static int rkisp1_bdm_config(struct rkisp1_params *params,
436 bdm_th = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_DEMOSAIC);
440 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DEMOSAIC, bdm_th);
445 static void rkisp1_sdg_config(struct rkisp1_params *params,
450 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_GAMMA_DX_LO,
452 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_GAMMA_DX_HI,
456 rkisp1_write(params->rkisp1,
459 rkisp1_write(params->rkisp1,
462 rkisp1_write(params->rkisp1,
469 static void rkisp1_goc_config_v10(struct rkisp1_params *params,
474 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
476 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_GAMMA_OUT_MODE_V10,
480 rkisp1_write(params->rkisp1,
485 static void rkisp1_goc_config_v12(struct rkisp1_params *params,
491 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
493 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_GAMMA_OUT_MODE_V12,
500 rkisp1_write(params->rkisp1,
506 static void rkisp1_ctk_config(struct rkisp1_params *params,
513 rkisp1_write(params->rkisp1,
517 rkisp1_write(params->rkisp1,
522 static void rkisp1_ctk_enable(struct rkisp1_params *params, bool en)
528 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_0, 0x80);
529 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_1, 0);
530 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_2, 0);
531 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_3, 0);
532 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_4, 0x80);
533 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_5, 0);
534 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_6, 0);
535 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_7, 0);
536 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_COEFF_8, 0x80);
538 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_OFFSET_R, 0);
539 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_OFFSET_G, 0);
540 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CT_OFFSET_B, 0);
544 static void rkisp1_awb_meas_config_v10(struct rkisp1_params *params,
551 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_REF_V10,
555 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_THRESH_V10,
562 reg_val = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V10);
567 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V10, reg_val);
570 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_WND_V_OFFS_V10,
572 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_WND_H_OFFS_V10,
575 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_WND_V_SIZE_V10,
577 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_WND_H_SIZE_V10,
580 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_FRAMES_V10,
584 static void rkisp1_awb_meas_config_v12(struct rkisp1_params *params,
591 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_REF_V12,
595 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_THRESH_V12,
602 reg_val = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V12);
609 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V12, reg_val);
612 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_OFFS_V12,
615 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_SIZE_V12,
620 rkisp1_awb_meas_enable_v10(struct rkisp1_params *params,
624 u32 reg_val = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V10);
635 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V10,
639 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
642 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V10,
644 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
650 rkisp1_awb_meas_enable_v12(struct rkisp1_params *params,
654 u32 reg_val = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V12);
665 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V12,
669 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
672 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_PROP_V12,
674 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
680 rkisp1_awb_gain_config_v10(struct rkisp1_params *params,
683 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_GAIN_G_V10,
687 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_GAIN_RB_V10,
693 rkisp1_awb_gain_config_v12(struct rkisp1_params *params,
696 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_GAIN_G_V12,
700 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AWB_GAIN_RB_V12,
705 static void rkisp1_aec_config_v10(struct rkisp1_params *params,
712 exp_ctrl = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_EXP_CTRL);
718 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_EXP_CTRL, exp_ctrl);
720 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_EXP_H_OFFSET_V10,
722 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_EXP_V_OFFSET_V10,
730 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_EXP_H_SIZE_V10,
732 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_EXP_V_SIZE_V10,
736 static void rkisp1_aec_config_v12(struct rkisp1_params *params,
745 exp_ctrl = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_EXP_CTRL);
752 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_EXP_CTRL, exp_ctrl);
754 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_EXP_OFFS_V12,
761 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_EXP_SIZE_V12,
766 static void rkisp1_cproc_config(struct rkisp1_params *params,
774 u32 quantization = params->quantization;
776 rkisp1_write(params->rkisp1, RKISP1_CIF_C_PROC_CONTRAST,
778 rkisp1_write(params->rkisp1, RKISP1_CIF_C_PROC_HUE, arg->hue);
779 rkisp1_write(params->rkisp1, RKISP1_CIF_C_PROC_SATURATION, arg->sat);
780 rkisp1_write(params->rkisp1, RKISP1_CIF_C_PROC_BRIGHTNESS,
785 rkisp1_param_clear_bits(params, RKISP1_CIF_C_PROC_CTRL,
790 rkisp1_param_set_bits(params, RKISP1_CIF_C_PROC_CTRL,
797 static void rkisp1_hst_config_v10(struct rkisp1_params *params,
814 hist_prop = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_HIST_PROP_V10);
817 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_PROP_V10, hist_prop);
818 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_H_OFFS_V10,
820 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_V_OFFS_V10,
827 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_H_SIZE_V10,
829 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_V_SIZE_V10,
834 rkisp1_write(params->rkisp1, hist_weight_regs[i],
838 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_WEIGHT_44_V10,
842 static void rkisp1_hst_config_v12(struct rkisp1_params *params,
855 hist_ctrl = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_HIST_CTRL_V12);
865 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_CTRL_V12, hist_ctrl);
867 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_OFFS_V12,
873 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_SIZE_V12,
890 rkisp1_write(params->rkisp1,
894 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_HIST_WEIGHT_V12 + 4 * i,
899 rkisp1_hst_enable_v10(struct rkisp1_params *params,
903 u32 hist_prop = rkisp1_read(params->rkisp1,
908 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_HIST_PROP_V10,
911 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_HIST_PROP_V10,
917 rkisp1_hst_enable_v12(struct rkisp1_params *params,
921 u32 hist_ctrl = rkisp1_read(params->rkisp1,
927 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_HIST_CTRL_V12,
930 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_HIST_CTRL_V12,
936 static void rkisp1_afm_config_v10(struct rkisp1_params *params,
941 u32 afm_ctrl = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_AFM_CTRL);
945 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_AFM_CTRL,
949 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_LT_A + i * 8,
952 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_RB_A + i * 8,
958 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_THRES, arg->thres);
959 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_VAR_SHIFT,
962 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_CTRL, afm_ctrl);
965 static void rkisp1_afm_config_v12(struct rkisp1_params *params,
970 u32 afm_ctrl = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_AFM_CTRL);
975 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_AFM_CTRL,
979 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_LT_A + i * 8,
982 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_RB_A + i * 8,
988 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_THRES, arg->thres);
992 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_VAR_SHIFT,
998 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_AFM_CTRL, afm_ctrl);
1001 static void rkisp1_ie_config(struct rkisp1_params *params,
1006 eff_ctrl = rkisp1_read(params->rkisp1, RKISP1_CIF_IMG_EFF_CTRL);
1009 if (params->quantization == V4L2_QUANTIZATION_FULL_RANGE)
1017 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_TINT,
1027 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_COLOR_SEL,
1032 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_MAT_1,
1034 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_MAT_2,
1036 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_MAT_3,
1041 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_MAT_3,
1043 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_MAT_4,
1045 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_MAT_5,
1058 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_CTRL, eff_ctrl);
1061 static void rkisp1_ie_enable(struct rkisp1_params *params, bool en)
1064 rkisp1_param_set_bits(params, RKISP1_CIF_VI_ICCL,
1066 rkisp1_write(params->rkisp1, RKISP1_CIF_IMG_EFF_CTRL,
1068 rkisp1_param_set_bits(params, RKISP1_CIF_IMG_EFF_CTRL,
1071 rkisp1_param_clear_bits(params, RKISP1_CIF_IMG_EFF_CTRL,
1073 rkisp1_param_clear_bits(params, RKISP1_CIF_VI_ICCL,
1078 static void rkisp1_csm_config(struct rkisp1_params *params)
1137 switch (params->ycbcr_encoding) {
1153 if (params->quantization == V4L2_QUANTIZATION_FULL_RANGE) {
1155 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
1160 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
1166 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CC_COEFF_0 + i * 4,
1171 static void rkisp1_dpf_config(struct rkisp1_params *params,
1215 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_DPF_MODE,
1217 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_NF_GAIN_B,
1219 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_NF_GAIN_R,
1221 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_NF_GAIN_GB,
1223 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_NF_GAIN_GR,
1227 rkisp1_write(params->rkisp1,
1236 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_S_WEIGHT_G_1_4,
1241 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_S_WEIGHT_G_5_6,
1248 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_S_WEIGHT_RB_1_4,
1253 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_S_WEIGHT_RB_5_6,
1258 rkisp1_dpf_strength_config(struct rkisp1_params *params,
1261 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_STRENGTH_B, arg->b);
1262 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_STRENGTH_G, arg->g);
1263 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_DPF_STRENGTH_R, arg->r);
1266 static void rkisp1_compand_write_px_curve(struct rkisp1_params *params,
1289 rkisp1_write(params->rkisp1, addr, val);
1295 rkisp1_compand_write_curve_mem(struct rkisp1_params *params,
1300 rkisp1_write(params->rkisp1, reg_addr, i);
1301 rkisp1_write(params->rkisp1, reg_data, curve[i]);
1306 rkisp1_compand_bls_config(struct rkisp1_params *params,
1317 rkisp1_bls_swap_regs(params->raw_type, regs, swapped);
1319 rkisp1_write(params->rkisp1, swapped[0], arg->r);
1320 rkisp1_write(params->rkisp1, swapped[1], arg->gr);
1321 rkisp1_write(params->rkisp1, swapped[2], arg->gb);
1322 rkisp1_write(params->rkisp1, swapped[3], arg->b);
1326 rkisp1_compand_expand_config(struct rkisp1_params *params,
1329 rkisp1_compand_write_px_curve(params, RKISP1_CIF_ISP_COMPAND_EXPAND_PX_N(0),
1331 rkisp1_compand_write_curve_mem(params, RKISP1_CIF_ISP_COMPAND_EXPAND_Y_ADDR,
1334 rkisp1_compand_write_curve_mem(params, RKISP1_CIF_ISP_COMPAND_EXPAND_X_ADDR,
1340 rkisp1_compand_compress_config(struct rkisp1_params *params,
1343 rkisp1_compand_write_px_curve(params, RKISP1_CIF_ISP_COMPAND_COMPRESS_PX_N(0),
1345 rkisp1_compand_write_curve_mem(params, RKISP1_CIF_ISP_COMPAND_COMPRESS_Y_ADDR,
1348 rkisp1_compand_write_curve_mem(params, RKISP1_CIF_ISP_COMPAND_COMPRESS_X_ADDR,
1353 static void rkisp1_wdr_config(struct rkisp1_params *params,
1359 value = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_WDR_CTRL)
1393 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_WDR_CTRL, value);
1400 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_WDR_OFFSET, value);
1408 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_WDR_DELTAMIN, value);
1412 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_WDR_TONECURVE(i),
1415 rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_WDR_TONECURVE_YM(i),
1421 rkisp1_isp_isr_other_config(struct rkisp1_params *params,
1430 if (!rkisp1_has_feature(params->rkisp1, BLS)) {
1438 rkisp1_dpcc_config(params,
1443 rkisp1_param_set_bits(params,
1447 rkisp1_param_clear_bits(params,
1454 rkisp1_bls_config(params,
1459 rkisp1_param_set_bits(params,
1463 rkisp1_param_clear_bits(params,
1470 rkisp1_sdg_config(params,
1475 rkisp1_param_set_bits(params,
1479 rkisp1_param_clear_bits(params,
1486 params->ops->awb_gain_config(params, &new_params->others.awb_gain_config);
1490 rkisp1_param_set_bits(params,
1494 rkisp1_param_clear_bits(params,
1501 rkisp1_bdm_config(params,
1506 rkisp1_param_set_bits(params,
1510 rkisp1_param_clear_bits(params,
1517 rkisp1_flt_config(params,
1522 rkisp1_param_set_bits(params,
1526 rkisp1_param_clear_bits(params,
1533 rkisp1_ctk_config(params,
1537 rkisp1_ctk_enable(params, !!(module_ens & RKISP1_CIF_ISP_MODULE_CTK));
1541 params->ops->goc_config(params, &new_params->others.goc_config);
1545 rkisp1_param_set_bits(params,
1549 rkisp1_param_clear_bits(params,
1556 rkisp1_cproc_config(params,
1561 rkisp1_param_set_bits(params,
1565 rkisp1_param_clear_bits(params,
1572 rkisp1_ie_config(params, &new_params->others.ie_config);
1575 rkisp1_ie_enable(params, !!(module_ens & RKISP1_CIF_ISP_MODULE_IE));
1579 rkisp1_dpf_config(params, &new_params->others.dpf_config);
1583 rkisp1_param_set_bits(params,
1587 rkisp1_param_clear_bits(params,
1595 rkisp1_dpf_strength_config(params,
1601 rkisp1_isp_isr_lsc_config(struct rkisp1_params *params,
1612 rkisp1_lsc_config(params,
1617 rkisp1_param_set_bits(params,
1621 rkisp1_param_clear_bits(params,
1627 static void rkisp1_isp_isr_meas_config(struct rkisp1_params *params,
1638 params->ops->awb_meas_config(params, &new_params->meas.awb_meas_config);
1641 params->ops->awb_meas_enable(params,
1647 params->ops->afm_config(params,
1652 rkisp1_param_set_bits(params,
1656 rkisp1_param_clear_bits(params,
1663 params->ops->hst_config(params,
1667 params->ops->hst_enable(params,
1673 params->ops->aec_config(params,
1678 rkisp1_param_set_bits(params,
1682 rkisp1_param_clear_bits(params,
1693 rkisp1_ext_params_bls(struct rkisp1_params *params,
1699 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_BLS_CTRL,
1704 rkisp1_bls_config(params, &bls->config);
1707 !(params->enabled_blocks & BIT(bls->header.type)))
1708 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_BLS_CTRL,
1713 rkisp1_ext_params_dpcc(struct rkisp1_params *params,
1719 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_DPCC_MODE,
1724 rkisp1_dpcc_config(params, &dpcc->config);
1727 !(params->enabled_blocks & BIT(dpcc->header.type)))
1728 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_DPCC_MODE,
1733 rkisp1_ext_params_sdg(struct rkisp1_params *params,
1739 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
1744 rkisp1_sdg_config(params, &sdg->config);
1747 !(params->enabled_blocks & BIT(sdg->header.type)))
1748 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
1753 rkisp1_ext_params_lsc(struct rkisp1_params *params,
1759 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
1764 rkisp1_lsc_config(params, &lsc->config);
1767 !(params->enabled_blocks & BIT(lsc->header.type)))
1768 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
1773 rkisp1_ext_params_awbg(struct rkisp1_params *params,
1779 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
1784 params->ops->awb_gain_config(params, &awbg->config);
1787 !(params->enabled_blocks & BIT(awbg->header.type)))
1788 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
1793 rkisp1_ext_params_flt(struct rkisp1_params *params,
1799 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_FILT_MODE,
1804 rkisp1_flt_config(params, &flt->config);
1807 !(params->enabled_blocks & BIT(flt->header.type)))
1808 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_FILT_MODE,
1813 rkisp1_ext_params_bdm(struct rkisp1_params *params,
1819 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_DEMOSAIC,
1824 rkisp1_bdm_config(params, &bdm->config);
1827 !(params->enabled_blocks & BIT(bdm->header.type)))
1828 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_DEMOSAIC,
1833 rkisp1_ext_params_ctk(struct rkisp1_params *params,
1839 rkisp1_ctk_enable(params, false);
1843 rkisp1_ctk_config(params, &ctk->config);
1846 !(params->enabled_blocks & BIT(ctk->header.type)))
1847 rkisp1_ctk_enable(params, true);
1851 rkisp1_ext_params_goc(struct rkisp1_params *params,
1857 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
1862 params->ops->goc_config(params, &goc->config);
1868 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
1873 rkisp1_ext_params_dpf(struct rkisp1_params *params,
1879 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_DPF_MODE,
1884 rkisp1_dpf_config(params, &dpf->config);
1887 !(params->enabled_blocks & BIT(dpf->header.type)))
1888 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_DPF_MODE,
1893 rkisp1_ext_params_dpfs(struct rkisp1_params *params,
1898 rkisp1_dpf_strength_config(params, &dpfs->config);
1902 rkisp1_ext_params_cproc(struct rkisp1_params *params,
1908 rkisp1_param_clear_bits(params, RKISP1_CIF_C_PROC_CTRL,
1913 rkisp1_cproc_config(params, &cproc->config);
1916 !(params->enabled_blocks & BIT(cproc->header.type)))
1917 rkisp1_param_set_bits(params, RKISP1_CIF_C_PROC_CTRL,
1922 rkisp1_ext_params_ie(struct rkisp1_params *params,
1928 rkisp1_ie_enable(params, false);
1932 rkisp1_ie_config(params, &ie->config);
1935 !(params->enabled_blocks & BIT(ie->header.type)))
1936 rkisp1_ie_enable(params, true);
1940 rkisp1_ext_params_awbm(struct rkisp1_params *params,
1946 params->ops->awb_meas_enable(params, &awbm->config,
1951 params->ops->awb_meas_config(params, &awbm->config);
1954 !(params->enabled_blocks & BIT(awbm->header.type)))
1955 params->ops->awb_meas_enable(params, &awbm->config,
1960 rkisp1_ext_params_hstm(struct rkisp1_params *params,
1966 params->ops->hst_enable(params, &hst->config, false);
1970 params->ops->hst_config(params, &hst->config);
1973 !(params->enabled_blocks & BIT(hst->header.type)))
1974 params->ops->hst_enable(params, &hst->config, true);
1978 rkisp1_ext_params_aecm(struct rkisp1_params *params,
1984 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_EXP_CTRL,
1989 params->ops->aec_config(params, &aec->config);
1992 !(params->enabled_blocks & BIT(aec->header.type)))
1993 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_EXP_CTRL,
1998 rkisp1_ext_params_afcm(struct rkisp1_params *params,
2004 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_AFM_CTRL,
2009 params->ops->afm_config(params, &afc->config);
2012 !(params->enabled_blocks & BIT(afc->header.type)))
2013 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_AFM_CTRL,
2017 static void rkisp1_ext_params_compand_bls(struct rkisp1_params *params,
2024 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_COMPAND_CTRL,
2029 rkisp1_compand_bls_config(params, &bls->config);
2032 !(params->enabled_blocks & BIT(bls->header.type)))
2033 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_COMPAND_CTRL,
2037 static void rkisp1_ext_params_compand_expand(struct rkisp1_params *params,
2044 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_COMPAND_CTRL,
2049 rkisp1_compand_expand_config(params, &curve->config);
2052 !(params->enabled_blocks & BIT(curve->header.type)))
2053 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_COMPAND_CTRL,
2057 static void rkisp1_ext_params_compand_compress(struct rkisp1_params *params,
2064 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_COMPAND_CTRL,
2069 rkisp1_compand_compress_config(params, &curve->config);
2072 !(params->enabled_blocks & BIT(curve->header.type)))
2073 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_COMPAND_CTRL,
2077 static void rkisp1_ext_params_wdr(struct rkisp1_params *params,
2083 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_WDR_CTRL,
2088 rkisp1_wdr_config(params, &wdr->config);
2091 !(params->enabled_blocks & BIT(wdr->header.type)))
2092 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_WDR_CTRL,
2096 typedef void (*rkisp1_block_handler)(struct rkisp1_params *params,
2216 static void rkisp1_ext_params_config(struct rkisp1_params *params,
2242 if ((params->rkisp1->info->features & block_handler->features) !=
2246 block_handler->handler(params, block);
2249 params->enabled_blocks &= ~BIT(block->header.type);
2251 params->enabled_blocks |= BIT(block->header.type);
2255 static void rkisp1_params_complete_buffer(struct rkisp1_params *params,
2267 struct rkisp1_params *params = &rkisp1->params;
2270 spin_lock(¶ms->config_lock);
2272 cur_buf = list_first_entry_or_null(¶ms->params,
2277 if (params->metafmt->dataformat == V4L2_META_FMT_RK_ISP1_PARAMS) {
2278 rkisp1_isp_isr_other_config(params, cur_buf->cfg);
2279 rkisp1_isp_isr_lsc_config(params, cur_buf->cfg);
2280 rkisp1_isp_isr_meas_config(params, cur_buf->cfg);
2282 rkisp1_ext_params_config(params, cur_buf->cfg,
2288 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
2299 rkisp1_params_complete_buffer(params, cur_buf,
2303 spin_unlock(¶ms->config_lock);
2345 void rkisp1_params_pre_configure(struct rkisp1_params *params,
2353 params->quantization = quantization;
2354 params->ycbcr_encoding = ycbcr_encoding;
2355 params->raw_type = bayer_pat;
2357 params->ops->awb_meas_config(params, &rkisp1_awb_params_default_config);
2358 params->ops->awb_meas_enable(params, &rkisp1_awb_params_default_config,
2361 params->ops->aec_config(params, &rkisp1_aec_params_default_config);
2362 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_EXP_CTRL,
2365 params->ops->afm_config(params, &rkisp1_afc_params_default_config);
2366 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_AFM_CTRL,
2370 params->ops->hst_config(params, &hst);
2371 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_HIST_PROP_V10,
2374 rkisp1_csm_config(params);
2376 spin_lock_irq(¶ms->config_lock);
2380 cur_buf = list_first_entry_or_null(¶ms->params,
2385 if (params->metafmt->dataformat == V4L2_META_FMT_RK_ISP1_PARAMS) {
2386 rkisp1_isp_isr_other_config(params, cur_buf->cfg);
2387 rkisp1_isp_isr_meas_config(params, cur_buf->cfg);
2389 rkisp1_ext_params_config(params, cur_buf->cfg,
2394 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
2398 spin_unlock_irq(¶ms->config_lock);
2401 void rkisp1_params_post_configure(struct rkisp1_params *params)
2405 spin_lock_irq(¶ms->config_lock);
2415 cur_buf = list_first_entry_or_null(¶ms->params,
2420 if (params->metafmt->dataformat == V4L2_META_FMT_RK_ISP1_PARAMS)
2421 rkisp1_isp_isr_lsc_config(params, cur_buf->cfg);
2423 rkisp1_ext_params_config(params, cur_buf->cfg,
2427 rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
2430 rkisp1_params_complete_buffer(params, cur_buf, 0);
2433 spin_unlock_irq(¶ms->config_lock);
2440 void rkisp1_params_disable(struct rkisp1_params *params)
2442 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_DPCC_MODE,
2444 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
2446 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_BLS_CTRL,
2448 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
2450 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
2452 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_DEMOSAIC,
2454 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_FILT_MODE,
2456 params->ops->awb_meas_enable(params, NULL, false);
2457 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
2459 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_EXP_CTRL,
2461 rkisp1_ctk_enable(params, false);
2462 rkisp1_param_clear_bits(params, RKISP1_CIF_C_PROC_CTRL,
2464 params->ops->hst_enable(params, NULL, false);
2465 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_AFM_CTRL,
2467 rkisp1_ie_enable(params, false);
2468 rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_DPF_MODE,
2514 struct rkisp1_params *params = video_get_drvdata(video);
2520 *meta = *params->metafmt;
2543 struct rkisp1_params *params = video_get_drvdata(video);
2552 params->metafmt = rkisp1_params_get_format_info(meta->dataformat);
2553 *meta = *params->metafmt;
2570 /* ISP params video device IOCTLs */
2596 struct rkisp1_params *params = vq->drv_priv;
2604 sizes[0] = params->metafmt->buffersize;
2613 struct rkisp1_params *params = vb->vb2_queue->drv_priv;
2615 params_buf->cfg = kvmalloc(params->metafmt->buffersize,
2637 struct rkisp1_params *params = vq->drv_priv;
2639 spin_lock_irq(¶ms->config_lock);
2640 list_add_tail(¶ms_buf->queue, ¶ms->params);
2641 spin_unlock_irq(¶ms->config_lock);
2644 static int rkisp1_params_prepare_ext_params(struct rkisp1_params *params,
2662 if (payload_size > params->metafmt->buffersize) {
2663 dev_dbg(params->rkisp1->dev,
2669 dev_dbg(params->rkisp1->dev,
2683 dev_dbg(params->rkisp1->dev,
2692 dev_dbg(params->rkisp1->dev,
2708 dev_dbg(params->rkisp1->dev,
2714 dev_dbg(params->rkisp1->dev,
2723 dev_dbg(params->rkisp1->dev,
2730 dev_dbg(params->rkisp1->dev,
2740 dev_dbg(params->rkisp1->dev,
2750 struct rkisp1_params *params = vb->vb2_queue->drv_priv;
2756 if (params->metafmt->dataformat == V4L2_META_FMT_RK_ISP1_EXT_PARAMS)
2757 return rkisp1_params_prepare_ext_params(params, vb);
2777 struct rkisp1_params *params = vq->drv_priv;
2786 spin_lock_irq(¶ms->config_lock);
2787 list_splice_init(¶ms->params, &tmp_list);
2788 spin_unlock_irq(¶ms->config_lock);
2793 params->enabled_blocks = 0;
2814 struct rkisp1_params *params)
2822 q->drv_priv = params;
2832 static int rkisp1_params_ctrl_init(struct rkisp1_params *params)
2842 v4l2_ctrl_handler_init(¶ms->ctrls, 1);
2850 if ((params->rkisp1->info->features & block_handler->features) !=
2857 v4l2_ctrl_new_custom(¶ms->ctrls, &ctrl_config, NULL);
2859 params->vnode.vdev.ctrl_handler = ¶ms->ctrls;
2861 if (params->ctrls.error) {
2862 ret = params->ctrls.error;
2863 v4l2_ctrl_handler_free(¶ms->ctrls);
2872 struct rkisp1_params *params = &rkisp1->params;
2873 struct rkisp1_vdev_node *node = ¶ms->vnode;
2877 params->rkisp1 = rkisp1;
2879 INIT_LIST_HEAD(¶ms->params);
2880 spin_lock_init(¶ms->config_lock);
2884 video_set_drvdata(vdev, params);
2897 ret = rkisp1_params_init_vb2_queue(vdev->queue, params);
2901 params->metafmt = &rkisp1_params_formats[RKISP1_PARAMS_FIXED];
2903 if (params->rkisp1->info->isp_ver == RKISP1_V12)
2904 params->ops = &rkisp1_v12_params_ops;
2906 params->ops = &rkisp1_v10_params_ops;
2908 video_set_drvdata(vdev, params);
2915 ret = rkisp1_params_ctrl_init(params);
2931 v4l2_ctrl_handler_free(¶ms->ctrls);
2940 struct rkisp1_params *params = &rkisp1->params;
2941 struct rkisp1_vdev_node *node = ¶ms->vnode;
2948 v4l2_ctrl_handler_free(¶ms->ctrls);