/** * isph3a_aewb_buf_process - Process H3A AEWB buffer. */ int isph3a_aewb_buf_process(struct isp_h3a_device *isp_h3a) { isph3a_update_wb(isp_h3a); if (likely(!isp_h3a->buf_err && isp_h3a->aewb_config_local.aewb_enable)) { int ret; ret = ispstat_buf_queue(&isp_h3a->stat); isp_h3a->buf_next = ispstat_buf_next(&isp_h3a->stat); return ret; } else { isp_h3a->buf_err = 0; return -1; } }
/** * isph3a_aewb_isr - Callback from ISP driver for H3A AEWB interrupt. * @status: IRQ0STATUS in case of MMU error, 0 for H3A interrupt. * @arg1: Not used as of now. * @arg2: Not used as of now. */ void isph3a_aewb_isr(struct isp_h3a_device *isp_h3a) { unsigned long irqflags; struct ispstat_buffer *buf; buf = ispstat_buf_next(&isp_h3a->stat); isp_reg_writel(isp_h3a->dev, buf->iommu_addr, OMAP3_ISP_IOMEM_H3A, ISPH3A_AEWBUFST); spin_lock_irqsave(isp_h3a->lock, irqflags); isph3a_aewb_update_regs(isp_h3a); spin_unlock_irqrestore(isp_h3a->lock, irqflags); isph3a_update_wb(isp_h3a); }