/* * csi2_isr_buffer - Does buffer handling at end-of-frame * when writing to memory. */ static void csi2_isr_buffer(struct iss_csi2_device *csi2) { struct iss_buffer *buffer; csi2_ctx_enable(csi2, 0, 0); buffer = omap4iss_video_buffer_next(&csi2->video_out); /* * Let video queue operation restart engine if there is an underrun * condition. */ if (buffer == NULL) return; csi2_set_outaddr(csi2, buffer->iss_addr); csi2_ctx_enable(csi2, 0, 1); }
static void ipipeif_isr_buffer(struct iss_ipipeif_device *ipipeif) { struct iss_buffer *buffer; /* The ISIF generates VD0 interrupts even when writes are disabled. * deal with it anyway). Disabling the ISIF when no buffer is available * is thus not be enough, we need to handle the situation explicitly. */ if (list_empty(&ipipeif->video_out.dmaqueue)) return; ipipeif_write_enable(ipipeif, 0); buffer = omap4iss_video_buffer_next(&ipipeif->video_out); if (buffer == NULL) return; ipipeif_set_outaddr(ipipeif, buffer->iss_addr); ipipeif_write_enable(ipipeif, 1); }