static void hist_dma_cb(void *data) { struct ispstat *hist = data; /* FIXME: The DMA engine API can't report transfer errors :-/ */ isp_reg_clr(hist->isp, OMAP3_ISP_IOMEM_HIST, ISPHIST_CNT, ISPHIST_CNT_CLEAR); omap3isp_stat_dma_isr(hist); if (hist->state != ISPSTAT_DISABLED) omap3isp_hist_dma_done(hist->isp); }
static void hist_dma_cb(int lch, u16 ch_status, void *data) { struct ispstat *hist = data; if (ch_status & ~OMAP_DMA_BLOCK_IRQ) { dev_dbg(hist->isp->dev, "hist: DMA error. status = 0x%04x\n", ch_status); omap_stop_dma(lch); hist_reset_mem(hist); atomic_set(&hist->buf_err, 1); } isp_reg_clr(hist->isp, OMAP3_ISP_IOMEM_HIST, ISPHIST_CNT, ISPHIST_CNT_CLEAR); omap3isp_stat_dma_isr(hist); if (hist->state != ISPSTAT_DISABLED) omap3isp_hist_dma_done(hist->isp); }