void m2m1shot_dma_addr_unmap(struct device *dev, struct m2m1shot_buffer_dma *buf, int plane_idx) { struct m2m1shot_buffer_plane_dma *plane = &buf->plane[plane_idx]; if (plane->dmabuf) ion_iovmm_unmap(plane->attachment, plane->dma_addr); else iovmm_unmap(dev, plane->dma_addr); plane->dma_addr = 0; }
void decon_free_sec_dma_buf(int plane) { struct decon_device *decon = get_decon_drvdata(0); /* 0: decon Int ID */ if (IS_ERR_VALUE(dma.dma_addr) || !dma.dma_buf) return; ion_iovmm_unmap(dma.attachment, dma.dma_addr); dma_buf_unmap_attachment(dma.attachment, dma.sg_table, DMA_TO_DEVICE); exynos_ion_sync_dmabuf_for_cpu(decon->dev, dma.dma_buf, dma.dma_buf->size, DMA_FROM_DEVICE); dma_buf_detach(dma.dma_buf, dma.attachment); memset(&dma, 0, sizeof(dma)); }