[PATCH RFC 039/111] staging: etnaviv: move msm_gem_import() etc to etnaviv_gem_prime.c

Lucas Stach l.stach at pengutronix.de
Thu Apr 2 08:29:41 PDT 2015


From: Russell King <rmk+kernel at arm.linux.org.uk>

Move the prime import code out into etnaviv_gem_prime.c, which keeps
all this functionality together.

Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
---
 drivers/staging/etnaviv/etnaviv_gem.c       | 55 -----------------------------
 drivers/staging/etnaviv/etnaviv_gem_prime.c | 55 +++++++++++++++++++++++++++++
 2 files changed, 55 insertions(+), 55 deletions(-)

diff --git a/drivers/staging/etnaviv/etnaviv_gem.c b/drivers/staging/etnaviv/etnaviv_gem.c
index 185cd1702b2e..1cd5c6bc2532 100644
--- a/drivers/staging/etnaviv/etnaviv_gem.c
+++ b/drivers/staging/etnaviv/etnaviv_gem.c
@@ -17,7 +17,6 @@
 
 #include <linux/spinlock.h>
 #include <linux/shmem_fs.h>
-#include <linux/dma-buf.h>
 
 #include "etnaviv_drv.h"
 #include "etnaviv_gem.h"
@@ -702,57 +701,3 @@ int etnaviv_gem_new_private(struct drm_device *dev, size_t size, uint32_t flags,
 
 	return 0;
 }
-
-static void etnaviv_gem_prime_release(struct etnaviv_gem_object *etnaviv_obj)
-{
-	if (etnaviv_obj->vaddr)
-		dma_buf_vunmap(etnaviv_obj->base.import_attach->dmabuf,
-			       etnaviv_obj->vaddr);
-
-	/* Don't drop the pages for imported dmabuf, as they are not
-	 * ours, just free the array we allocated:
-	 */
-	if (etnaviv_obj->pages)
-		drm_free_large(etnaviv_obj->pages);
-
-	drm_prime_gem_destroy(&etnaviv_obj->base, etnaviv_obj->sgt);
-}
-
-static const struct etnaviv_gem_ops etnaviv_gem_prime_ops = {
-	.release = etnaviv_gem_prime_release,
-};
-
-struct drm_gem_object *msm_gem_import(struct drm_device *dev,
-		uint32_t size, struct sg_table *sgt)
-{
-	struct etnaviv_gem_object *etnaviv_obj;
-	int ret, npages;
-
-	size = PAGE_ALIGN(size);
-
-	ret = etnaviv_gem_new_private(dev, size, ETNA_BO_WC, &etnaviv_obj);
-	if (ret < 0)
-		return ERR_PTR(ret);
-
-	npages = size / PAGE_SIZE;
-
-	etnaviv_obj->ops = &etnaviv_gem_prime_ops;
-	etnaviv_obj->sgt = sgt;
-	etnaviv_obj->pages = drm_malloc_ab(npages, sizeof(struct page *));
-	if (!etnaviv_obj->pages) {
-		ret = -ENOMEM;
-		goto fail;
-	}
-
-	ret = drm_prime_sg_to_page_addr_arrays(sgt, etnaviv_obj->pages,
-					       NULL, npages);
-	if (ret)
-		goto fail;
-
-	return &etnaviv_obj->base;
-
-fail:
-	drm_gem_object_unreference_unlocked(&etnaviv_obj->base);
-
-	return ERR_PTR(ret);
-}
diff --git a/drivers/staging/etnaviv/etnaviv_gem_prime.c b/drivers/staging/etnaviv/etnaviv_gem_prime.c
index 9c152b5640bc..4cf9e043c604 100644
--- a/drivers/staging/etnaviv/etnaviv_gem_prime.c
+++ b/drivers/staging/etnaviv/etnaviv_gem_prime.c
@@ -15,6 +15,7 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <linux/dma-buf.h>
 #include "etnaviv_drv.h"
 #include "etnaviv_gem.h"
 
@@ -56,3 +57,57 @@ void msm_gem_prime_unpin(struct drm_gem_object *obj)
 	if (!obj->import_attach)
 		msm_gem_put_pages(obj);
 }
+
+static void etnaviv_gem_prime_release(struct etnaviv_gem_object *etnaviv_obj)
+{
+	if (etnaviv_obj->vaddr)
+		dma_buf_vunmap(etnaviv_obj->base.import_attach->dmabuf,
+			       etnaviv_obj->vaddr);
+
+	/* Don't drop the pages for imported dmabuf, as they are not
+	 * ours, just free the array we allocated:
+	 */
+	if (etnaviv_obj->pages)
+		drm_free_large(etnaviv_obj->pages);
+
+	drm_prime_gem_destroy(&etnaviv_obj->base, etnaviv_obj->sgt);
+}
+
+static const struct etnaviv_gem_ops etnaviv_gem_prime_ops = {
+	.release = etnaviv_gem_prime_release,
+};
+
+struct drm_gem_object *msm_gem_import(struct drm_device *dev,
+		uint32_t size, struct sg_table *sgt)
+{
+	struct etnaviv_gem_object *etnaviv_obj;
+	int ret, npages;
+
+	size = PAGE_ALIGN(size);
+
+	ret = etnaviv_gem_new_private(dev, size, ETNA_BO_WC, &etnaviv_obj);
+	if (ret < 0)
+		return ERR_PTR(ret);
+
+	npages = size / PAGE_SIZE;
+
+	etnaviv_obj->ops = &etnaviv_gem_prime_ops;
+	etnaviv_obj->sgt = sgt;
+	etnaviv_obj->pages = drm_malloc_ab(npages, sizeof(struct page *));
+	if (!etnaviv_obj->pages) {
+		ret = -ENOMEM;
+		goto fail;
+	}
+
+	ret = drm_prime_sg_to_page_addr_arrays(sgt, etnaviv_obj->pages,
+					       NULL, npages);
+	if (ret)
+		goto fail;
+
+	return &etnaviv_obj->base;
+
+fail:
+	drm_gem_object_unreference_unlocked(&etnaviv_obj->base);
+
+	return ERR_PTR(ret);
+}
-- 
2.1.4



More information about the dri-devel mailing list