/** * 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; }
/* 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; }
/* 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; }