[media] omap3isp: stat: Store sg table in ispstat_buffer
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Thu, 2 Jan 2014 13:48:07 +0000 (10:48 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 25 May 2014 14:10:02 +0000 (11:10 -0300)
The driver stores the IOMMU mapped iovm struct pointer in the buffer
structure but only needs the iovm sg table. Store the sg table instead
to prepare the migration to the DMA API.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/platform/omap3isp/ispstat.c
drivers/media/platform/omap3isp/ispstat.h

index dba713f2a0d0256eb860dccfc4e9a7363c5f75d2..4cf7eb1866cdd10df9401b28c920faa8f8542605 100644 (file)
@@ -183,8 +183,8 @@ static void isp_stat_buf_sync_for_device(struct ispstat *stat,
        if (ISP_STAT_USES_DMAENGINE(stat))
                return;
 
-       dma_sync_sg_for_device(stat->isp->dev, buf->iovm->sgt->sgl,
-                              buf->iovm->sgt->nents, DMA_FROM_DEVICE);
+       dma_sync_sg_for_device(stat->isp->dev, buf->sgt->sgl,
+                              buf->sgt->nents, DMA_FROM_DEVICE);
 }
 
 static void isp_stat_buf_sync_for_cpu(struct ispstat *stat,
@@ -193,8 +193,8 @@ static void isp_stat_buf_sync_for_cpu(struct ispstat *stat,
        if (ISP_STAT_USES_DMAENGINE(stat))
                return;
 
-       dma_sync_sg_for_cpu(stat->isp->dev, buf->iovm->sgt->sgl,
-                           buf->iovm->sgt->nents, DMA_FROM_DEVICE);
+       dma_sync_sg_for_cpu(stat->isp->dev, buf->sgt->sgl,
+                           buf->sgt->nents, DMA_FROM_DEVICE);
 }
 
 static void isp_stat_buf_clear(struct ispstat *stat)
@@ -363,10 +363,9 @@ static void isp_stat_bufs_free(struct ispstat *stat)
                if (!ISP_STAT_USES_DMAENGINE(stat)) {
                        if (IS_ERR_OR_NULL((void *)buf->dma_addr))
                                continue;
-                       if (buf->iovm)
-                               dma_unmap_sg(isp->dev, buf->iovm->sgt->sgl,
-                                            buf->iovm->sgt->nents,
-                                            DMA_FROM_DEVICE);
+                       if (buf->sgt)
+                               dma_unmap_sg(isp->dev, buf->sgt->sgl,
+                                            buf->sgt->nents, DMA_FROM_DEVICE);
                        omap_iommu_vfree(isp->domain, isp->dev, buf->dma_addr);
                } else {
                        if (!buf->virt_addr)
@@ -374,7 +373,7 @@ static void isp_stat_bufs_free(struct ispstat *stat)
                        dma_free_coherent(stat->isp->dev, stat->buf_alloc_size,
                                          buf->virt_addr, buf->dma_addr);
                }
-               buf->iovm = NULL;
+               buf->sgt = NULL;
                buf->dma_addr = 0;
                buf->virt_addr = NULL;
                buf->empty = 1;
@@ -407,7 +406,7 @@ static int isp_stat_bufs_alloc_iommu(struct ispstat *stat,
                        DMA_FROM_DEVICE))
                return -ENOMEM;
 
-       buf->iovm = iovm;
+       buf->sgt = iovm->sgt;
        buf->virt_addr = omap_da_to_va(stat->isp->dev, buf->dma_addr);
 
        return 0;
index 8e76846da8d6bc83ba3df072ca4448bed3ff42d9..857f45edc755f1330f788dc0c78d74a6d24ec104 100644 (file)
@@ -46,7 +46,7 @@
 struct ispstat;
 
 struct ispstat_buffer {
-       struct iovm_struct *iovm;
+       const struct sg_table *sgt;
        void *virt_addr;
        dma_addr_t dma_addr;
        struct timespec ts;