Esempio n. 1
0
static void s3c_fimc_set_output_dma_size(struct s3c_fimc_control *ctrl)
{
	struct s3c_fimc_out_frame *frame = &ctrl->out_frame;
	int ofs_h = frame->offset.y_h * 2;
	int ofs_v = frame->offset.y_v * 2;
	u32 cfg = 0;

	if (ctrl->rot90) {
		cfg |= S3C_ORGOSIZE_HORIZONTAL(frame->height - ofs_v);
		cfg |= S3C_ORGOSIZE_VERTICAL(frame->width - ofs_h);
	} else {
		cfg |= S3C_ORGOSIZE_HORIZONTAL(frame->width - ofs_h);
		cfg |= S3C_ORGOSIZE_VERTICAL(frame->height - ofs_v);
	}

	writel(cfg, ctrl->regs + S3C_ORGOSIZE);
}
int fimc_hwset_org_output_size(struct fimc_control *ctrl, u32 width, u32 height)
{
	u32 cfg = 0;

	cfg |= S3C_ORGOSIZE_HORIZONTAL(width);
	cfg |= S3C_ORGOSIZE_VERTICAL(height);

	writel(cfg, ctrl->regs + S3C_ORGOSIZE);

	return 0;
}
Esempio n. 3
0
int fimc_hwset_org_output_size(struct fimc_control *ctrl, u32 width, u32 height)
{
	struct s3c_platform_fimc *pdata = to_fimc_plat(ctrl->dev);
	u32 cfg = 0;

	cfg |= S3C_ORGOSIZE_HORIZONTAL(width);
	cfg |= S3C_ORGOSIZE_VERTICAL(height);

	writel(cfg, ctrl->regs + S3C_ORGOSIZE);

	if (pdata->hw_ver != 0x40) {
		cfg = readl(ctrl->regs + S3C_CIGCTRL);
		cfg &= ~S3C_CIGCTRL_CSC_MASK;

		if (width >= FIMC_HD_WIDTH)
			cfg |= S3C_CIGCTRL_CSC_ITU709;
		else
			cfg |= S3C_CIGCTRL_CSC_ITU601;

		writel(cfg, ctrl->regs + S3C_CIGCTRL);
	}

	return 0;
}