void s3c_fimc_set_effect(struct s3c_fimc_control *ctrl) { struct s3c_fimc_effect *effect = &ctrl->out_frame.effect; u32 cfg = (S3C_CIIMGEFF_IE_ENABLE | S3C_CIIMGEFF_IE_SC_AFTER); cfg |= effect->type; if (effect->type == EFFECT_ARBITRARY) { cfg |= S3C_CIIMGEFF_PAT_CB(effect->pat_cb); cfg |= S3C_CIIMGEFF_PAT_CR(effect->pat_cr); } writel(cfg, ctrl->regs + S3C_CIIMGEFF); }
void s3c_fimc_change_effect(struct s3c_fimc_control *ctrl) { struct s3c_fimc_effect *effect = &ctrl->out_frame.effect; u32 cfg = readl(ctrl->regs + S3C_CIIMGEFF); cfg &= ~S3C_CIIMGEFF_FIN_MASK; cfg |= (effect->type | S3C_CIIMGEFF_IE_ENABLE); if (effect->type == EFFECT_ARBITRARY) { cfg &= ~S3C_CIIMGEFF_PAT_CBCR_MASK; cfg |= S3C_CIIMGEFF_PAT_CB(effect->pat_cb); cfg |= S3C_CIIMGEFF_PAT_CR(effect->pat_cr); } writel(cfg, ctrl->regs + S3C_CIIMGEFF); }
int fimc_hwset_image_effect(struct fimc_control *ctrl) { u32 cfg = 0; if(ctrl->fe.ie_on){ if(ctrl->fe.ie_after_sc) cfg |= S3C_CIIMGEFF_IE_SC_AFTER; cfg |= S3C_CIIMGEFF_FIN(ctrl->fe.fin); if(ctrl->fe.fin == FIMC_EFFECT_FIN_ARBITRARY_CBCR){ cfg |= S3C_CIIMGEFF_PAT_CB(ctrl->fe.pat_cb) | S3C_CIIMGEFF_PAT_CR(ctrl->fe.pat_cr); } cfg |= S3C_CIIMGEFF_IE_ENABLE; } writel(cfg, ctrl->regs + S3C_CIIMGEFF); return 0; }