/* preview parameters update structure */
struct preview_update {
- int feature_bit;
void (*config)(struct isp_prev_device *, const void *);
void (*enable)(struct isp_prev_device *, u8);
bool skip;
};
+/* Keep the array indexed by the OMAP3ISP_PREV_* bit number. */
static struct preview_update update_attrs[] = {
- {OMAP3ISP_PREV_LUMAENH,
+ /* OMAP3ISP_PREV_LUMAENH */ {
preview_config_luma_enhancement,
- preview_enable_luma_enhancement},
- {OMAP3ISP_PREV_INVALAW,
+ preview_enable_luma_enhancement,
+ }, /* OMAP3ISP_PREV_INVALAW */ {
NULL,
- preview_enable_invalaw},
- {OMAP3ISP_PREV_HRZ_MED,
+ preview_enable_invalaw,
+ }, /* OMAP3ISP_PREV_HRZ_MED */ {
preview_config_hmed,
- preview_enable_hmed},
- {OMAP3ISP_PREV_CFA,
+ preview_enable_hmed,
+ }, /* OMAP3ISP_PREV_CFA */ {
preview_config_cfa,
- preview_enable_cfa},
- {OMAP3ISP_PREV_CHROMA_SUPP,
+ preview_enable_cfa,
+ }, /* OMAP3ISP_PREV_CHROMA_SUPP */ {
preview_config_chroma_suppression,
- preview_enable_chroma_suppression},
- {OMAP3ISP_PREV_WB,
+ preview_enable_chroma_suppression,
+ }, /* OMAP3ISP_PREV_WB */ {
preview_config_whitebalance,
- NULL},
- {OMAP3ISP_PREV_BLKADJ,
+ NULL,
+ }, /* OMAP3ISP_PREV_BLKADJ */ {
preview_config_blkadj,
- NULL},
- {OMAP3ISP_PREV_RGB2RGB,
+ NULL,
+ }, /* OMAP3ISP_PREV_RGB2RGB */ {
preview_config_rgb_blending,
- NULL},
- {OMAP3ISP_PREV_COLOR_CONV,
+ NULL,
+ }, /* OMAP3ISP_PREV_COLOR_CONV */ {
preview_config_rgb_to_ycbcr,
- NULL},
- {OMAP3ISP_PREV_YC_LIMIT,
+ NULL,
+ }, /* OMAP3ISP_PREV_YC_LIMIT */ {
preview_config_yc_range,
- NULL},
- {OMAP3ISP_PREV_DEFECT_COR,
+ NULL,
+ }, /* OMAP3ISP_PREV_DEFECT_COR */ {
preview_config_dcor,
- preview_enable_dcor},
- {OMAP3ISP_PREV_GAMMABYPASS,
+ preview_enable_dcor,
+ }, /* OMAP3ISP_PREV_GAMMABYPASS */ {
NULL,
- preview_enable_gammabypass},
- {OMAP3ISP_PREV_DRK_FRM_CAPTURE,
+ preview_enable_gammabypass,
+ }, /* OMAP3ISP_PREV_DRK_FRM_CAPTURE */ {
NULL,
- preview_enable_drkframe_capture},
- {OMAP3ISP_PREV_DRK_FRM_SUBTRACT,
+ preview_enable_drkframe_capture,
+ }, /* OMAP3ISP_PREV_DRK_FRM_SUBTRACT */ {
NULL,
- preview_enable_drkframe},
- {OMAP3ISP_PREV_LENS_SHADING,
+ preview_enable_drkframe,
+ }, /* OMAP3ISP_PREV_LENS_SHADING */ {
preview_config_drkf_shadcomp,
- preview_enable_drkframe},
- {OMAP3ISP_PREV_NF,
+ preview_enable_drkframe,
+ }, /* OMAP3ISP_PREV_NF */ {
preview_config_noisefilter,
- preview_enable_noisefilter},
- {OMAP3ISP_PREV_GAMMA,
+ preview_enable_noisefilter,
+ }, /* OMAP3ISP_PREV_GAMMA */ {
preview_config_gammacorrn,
- NULL},
- {OMAP3ISP_PREV_CONTRAST,
+ NULL,
+ }, /* OMAP3ISP_PREV_CONTRAST */ {
preview_config_contrast,
- NULL, true},
- {OMAP3ISP_PREV_BRIGHTNESS,
+ NULL, true,
+ }, /* OMAP3ISP_PREV_BRIGHTNESS */ {
preview_config_brightness,
- NULL, true},
+ NULL, true,
+ },
};
/*
for (i = 0; i < ARRAY_SIZE(update_attrs); i++) {
attr = &update_attrs[i];
- bit = 0;
+ bit = 1 << i;
- if (attr->skip || !(cfg->update & attr->feature_bit))
+ if (attr->skip || !(cfg->update & bit))
continue;
- bit = cfg->flag & attr->feature_bit;
- if (bit) {
+ if (cfg->flag & bit) {
void *to = NULL, __user *from = NULL;
unsigned long sz = 0;
- sz = __preview_get_ptrs(params, &to, cfg, &from,
- bit);
+ sz = __preview_get_ptrs(params, &to, cfg, &from, bit);
if (to && from && sz) {
if (copy_from_user(to, from, sz)) {
rval = -EFAULT;
break;
}
}
- params->features |= attr->feature_bit;
+ params->features |= bit;
} else {
- params->features &= ~attr->feature_bit;
+ params->features &= ~bit;
}
- prev->update |= attr->feature_bit;
+ prev->update |= bit;
}
prev->shadow_update = 0;
{
struct prev_params *params = &prev->params;
struct preview_update *attr;
- int i, bit;
+ unsigned int bit;
+ unsigned int i;
void *param_ptr;
if (prev->update == 0)
for (i = 0; i < ARRAY_SIZE(update_attrs); i++) {
attr = &update_attrs[i];
+ bit = 1 << i;
- if (!(prev->update & attr->feature_bit))
+ if (!(prev->update & bit))
continue;
- bit = params->features & attr->feature_bit;
- if (bit) {
+
+ if (params->features & bit) {
if (attr->config) {
__preview_get_ptrs(params, ¶m_ptr, NULL,
NULL, bit);
if (attr->enable)
attr->enable(prev, 0);
- prev->update &= ~attr->feature_bit;
+ prev->update &= ~bit;
}
}