]> git.ipfire.org Git - people/arne_f/kernel.git/blobdiff - drivers/media/platform/s5p-mfc/s5p_mfc.c
s5p-mfc: Add release callback for memory region devs
[people/arne_f/kernel.git] / drivers / media / platform / s5p-mfc / s5p_mfc.c
index e2aac592d29f6a3be2ec81ade46a89cb7e9727ee..983aae1461beff02f35dbac2cfab0f5c00468bd1 100644 (file)
@@ -1004,6 +1004,11 @@ static int match_child(struct device *dev, void *data)
        return !strcmp(dev_name(dev), (char *)data);
 }
 
+static void s5p_mfc_memdev_release(struct device *dev)
+{
+       dma_release_declared_memory(dev);
+}
+
 static void *mfc_get_drv_data(struct platform_device *pdev);
 
 static int s5p_mfc_alloc_memdevs(struct s5p_mfc_dev *dev)
@@ -1016,6 +1021,9 @@ static int s5p_mfc_alloc_memdevs(struct s5p_mfc_dev *dev)
                mfc_err("Not enough memory\n");
                return -ENOMEM;
        }
+
+       dev_set_name(dev->mem_dev_l, "%s", "s5p-mfc-l");
+       dev->mem_dev_l->release = s5p_mfc_memdev_release;
        device_initialize(dev->mem_dev_l);
        of_property_read_u32_array(dev->plat_dev->dev.of_node,
                        "samsung,mfc-l", mem_info, 2);
@@ -1033,6 +1041,9 @@ static int s5p_mfc_alloc_memdevs(struct s5p_mfc_dev *dev)
                mfc_err("Not enough memory\n");
                return -ENOMEM;
        }
+
+       dev_set_name(dev->mem_dev_r, "%s", "s5p-mfc-r");
+       dev->mem_dev_r->release = s5p_mfc_memdev_release;
        device_initialize(dev->mem_dev_r);
        of_property_read_u32_array(dev->plat_dev->dev.of_node,
                        "samsung,mfc-r", mem_info, 2);