int fimc50_hwset_scaler(struct fimc_control *ctrl, struct fimc_scaler *sc) { u32 cfg = readl(ctrl->regs + S3C_CISCCTRL); u32 cfg_ext = readl(ctrl->regs + S3C_CIEXTEN); cfg &= ~(S3C_CISCCTRL_SCALERBYPASS | S3C_CISCCTRL_SCALEUP_H | S3C_CISCCTRL_SCALEUP_V | S3C_CISCCTRL_MAIN_V_RATIO_MASK | S3C_CISCCTRL_MAIN_H_RATIO_MASK); cfg |= (S3C_CISCCTRL_CSCR2Y_WIDE | S3C_CISCCTRL_CSCY2R_WIDE); if (sc->bypass) cfg |= S3C_CISCCTRL_SCALERBYPASS; if (sc->scaleup_h) cfg |= S3C_CISCCTRL_SCALEUP_H; if (sc->scaleup_v) cfg |= S3C_CISCCTRL_SCALEUP_V; cfg |= S3C_CISCCTRL_MAINHORRATIO((sc->main_hratio >> 6)); cfg |= S3C_CISCCTRL_MAINVERRATIO((sc->main_vratio >> 6)); writel(cfg, ctrl->regs + S3C_CISCCTRL); cfg_ext &= ~S3C_CIEXTEN_MAINHORRATIO_EXT_MASK; cfg_ext &= ~S3C_CIEXTEN_MAINVERRATIO_EXT_MASK; cfg_ext |= S3C_CIEXTEN_MAINHORRATIO_EXT(sc->main_hratio); cfg_ext |= S3C_CIEXTEN_MAINVERRATIO_EXT(sc->main_vratio); writel(cfg_ext, ctrl->regs + S3C_CIEXTEN); return 0; }
int fimc_hwset_scaler(struct fimc_control *ctrl) { struct s3c_platform_fimc *pdata = to_fimc_plat(ctrl->dev); u32 cfg = readl(ctrl->regs + S3C_CISCCTRL); u32 cfg_ext = readl(ctrl->regs + S3C_CIEXTEN); cfg &= ~(S3C_CISCCTRL_SCALERBYPASS | S3C_CISCCTRL_SCALEUP_H | S3C_CISCCTRL_SCALEUP_V | S3C_CISCCTRL_MAIN_V_RATIO_MASK | S3C_CISCCTRL_MAIN_H_RATIO_MASK); cfg |= (S3C_CISCCTRL_CSCR2Y_WIDE | S3C_CISCCTRL_CSCY2R_WIDE); cfg_ext &= ~S3C_CIEXTEN_MAINHORRATIO_EXT_MASK; cfg_ext &= ~S3C_CIEXTEN_MAINVERRATIO_EXT_MASK; if (ctrl->sc.bypass) cfg |= S3C_CISCCTRL_SCALERBYPASS; if (ctrl->sc.scaleup_h) cfg |= S3C_CISCCTRL_SCALEUP_H; if (ctrl->sc.scaleup_v) cfg |= S3C_CISCCTRL_SCALEUP_V; if (pdata->hw_ver == 0x50) { cfg |= S3C_CISCCTRL_MAINHORRATIO((ctrl->sc.main_hratio >> 6)); cfg |= S3C_CISCCTRL_MAINVERRATIO((ctrl->sc.main_vratio >> 6)); cfg_ext |= S3C_CIEXTEN_MAINHORRATIO_EXT(ctrl->sc.main_vratio); cfg_ext |= S3C_CIEXTEN_MAINVERRATIO_EXT(ctrl->sc.main_vratio); writel(cfg_ext, ctrl->regs + S3C_CIEXTEN); } else {