[media] s5p-mfc: Allocate firmware with internal private buffer alloc function
authorMarek Szyprowski <m.szyprowski@samsung.com>
Thu, 9 Feb 2017 07:17:41 +0000 (05:17 -0200)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 5 Apr 2017 18:55:00 +0000 (15:55 -0300)
Once firmware buffer has been converted to use s5p_mfc_priv_buf structure,
it is possible to allocate it with existing s5p_mfc_alloc_priv_buf()
function. This change will help to reduce code variants in the next
patches.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Acked-by: Andrzej Hajda <a.hajda@samsung.com>
Tested-by: Smitha T Murthy <smitha.t@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c

index b0cf397..a1811ee 100644 (file)
@@ -27,6 +27,7 @@
 int s5p_mfc_alloc_firmware(struct s5p_mfc_dev *dev)
 {
        struct s5p_mfc_priv_buf *fw_buf = &dev->fw_buf;
+       int err;
 
        fw_buf->size = dev->variant->buf_size->fw;
 
@@ -35,11 +36,10 @@ int s5p_mfc_alloc_firmware(struct s5p_mfc_dev *dev)
                return -ENOMEM;
        }
 
-       fw_buf->virt = dma_alloc_coherent(dev->mem_dev[BANK1_CTX], fw_buf->size,
-                                        &fw_buf->dma, GFP_KERNEL);
-       if (!fw_buf->virt) {
+       err = s5p_mfc_alloc_priv_buf(dev, BANK1_CTX, &dev->fw_buf);
+       if (err) {
                mfc_err("Allocating bitprocessor buffer failed\n");
-               return -ENOMEM;
+               return err;
        }
 
        return 0;
@@ -92,11 +92,7 @@ int s5p_mfc_release_firmware(struct s5p_mfc_dev *dev)
 {
        /* Before calling this function one has to make sure
         * that MFC is no longer processing */
-       if (!dev->fw_buf.virt)
-               return -EINVAL;
-       dma_free_coherent(dev->mem_dev[BANK1_CTX], dev->fw_buf.size,
-                         dev->fw_buf.virt, dev->fw_buf.dma);
-       dev->fw_buf.virt = NULL;
+       s5p_mfc_release_priv_buf(dev, &dev->fw_buf);
        return 0;
 }