示例#1
0
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;
}
示例#2
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 {