else
pr_info("%d\n", wext_gain_copy[val]);
}
+ } else if (!strcmp(parm[1], "adp_thrd")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ for (i = 0; i < 33; i++)
+ d_convert_str(adp_thrd_copy[i],
+ i, stemp, 4, 10);
+ pr_info("%s\n", stemp);
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ if ((val > 32) || (val < 0))
+ pr_info("error cmd\n");
+ else
+ pr_info("%d\n", adp_thrd_copy[val]);
+ }
+ } else if (!strcmp(parm[1], "reg_blk_boost_12")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ for (i = 0; i < 13; i++)
+ d_convert_str(reg_blk_boost_12_copy[i],
+ i, stemp, 4, 10);
+ pr_info("%s\n", stemp);
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ if ((val > 12) || (val < 0))
+ pr_info("error cmd\n");
+ else
+ pr_info("%d\n",
+ reg_blk_boost_12_copy[val]);
+ }
+ } else if (!strcmp(parm[1], "reg_adp_ofset_20")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ for (i = 0; i < 20; i++)
+ d_convert_str(reg_adp_ofset_20_copy[i],
+ i, stemp, 4, 10);
+ pr_info("%s\n", stemp);
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ if ((val > 19) || (val < 0))
+ pr_info("error cmd\n");
+ else
+ pr_info("%d\n",
+ reg_adp_ofset_20_copy[val]);
+ }
+ } else if (!strcmp(parm[1], "reg_mono_protect")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ for (i = 0; i < 6; i++)
+ d_convert_str(reg_mono_protect_copy[i],
+ i, stemp, 4, 10);
+ pr_info("%s\n", stemp);
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ if ((val > 5) || (val < 0))
+ pr_info("error cmd\n");
+ else
+ pr_info("%d\n",
+ reg_mono_protect_copy[val]);
+ }
+ } else if (!strcmp(parm[1], "reg_trend_wht_expand_lut8")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ for (i = 0; i < 9; i++)
+ d_convert_str(
+ reg_trend_wht_expand_lut8_copy[i],
+ i, stemp, 4, 10);
+ pr_info("%s\n", stemp);
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ if ((val > 8) || (val < 0))
+ pr_info("error cmd\n");
+ else
+ pr_info("%d\n",
+ reg_trend_wht_expand_lut8_copy[val]);
+ }
} else if (!strcmp(parm[1], "ve_dnlp_tgt")) {
/*read only curve*/
if (parm[2] == NULL) {
else
wext_gain_copy[num] = val;
}
+ } else if (!strcmp(parm[1], "adp_thrd")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ str_sapr_to_d(parm[3], curve_val, 5);
+ for (i = 0; i < 33; i++)
+ adp_thrd_copy[i] = curve_val[i];
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ num = val;
+ if (kstrtoul(parm[3], 10, &val) < 0)
+ goto free_buf;
+
+ if (num > 32)
+ pr_info("error cmd\n");
+ else
+ adp_thrd_copy[num] = val;
+ }
+ } else if (!strcmp(parm[1], "reg_blk_boost_12")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ str_sapr_to_d(parm[3], curve_val, 5);
+ for (i = 0; i < 13; i++)
+ reg_blk_boost_12_copy[i] = curve_val[i];
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ num = val;
+ if (kstrtoul(parm[3], 10, &val) < 0)
+ goto free_buf;
+
+ if (num > 12)
+ pr_info("error cmd\n");
+ else
+ reg_blk_boost_12_copy[num] = val;
+ }
+ } else if (!strcmp(parm[1], "reg_adp_ofset_20")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ str_sapr_to_d(parm[3], curve_val, 5);
+ for (i = 0; i < 20; i++)
+ reg_adp_ofset_20_copy[i] = curve_val[i];
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ num = val;
+ if (kstrtoul(parm[3], 10, &val) < 0)
+ goto free_buf;
+
+ if (num > 19)
+ pr_info("error cmd\n");
+ else
+ reg_adp_ofset_20_copy[num] = val;
+ }
+ } else if (!strcmp(parm[1], "reg_mono_protect")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ str_sapr_to_d(parm[3], curve_val, 5);
+ for (i = 0; i < 6; i++)
+ reg_mono_protect_copy[i] = curve_val[i];
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ num = val;
+ if (kstrtoul(parm[3], 10, &val) < 0)
+ goto free_buf;
+
+ if (num > 5)
+ pr_info("error cmd\n");
+ else
+ reg_mono_protect_copy[num] = val;
+ }
+ } else if (!strcmp(parm[1], "reg_trend_wht_expand_lut8")) {
+ if (parm[2] == NULL) {
+ pr_info("error cmd\n");
+ goto free_buf;
+ } else if (!strcmp(parm[2], "all")) {
+ str_sapr_to_d(parm[3], curve_val, 5);
+ for (i = 0; i < 9; i++)
+ reg_trend_wht_expand_lut8_copy[i] =
+ curve_val[i];
+ } else {
+ if (kstrtoul(parm[2], 10, &val) < 0)
+ goto free_buf;
+
+ num = val;
+ if (kstrtoul(parm[3], 10, &val) < 0)
+ goto free_buf;
+
+ if (num > 8)
+ pr_info("error cmd\n");
+ else
+ reg_trend_wht_expand_lut8_copy[num] = val;
+ }
}
} else if (!strcmp(parm[0], "ro")) {
if (!strcmp(parm[1], "luma_avg4"))
unsigned int dnlp_scurv_hgh1_th;
unsigned int dnlp_scurv_hgh2_th;
unsigned int dnlp_mtdrate_adp_en;
+ unsigned int dnlp_clahe_method;
+ unsigned int dnlp_ble_en;
+ unsigned int dnlp_norm;
+ unsigned int dnlp_scn_chg_th;
+ unsigned int dnlp_step_th;
+ unsigned int dnlp_iir_step_mux;
+ unsigned int dnlp_single_bin_bw;
+ unsigned int dnlp_single_bin_method;
+ unsigned int dnlp_reg_max_slop_1st;
+ unsigned int dnlp_reg_max_slop_mid;
+ unsigned int dnlp_reg_max_slop_fin;
+ unsigned int dnlp_reg_min_slop_1st;
+ unsigned int dnlp_reg_min_slop_mid;
+ unsigned int dnlp_reg_min_slop_fin;
+ unsigned int dnlp_reg_trend_wht_expand_mode;
+ unsigned int dnlp_reg_trend_blk_expand_mode;
+ unsigned int dnlp_ve_hist_cur_gain;
+ unsigned int dnlp_ve_hist_cur_gain_precise;
+ unsigned int dnlp_reg_mono_binrang_st;
+ unsigned int dnlp_reg_mono_binrang_ed;
};
struct dnlp_alg_input_param_s {
int *dnlp_scurv_hgh2;
int *gain_var_lut49;
int *wext_gain;
+ int *adp_thrd;
+ int *reg_blk_boost_12;
+ int *reg_adp_ofset_20;
+ int *reg_mono_protect;
+ int *reg_trend_wht_expand_lut8;
};
-
struct dnlp_dbg_print_s {
int *dnlp_printk;
};
int *dnlp_scurv_hgh2_copy;
int *gain_var_lut49_copy;
int *wext_gain_copy;
+int *adp_thrd_copy;
+int *reg_blk_boost_12_copy;
+int *reg_adp_ofset_20_copy;
+int *reg_mono_protect_copy;
+int *reg_trend_wht_expand_lut8_copy;
int *ro_luma_avg4_copy;
int *ro_var_d8_copy;
{"scurv_hgh1_th", &(dnlp_alg_param.dnlp_scurv_hgh1_th)},
{"scurv_hgh2_th", &(dnlp_alg_param.dnlp_scurv_hgh2_th)},
{"mtdrate_adp_en", &(dnlp_alg_param.dnlp_mtdrate_adp_en)},
+ {"clahe_method", &(dnlp_alg_param.dnlp_clahe_method)},
+ {"ble_en", &(dnlp_alg_param.dnlp_ble_en)},
+ {"norm", &(dnlp_alg_param.dnlp_norm)},
+ {"scn_chg_th", &(dnlp_alg_param.dnlp_scn_chg_th)},
+ {"step_th", &(dnlp_alg_param.dnlp_step_th)},
+ {"iir_step_mux", &(dnlp_alg_param.dnlp_iir_step_mux)},
+ {"single_bin_bw", &(dnlp_alg_param.dnlp_single_bin_bw)},
+ {"single_bin_method", &(dnlp_alg_param.dnlp_single_bin_method)},
+ {"reg_max_slop_1st", &(dnlp_alg_param.dnlp_reg_max_slop_1st)},
+ {"reg_max_slop_mid", &(dnlp_alg_param.dnlp_reg_max_slop_mid)},
+ {"reg_max_slop_fin", &(dnlp_alg_param.dnlp_reg_max_slop_fin)},
+ {"reg_min_slop_1st", &(dnlp_alg_param.dnlp_reg_min_slop_1st)},
+ {"reg_min_slop_mid", &(dnlp_alg_param.dnlp_reg_min_slop_mid)},
+ {"reg_min_slop_fin", &(dnlp_alg_param.dnlp_reg_min_slop_fin)},
+ {"reg_trend_wht_expand_mode",
+ &(dnlp_alg_param.dnlp_reg_trend_wht_expand_mode)},
+ {"reg_trend_blk_expand_mode",
+ &(dnlp_alg_param.dnlp_reg_trend_blk_expand_mode)},
+ {"ve_hist_cur_gain", &(dnlp_alg_param.dnlp_ve_hist_cur_gain)},
+ {"ve_hist_cur_gain_precise",
+ &(dnlp_alg_param.dnlp_ve_hist_cur_gain_precise)},
+ {"reg_mono_binrang_st", &(dnlp_alg_param.dnlp_reg_mono_binrang_st)},
+ {"reg_mono_binrang_ed", &(dnlp_alg_param.dnlp_reg_mono_binrang_ed)},
{"", NULL}
};
dnlp_scurv_hgh2_copy = dnlp_dbg_rw_param->dnlp_scurv_hgh2;
gain_var_lut49_copy = dnlp_dbg_rw_param->gain_var_lut49;
wext_gain_copy = dnlp_dbg_rw_param->wext_gain;
+ adp_thrd_copy = dnlp_dbg_rw_param->adp_thrd;
+ reg_blk_boost_12_copy = dnlp_dbg_rw_param->reg_blk_boost_12;
+ reg_adp_ofset_20_copy = dnlp_dbg_rw_param->reg_adp_ofset_20;
+ reg_mono_protect_copy = dnlp_dbg_rw_param->reg_mono_protect;
+ reg_trend_wht_expand_lut8_copy =
+ dnlp_dbg_rw_param->reg_trend_wht_expand_lut8;
ro_luma_avg4_copy = dnlp_dbg_ro_param->ro_luma_avg4;
ro_var_d8_copy = dnlp_dbg_ro_param->ro_var_d8;
dnlp_alg_param.dnlp_scurv_hgh1_th = 176;
dnlp_alg_param.dnlp_scurv_hgh2_th = 240;
dnlp_alg_param.dnlp_mtdrate_adp_en = 1;
+ dnlp_alg_param.dnlp_clahe_method = 1;
+ dnlp_alg_param.dnlp_ble_en = 1;
+ dnlp_alg_param.dnlp_norm = 10;
+ dnlp_alg_param.dnlp_scn_chg_th = 48;
+ dnlp_alg_param.dnlp_step_th = 1;
+ dnlp_alg_param.dnlp_iir_step_mux = 1;
+ dnlp_alg_param.dnlp_single_bin_bw = 2;
+ dnlp_alg_param.dnlp_single_bin_method = 1;
+ dnlp_alg_param.dnlp_reg_max_slop_1st = 614;
+ dnlp_alg_param.dnlp_reg_max_slop_mid = 400;
+ dnlp_alg_param.dnlp_reg_max_slop_fin = 614;
+ dnlp_alg_param.dnlp_reg_min_slop_1st = 77;
+ dnlp_alg_param.dnlp_reg_min_slop_mid = 144;
+ dnlp_alg_param.dnlp_reg_min_slop_fin = 77;
+ dnlp_alg_param.dnlp_reg_trend_wht_expand_mode = 2;
+ dnlp_alg_param.dnlp_reg_trend_blk_expand_mode = 2;
+ dnlp_alg_param.dnlp_ve_hist_cur_gain = 8;
+ dnlp_alg_param.dnlp_ve_hist_cur_gain_precise = 8;
+ dnlp_alg_param.dnlp_reg_mono_binrang_st = 7;
+ dnlp_alg_param.dnlp_reg_mono_binrang_ed = 26;
if (dnlp_alg_function != NULL) {
dnlp_alg_function->dnlp_para_set(&dnlp_alg_output,
/* general settings */
if (dnlp_insmod_ok == 0)
return;
+ /*load static curve*/
+ memcpy(dnlp_scurv_low_copy, p->ve_dnlp_scurv_low,
+ sizeof(int) * DNLP_SCURV_LEN);
+ memcpy(dnlp_scurv_mid1_copy, p->ve_dnlp_scurv_mid1,
+ sizeof(int) * DNLP_SCURV_LEN);
+ memcpy(dnlp_scurv_mid2_copy, p->ve_dnlp_scurv_mid2,
+ sizeof(int) * DNLP_SCURV_LEN);
+ memcpy(dnlp_scurv_hgh1_copy, p->ve_dnlp_scurv_hgh1,
+ sizeof(int) * DNLP_SCURV_LEN);
+ memcpy(dnlp_scurv_hgh2_copy, p->ve_dnlp_scurv_hgh2,
+ sizeof(int) * DNLP_SCURV_LEN);
+ /*load gain var*/
+ memcpy(gain_var_lut49_copy, p->ve_gain_var_lut49,
+ sizeof(int) * GAIN_VAR_LUT_LEN);
+ /*load wext gain*/
+ memcpy(wext_gain_copy, p->ve_wext_gain,
+ sizeof(int) * WEXT_GAIN_LEN);
+ /*load new c curve lut for vlsi-kite.li*/
+ memcpy(adp_thrd_copy, p->ve_adp_thrd,
+ sizeof(int) * ADP_THRD_LEN);
+ memcpy(reg_blk_boost_12_copy, p->ve_reg_blk_boost_12,
+ sizeof(int) * REG_BLK_BOOST_LEN);
+ memcpy(reg_adp_ofset_20_copy, p->ve_reg_adp_ofset_20,
+ sizeof(int) * REG_ADP_OFSET_LEN);
+ memcpy(reg_mono_protect_copy, p->ve_reg_mono_protect,
+ sizeof(int) * REG_MONO_PROT_LEN);
+ memcpy(reg_trend_wht_expand_lut8_copy, p->ve_reg_trend_wht_expand_lut8,
+ sizeof(int) * TREND_WHT_EXP_LUT_LEN);
if ((ve_en != p->param[ve_dnlp_enable]) ||
(dnlp_sel != p->param[ve_dnlp_sel]) ||
(dnlp_alg_param.dnlp_scurv_hgh2_th !=
p->param[ve_dnlp_scurv_hgh2_th]) ||
(dnlp_alg_param.dnlp_mtdrate_adp_en !=
- p->param[ve_dnlp_mtdrate_adp_en])) {
+ p->param[ve_dnlp_mtdrate_adp_en]) ||
+ (dnlp_alg_param.dnlp_clahe_method !=
+ p->param[ve_dnlp_clahe_method]) ||
+ (dnlp_alg_param.dnlp_ble_en !=
+ p->param[ve_dnlp_ble_en]) ||
+ (dnlp_alg_param.dnlp_norm !=
+ p->param[ve_dnlp_norm]) ||
+ (dnlp_alg_param.dnlp_scn_chg_th !=
+ p->param[ve_dnlp_scn_chg_th]) ||
+ (dnlp_alg_param.dnlp_iir_step_mux !=
+ p->param[ve_dnlp_iir_step_mux]) ||
+ (dnlp_alg_param.dnlp_single_bin_bw !=
+ p->param[ve_dnlp_single_bin_bw]) ||
+ (dnlp_alg_param.dnlp_single_bin_method !=
+ p->param[ve_dnlp_single_bin_method]) ||
+ (dnlp_alg_param.dnlp_reg_max_slop_1st !=
+ p->param[ve_dnlp_reg_max_slop_1st]) ||
+ (dnlp_alg_param.dnlp_reg_max_slop_mid !=
+ p->param[ve_dnlp_reg_max_slop_mid]) ||
+ (dnlp_alg_param.dnlp_reg_max_slop_fin !=
+ p->param[ve_dnlp_reg_max_slop_fin]) ||
+ (dnlp_alg_param.dnlp_reg_min_slop_1st !=
+ p->param[ve_dnlp_reg_min_slop_1st]) ||
+ (dnlp_alg_param.dnlp_reg_min_slop_mid !=
+ p->param[ve_dnlp_reg_min_slop_mid]) ||
+ (dnlp_alg_param.dnlp_reg_min_slop_fin !=
+ p->param[ve_dnlp_reg_min_slop_fin]) ||
+ (dnlp_alg_param.dnlp_reg_trend_wht_expand_mode !=
+ p->param[ve_dnlp_reg_trend_wht_expand_mode]) ||
+ (dnlp_alg_param.dnlp_reg_trend_blk_expand_mode !=
+ p->param[ve_dnlp_reg_trend_blk_expand_mode]) ||
+ (dnlp_alg_param.dnlp_ve_hist_cur_gain !=
+ p->param[ve_dnlp_ve_hist_cur_gain]) ||
+ (dnlp_alg_param.dnlp_ve_hist_cur_gain_precise !=
+ p->param[ve_dnlp_ve_hist_cur_gain_precise]) ||
+ (dnlp_alg_param.dnlp_reg_mono_binrang_st !=
+ p->param[ve_dnlp_reg_mono_binrang_st]) ||
+ (dnlp_alg_param.dnlp_reg_mono_binrang_ed !=
+ p->param[ve_dnlp_reg_mono_binrang_ed])) {
if (dnlp_insmod_ok)
*menu_chg_en_copy = 1;
} else
dnlp_alg_param.dnlp_mtdrate_adp_en =
p->param[ve_dnlp_mtdrate_adp_en];
/* TODO: ve_dnlp_set_saturtn = p->dnlp_set_saturtn; */
+ /*new c curve param add for vlsi-kiteli*/
+ dnlp_alg_param.dnlp_mtdrate_adp_en =
+ p->param[ve_dnlp_mtdrate_adp_en];
+
+ dnlp_alg_param.dnlp_clahe_method =
+ p->param[ve_dnlp_clahe_method];
+ dnlp_alg_param.dnlp_ble_en =
+ p->param[ve_dnlp_ble_en];
+ dnlp_alg_param.dnlp_norm =
+ p->param[ve_dnlp_norm];
+ dnlp_alg_param.dnlp_scn_chg_th =
+ p->param[ve_dnlp_scn_chg_th];
+ dnlp_alg_param.dnlp_iir_step_mux =
+ p->param[ve_dnlp_iir_step_mux];
+ dnlp_alg_param.dnlp_single_bin_bw =
+ p->param[ve_dnlp_single_bin_bw];
+ dnlp_alg_param.dnlp_single_bin_method =
+ p->param[ve_dnlp_single_bin_method];
+ dnlp_alg_param.dnlp_reg_max_slop_1st =
+ p->param[ve_dnlp_reg_max_slop_1st];
+ dnlp_alg_param.dnlp_reg_max_slop_mid =
+ p->param[ve_dnlp_reg_max_slop_mid];
+ dnlp_alg_param.dnlp_reg_max_slop_fin =
+ p->param[ve_dnlp_reg_max_slop_fin];
+ dnlp_alg_param.dnlp_reg_min_slop_1st =
+ p->param[ve_dnlp_reg_min_slop_1st];
+ dnlp_alg_param.dnlp_reg_min_slop_mid =
+ p->param[ve_dnlp_reg_min_slop_mid];
+ dnlp_alg_param.dnlp_reg_min_slop_fin =
+ p->param[ve_dnlp_reg_min_slop_fin];
+ dnlp_alg_param.dnlp_reg_trend_wht_expand_mode =
+ p->param[ve_dnlp_reg_trend_wht_expand_mode];
+ dnlp_alg_param.dnlp_reg_trend_blk_expand_mode =
+ p->param[ve_dnlp_reg_trend_blk_expand_mode];
+ dnlp_alg_param.dnlp_ve_hist_cur_gain =
+ p->param[ve_dnlp_ve_hist_cur_gain];
+ dnlp_alg_param.dnlp_ve_hist_cur_gain_precise =
+ p->param[ve_dnlp_ve_hist_cur_gain_precise];
+ dnlp_alg_param.dnlp_reg_mono_binrang_st =
+ p->param[ve_dnlp_reg_mono_binrang_st];
+ dnlp_alg_param.dnlp_reg_mono_binrang_ed =
+ p->param[ve_dnlp_reg_mono_binrang_ed];
if (dnlp_insmod_ok == 0)
return;
dnlp_dbg_node_copy();
- /*load static curve*/
- for (i = 0; i < 65; i++) {
- dnlp_scurv_low_copy[i] = p->ve_dnlp_scurv_low[i];
- dnlp_scurv_mid1_copy[i] = p->ve_dnlp_scurv_mid1[i];
- dnlp_scurv_mid2_copy[i] = p->ve_dnlp_scurv_mid2[i];
- dnlp_scurv_hgh1_copy[i] = p->ve_dnlp_scurv_hgh1[i];
- dnlp_scurv_hgh2_copy[i] = p->ve_dnlp_scurv_hgh2[i];
- }
- /*load gain var*/
- for (i = 0; i < 49; i++)
- gain_var_lut49_copy[i] = p->ve_gain_var_lut49[i];
- /*load wext gain*/
- for (i = 0; i < 48; i++)
- wext_gain_copy[i] = p->ve_wext_gain[i];
-
if (ve_en) {
/* clear historic luma sum */
*ve_dnlp_luma_sum_copy = 0;
unsigned int dnlp_scurv_hgh1_th;
unsigned int dnlp_scurv_hgh2_th;
unsigned int dnlp_mtdrate_adp_en;
+ unsigned int dnlp_clahe_method;
+ unsigned int dnlp_ble_en;
+ unsigned int dnlp_norm;
+ unsigned int dnlp_scn_chg_th;
+ unsigned int dnlp_step_th;
+ unsigned int dnlp_iir_step_mux;
+ unsigned int dnlp_single_bin_bw;
+ unsigned int dnlp_single_bin_method;
+ unsigned int dnlp_reg_max_slop_1st;
+ unsigned int dnlp_reg_max_slop_mid;
+ unsigned int dnlp_reg_max_slop_fin;
+ unsigned int dnlp_reg_min_slop_1st;
+ unsigned int dnlp_reg_min_slop_mid;
+ unsigned int dnlp_reg_min_slop_fin;
+ unsigned int dnlp_reg_trend_wht_expand_mode;
+ unsigned int dnlp_reg_trend_blk_expand_mode;
+ unsigned int dnlp_ve_hist_cur_gain;
+ unsigned int dnlp_ve_hist_cur_gain_precise;
+ unsigned int dnlp_reg_mono_binrang_st;
+ unsigned int dnlp_reg_mono_binrang_ed;
};
struct dnlp_parse_cmd_s {
extern int *dnlp_scurv_hgh2_copy;
extern int *gain_var_lut49_copy;
extern int *wext_gain_copy;
+extern int *adp_thrd_copy;
+extern int *reg_blk_boost_12_copy;
+extern int *reg_adp_ofset_20_copy;
+extern int *reg_mono_protect_copy;
+extern int *reg_trend_wht_expand_lut8_copy;
extern int *ro_luma_avg4_copy;
extern int *ro_var_d8_copy;
unsigned char slope2;
};
#if defined(CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_VECM)
+#define DNLP_SCURV_LEN 65
+#define GAIN_VAR_LUT_LEN 49
+#define WEXT_GAIN_LEN 48
+#define ADP_THRD_LEN 33
+#define REG_BLK_BOOST_LEN 13
+#define REG_ADP_OFSET_LEN 20
+#define REG_MONO_PROT_LEN 6
+#define TREND_WHT_EXP_LUT_LEN 9
+#define DNLP_PARM_MAX_NUM 100
+#define DNLP_VPP_HIST_BIN_NUM 64
struct ve_dnlp_s {
unsigned int en;
unsigned int rt; /* 0 ~ 255, */
unsigned int vpp_hist_pow;
unsigned int vpp_luma_sum;
unsigned int vpp_pixel_sum;
- unsigned short vpp_histgram[64];
+ unsigned short vpp_histgram[DNLP_VPP_HIST_BIN_NUM];
};
struct ve_dnlp_curve_param_s {
- unsigned int ve_dnlp_scurv_low[65];
- unsigned int ve_dnlp_scurv_mid1[65];
- unsigned int ve_dnlp_scurv_mid2[65];
- unsigned int ve_dnlp_scurv_hgh1[65];
- unsigned int ve_dnlp_scurv_hgh2[65];
- unsigned int ve_gain_var_lut49[49];
- unsigned int ve_wext_gain[48];
- unsigned int param[100];
+ unsigned int ve_dnlp_scurv_low[DNLP_SCURV_LEN];
+ unsigned int ve_dnlp_scurv_mid1[DNLP_SCURV_LEN];
+ unsigned int ve_dnlp_scurv_mid2[DNLP_SCURV_LEN];
+ unsigned int ve_dnlp_scurv_hgh1[DNLP_SCURV_LEN];
+ unsigned int ve_dnlp_scurv_hgh2[DNLP_SCURV_LEN];
+ unsigned int ve_gain_var_lut49[GAIN_VAR_LUT_LEN];
+ unsigned int ve_wext_gain[WEXT_GAIN_LEN];
+ unsigned int ve_adp_thrd[ADP_THRD_LEN];
+ unsigned int ve_reg_blk_boost_12[REG_BLK_BOOST_LEN];
+ unsigned int ve_reg_adp_ofset_20[REG_ADP_OFSET_LEN];
+ unsigned int ve_reg_mono_protect[REG_MONO_PROT_LEN];
+ unsigned int ve_reg_trend_wht_expand_lut8[TREND_WHT_EXP_LUT_LEN];
+ unsigned int param[DNLP_PARM_MAX_NUM];
};
enum dnlp_param_e {
ve_dnlp_enable = 0,
ve_dnlp_scurv_hgh1_th,
ve_dnlp_scurv_hgh2_th,
ve_dnlp_mtdrate_adp_en,
+ ve_dnlp_clahe_method,
+ ve_dnlp_ble_en,
+ ve_dnlp_norm,
+ ve_dnlp_scn_chg_th,
+ ve_dnlp_step_th,
+ ve_dnlp_iir_step_mux,
+ ve_dnlp_single_bin_bw,
+ ve_dnlp_single_bin_method,
+ ve_dnlp_reg_max_slop_1st,
+ ve_dnlp_reg_max_slop_mid,
+ ve_dnlp_reg_max_slop_fin,
+ ve_dnlp_reg_min_slop_1st,
+ ve_dnlp_reg_min_slop_mid,
+ ve_dnlp_reg_min_slop_fin,
+ ve_dnlp_reg_trend_wht_expand_mode,
+ ve_dnlp_reg_trend_blk_expand_mode,
+ ve_dnlp_ve_hist_cur_gain,
+ ve_dnlp_ve_hist_cur_gain_precise,
+ ve_dnlp_reg_mono_binrang_st,
+ ve_dnlp_reg_mono_binrang_ed,
ve_dnlp_param_max,
};
enum dnlp_curve_e {
ve_scurv_hgh2,
ve_curv_var_lut49,
ve_curv_wext_gain,
+ ve_adp_thrd = 1013,
+ ve_reg_blk_boost_12,
+ ve_reg_adp_ofset_20,
+ ve_reg_mono_protect,
+ ve_reg_trend_wht_expand_lut8,
};
#else
struct ve_dnlp_s {