struct fimc_is_hw_mcsc *hw_mcsc;
struct fimc_is_hw_mcsc_cap *cap = GET_MCSC_HW_CAP(hw_ip);
enum exynos_sensor_position sensor_position;
+ struct hw_mcsc_setfile *setfile;
+ struct scaler_coef_cfg *sc_coef;
FIMC_BUG(!hw_ip);
FIMC_BUG(!input);
vratio = (u32)((temp_height << MCSC_PRECISION) / poly_dst_height);
sensor_position = hw_ip->hardware->sensor_position[instance];
+ setfile = hw_mcsc->cur_setfile[sensor_position];
+#if defined(USE_UVSP_CAC)
+ sc_coef = &setfile->sc_coef;
+#else
+ sc_coef = NULL;
+#endif
fimc_is_scaler_set_poly_scaling_ratio(hw_ip->regs, output_id, hratio, vratio);
- fimc_is_scaler_set_poly_scaler_coef(hw_ip->regs, output_id, hratio, vratio, sensor_position);
+ fimc_is_scaler_set_poly_scaler_coef(hw_ip->regs, output_id, hratio, vratio,
+ sc_coef, sensor_position);
fimc_is_scaler_set_poly_round_mode(hw_ip->regs, output_id, round_mode_en);
return ret;
bool round_mode_en = true;
struct fimc_is_hw_mcsc *hw_mcsc;
struct fimc_is_hw_mcsc_cap *cap = GET_MCSC_HW_CAP(hw_ip);
+ enum exynos_sensor_position sensor_position;
+ struct hw_mcsc_setfile *setfile;
+ struct scaler_coef_cfg *sc_coef;
FIMC_BUG(!hw_ip);
FIMC_BUG(!input);
hratio = (u32)((temp_width << MCSC_PRECISION) / dst_width);
vratio = (u32)((temp_height << MCSC_PRECISION) / dst_height);
+ sensor_position = hw_ip->hardware->sensor_position[instance];
+ setfile = hw_mcsc->cur_setfile[sensor_position];
+#if defined(USE_UVSP_CAC)
+ sc_coef = &setfile->sc_coef;
+#else
+ sc_coef = NULL;
+#endif
fimc_is_scaler_set_post_scaling_ratio(hw_ip->regs, output_id, hratio, vratio);
- fimc_is_scaler_set_post_scaler_coef(hw_ip->regs, output_id, hratio, vratio);
+ fimc_is_scaler_set_post_scaler_coef(hw_ip->regs, output_id, hratio, vratio, sc_coef);
fimc_is_scaler_set_post_round_mode(hw_ip->regs, output_id, round_mode_en);
return ret;