static void flite_hw_set_window_offset(unsigned long flite_reg_base, struct fimc_is_frame_info *f_frame) { u32 cfg = 0; u32 hoff2, voff2; cfg = readl(flite_reg_base + FLITE_REG_CIWDOFST); cfg &= ~(FLITE_REG_CIWDOFST_HOROFF_MASK | FLITE_REG_CIWDOFST_VEROFF_MASK); cfg |= FLITE_REG_CIWDOFST_WINOFSEN | FLITE_REG_CIWDOFST_WINHOROFST(f_frame->offs_h) | FLITE_REG_CIWDOFST_WINVEROFST(f_frame->offs_v); writel(cfg, flite_reg_base + FLITE_REG_CIWDOFST); hoff2 = f_frame->o_width - f_frame->width - f_frame->offs_h; voff2 = f_frame->o_height - f_frame->height - f_frame->offs_v; cfg = FLITE_REG_CIWDOFST2_WINHOROFST2(hoff2) | FLITE_REG_CIWDOFST2_WINVEROFST2(voff2); writel(cfg, flite_reg_base + FLITE_REG_CIWDOFST2); }
void flite_hw_set_window_offset(struct flite_dev *dev) { u32 cfg = 0; u32 hoff2, voff2; struct flite_frame *f_frame = &dev->s_frame; cfg = readl(dev->regs + FLITE_REG_CIWDOFST); cfg &= ~(FLITE_REG_CIWDOFST_HOROFF_MASK | FLITE_REG_CIWDOFST_VEROFF_MASK); cfg |= FLITE_REG_CIWDOFST_WINOFSEN | FLITE_REG_CIWDOFST_WINHOROFST(f_frame->offs_h) | FLITE_REG_CIWDOFST_WINVEROFST(f_frame->offs_v); writel(cfg, dev->regs + FLITE_REG_CIWDOFST); hoff2 = f_frame->o_width - f_frame->width - f_frame->offs_h; voff2 = f_frame->o_height - f_frame->height - f_frame->offs_v; cfg = FLITE_REG_CIWDOFST2_WINHOROFST2(hoff2) | FLITE_REG_CIWDOFST2_WINVEROFST2(voff2); writel(cfg, dev->regs + FLITE_REG_CIWDOFST2); }
static void flite_hw_set_window_offset(u32 __iomem *base_reg, struct fimc_is_image *image) { u32 cfg = 0; u32 hoff2, voff2; BUG_ON(!image); cfg = readl(base_reg + TO_WORD_OFFSET(FLITE_REG_CIWDOFST)); cfg &= ~(FLITE_REG_CIWDOFST_HOROFF_MASK | FLITE_REG_CIWDOFST_VEROFF_MASK); cfg |= FLITE_REG_CIWDOFST_WINOFSEN | FLITE_REG_CIWDOFST_WINHOROFST(image->window.offs_h) | FLITE_REG_CIWDOFST_WINVEROFST(image->window.offs_v); writel(cfg, base_reg + TO_WORD_OFFSET(FLITE_REG_CIWDOFST)); hoff2 = image->window.o_width - image->window.width - image->window.offs_h; voff2 = image->window.o_height - image->window.height - image->window.offs_v; cfg = FLITE_REG_CIWDOFST2_WINHOROFST2(hoff2) | FLITE_REG_CIWDOFST2_WINVEROFST2(voff2); writel(cfg, base_reg + TO_WORD_OFFSET(FLITE_REG_CIWDOFST2)); }