Exemple #1
0
/**
 * 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;
	}
}
Exemple #2
0
/**
 * 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);
}