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