Пример #1
0
/**
 * isp_af_check_iir - Function to check IIR Coefficient.
 **/
int isp_af_check_iir(void)
{
	struct af_iir *iir_cfg = &af_dev_configptr->config->iir_config;
	int index;

	for (index = 0; index < AF_NUMBER_OF_COEF; index++) {
		if ((iir_cfg->coeff_set0[index]) > AF_COEF_MAX) {
			DPRINTK_ISP_AF("Error : Coefficient for set 0 is "
				       "incorrect");
			return -AF_ERR_IIR_COEF;
		}

		if ((iir_cfg->coeff_set1[index]) > AF_COEF_MAX) {
			DPRINTK_ISP_AF("Error : Coefficient for set 1 is "
				       "incorrect");
			return -AF_ERR_IIR_COEF;
		}
	}

	if (IS_OUT_OF_BOUNDS(iir_cfg->hz_start_pos, AF_IIRSH_MIN,
			     AF_IIRSH_MAX)) {
		DPRINTK_ISP_AF("Error : IIRSH is incorrect");
		return -AF_ERR_IIRSH;
	}

	return 0;
}
Пример #2
0
/* Function to check paxel parameters */
int isp_af_check_paxel(void)
{
	struct af_paxel *paxel_cfg = &af_dev_configptr->config->paxel_config;
	struct af_iir *iir_cfg = &af_dev_configptr->config->iir_config;

	/* Check horizontal Count */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->hz_cnt, AF_PAXEL_HORIZONTAL_COUNT_MIN,
			     AF_PAXEL_HORIZONTAL_COUNT_MAX)) {
		DPRINTK_ISP_AF("Error : Horizontal Count is incorrect");
		return -AF_ERR_HZ_COUNT;
	}

	/*Check Vertical Count */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->vt_cnt, AF_PAXEL_VERTICAL_COUNT_MIN,
			     AF_PAXEL_VERTICAL_COUNT_MAX)) {
		DPRINTK_ISP_AF("Error : Vertical Count is incorrect");
		return -AF_ERR_VT_COUNT;
	}

	/*Check Height */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->height, AF_PAXEL_HEIGHT_MIN,
			     AF_PAXEL_HEIGHT_MAX)) {
		DPRINTK_ISP_AF("Error : Height is incorrect");
		return -AF_ERR_HEIGHT;
	}

	/*Check width */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->width, AF_PAXEL_WIDTH_MIN,
			     AF_PAXEL_WIDTH_MAX)) {
		DPRINTK_ISP_AF("Error : Width is incorrect");
		return -AF_ERR_WIDTH;
	}

	/*Check Line Increment */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->line_incr, AF_PAXEL_INCREMENT_MIN,
			     AF_PAXEL_INCREMENT_MAX)) {
		DPRINTK_ISP_AF("Error : Line Increment is incorrect");
		return -AF_ERR_INCR;
	}

	/*Check Horizontal Start */
	if ((paxel_cfg->hz_start % 2 != 0) ||
	    (paxel_cfg->hz_start < (iir_cfg->hz_start_pos + 2)) ||
	    IS_OUT_OF_BOUNDS(paxel_cfg->hz_start,
			     AF_PAXEL_HZSTART_MIN, AF_PAXEL_HZSTART_MAX)) {
		DPRINTK_ISP_AF("Error : Horizontal Start is incorrect");
		return -AF_ERR_HZ_START;
	}

	/*Check Vertical Start */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->vt_start, AF_PAXEL_VTSTART_MIN,
			     AF_PAXEL_VTSTART_MAX)) {
		DPRINTK_ISP_AF("Error : Vertical Start is incorrect");
		return -AF_ERR_VT_START;
	}
	return 0;
}
Пример #3
0
/* Function to check paxel parameters */
static int isp_af_check_params(struct isp_af_device *isp_af,
			       struct af_configuration *afconfig)
{
	struct af_paxel *paxel_cfg = &afconfig->paxel_config;
	struct af_iir *iir_cfg = &afconfig->iir_config;
	int index;

	/* Check horizontal Count */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->hz_cnt, AF_PAXEL_HORIZONTAL_COUNT_MIN,
			     AF_PAXEL_HORIZONTAL_COUNT_MAX))
		return -AF_ERR_HZ_COUNT;

	/* Check Vertical Count */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->vt_cnt, AF_PAXEL_VERTICAL_COUNT_MIN,
			     AF_PAXEL_VERTICAL_COUNT_MAX))
		return -AF_ERR_VT_COUNT;

	/* Check Height */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->height, AF_PAXEL_HEIGHT_MIN,
			     AF_PAXEL_HEIGHT_MAX))
		return -AF_ERR_HEIGHT;

	/* Check width */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->width, AF_PAXEL_WIDTH_MIN,
			     AF_PAXEL_WIDTH_MAX))
		return -AF_ERR_WIDTH;

	/* Check Line Increment */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->line_incr, AF_PAXEL_INCREMENT_MIN,
			     AF_PAXEL_INCREMENT_MAX))
		return -AF_ERR_INCR;

	/* Check Horizontal Start */
	if ((paxel_cfg->hz_start % 2 != 0) ||
	    (paxel_cfg->hz_start < (iir_cfg->hz_start_pos + 2)) ||
	    IS_OUT_OF_BOUNDS(paxel_cfg->hz_start,
			     AF_PAXEL_HZSTART_MIN, AF_PAXEL_HZSTART_MAX))
		return -AF_ERR_HZ_START;

	/* Check Vertical Start */
	if (IS_OUT_OF_BOUNDS(paxel_cfg->vt_start, AF_PAXEL_VTSTART_MIN,
			     AF_PAXEL_VTSTART_MAX))
		return -AF_ERR_VT_START;

	/* Check IIR */
	for (index = 0; index < AF_NUMBER_OF_COEF; index++) {
		if ((iir_cfg->coeff_set0[index]) > AF_COEF_MAX)
			return -AF_ERR_IIR_COEF;

		if ((iir_cfg->coeff_set1[index]) > AF_COEF_MAX)
			return -AF_ERR_IIR_COEF;
	}

	if (IS_OUT_OF_BOUNDS(iir_cfg->hz_start_pos, AF_IIRSH_MIN,
			     AF_IIRSH_MAX))
		return -AF_ERR_IIRSH;

	/* Check HMF Threshold Values */
	if (afconfig->hmf_config.threshold > AF_THRESHOLD_MAX)
		return -AF_ERR_THRESHOLD;

	return 0;
}