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; }
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; }