void
ia_css_dp_encode(
    struct sh_css_isp_dp_params *to,
    const struct ia_css_dp_config *from)
{
    int gain = from->gain;
    int gr   = from->gr;
    int r    = from->r;
    int b    = from->b;
    int gb   = from->gb;
    to->threshold_single =
        SH_CSS_BAYER_MAXVAL;
    to->threshold_2adjacent =
        uDIGIT_FITTING(from->threshold, 16, SH_CSS_BAYER_BITS);
    to->gain =
        uDIGIT_FITTING(from->gain, 8, SH_CSS_DP_GAIN_SHIFT);

    to->coef_rr_gr =
        uDIGIT_FITTING (gain * gr / r, 8, SH_CSS_DP_GAIN_SHIFT);
    to->coef_rr_gb =
        uDIGIT_FITTING (gain * gb / r, 8, SH_CSS_DP_GAIN_SHIFT);
    to->coef_bb_gb =
        uDIGIT_FITTING (gain * gb / b, 8, SH_CSS_DP_GAIN_SHIFT);
    to->coef_bb_gr =
        uDIGIT_FITTING (gain * gr / b, 8, SH_CSS_DP_GAIN_SHIFT);
    to->coef_gr_rr =
        uDIGIT_FITTING (gain * r / gr, 8, SH_CSS_DP_GAIN_SHIFT);
    to->coef_gr_bb =
        uDIGIT_FITTING (gain * b / gr, 8, SH_CSS_DP_GAIN_SHIFT);
    to->coef_gb_bb =
        uDIGIT_FITTING (gain * b / gb, 8, SH_CSS_DP_GAIN_SHIFT);
    to->coef_gb_rr =
        uDIGIT_FITTING (gain * r / gb, 8, SH_CSS_DP_GAIN_SHIFT);
}
void
ia_css_ob2_encode(
	struct sh_css_isp_ob2_params *to,
	const struct ia_css_ob2_config *from,
	unsigned size)
{
	(void)size;

	/* Blacklevels types are u0_16 */
	to->blacklevel_gr = uDIGIT_FITTING(from->level_gr, 16, SH_CSS_BAYER_BITS);
	to->blacklevel_r  = uDIGIT_FITTING(from->level_r,  16, SH_CSS_BAYER_BITS);
	to->blacklevel_b  = uDIGIT_FITTING(from->level_b,  16, SH_CSS_BAYER_BITS);
	to->blacklevel_gb = uDIGIT_FITTING(from->level_gb, 16, SH_CSS_BAYER_BITS);
}
void
ia_css_gc_encode(
	struct sh_css_isp_gc_params *to,
	const struct ia_css_gc_config *from,
	unsigned size)
{
	(void)size;
	to->gain_k1 =
	    uDIGIT_FITTING((int)from->gain_k1, 16,
		IA_CSS_GAMMA_GAIN_K_SHIFT);
	to->gain_k2 =
	    uDIGIT_FITTING((int)from->gain_k2, 16,
		IA_CSS_GAMMA_GAIN_K_SHIFT);
}
void
ia_css_wb_encode(struct sh_css_isp_wb_params *to,
		 const struct ia_css_wb_config *from)
{
	to->gain_shift =
	    uISP_REG_BIT - from->integer_bits;
	to->gain_gr =
	    uDIGIT_FITTING(from->gr, 16 - from->integer_bits,
			   to->gain_shift);
	to->gain_r =
	    uDIGIT_FITTING(from->r, 16 - from->integer_bits,
			   to->gain_shift);
	to->gain_b =
	    uDIGIT_FITTING(from->b, 16 - from->integer_bits,
			   to->gain_shift);
	to->gain_gb =
	    uDIGIT_FITTING(from->gb, 16 - from->integer_bits,
			   to->gain_shift);
}
void
ia_css_xnr_encode(
	struct sh_css_isp_xnr_params *to,
	const struct ia_css_xnr_config *from,
	unsigned size)
{
	(void)size;
	
	to->threshold =
		uDIGIT_FITTING(from->threshold, 16, SH_CSS_ISP_YUV_BITS);
}