From patchwork Fri Apr 22 07:30:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joonyoung Shim X-Patchwork-Id: 8906681 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 5CD5ABF29F for ; Fri, 22 Apr 2016 07:31:02 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id CC3272026F for ; Fri, 22 Apr 2016 07:30:57 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id C843F20172 for ; Fri, 22 Apr 2016 07:30:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AC34D6EE35; Fri, 22 Apr 2016 07:30:53 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by gabe.freedesktop.org (Postfix) with ESMTPS id 97C116EE35 for ; Fri, 22 Apr 2016 07:30:42 +0000 (UTC) Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0O60005L9Y734590@mailout4.samsung.com> for dri-devel@lists.freedesktop.org; Fri, 22 Apr 2016 16:30:39 +0900 (KST) Received: from epcpsbgm1new.samsung.com ( [172.20.52.114]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id D5.42.04789.F13D9175; Fri, 22 Apr 2016 16:30:39 +0900 (KST) X-AuditID: cbfee691-f795a6d0000012b5-17-5719d31f09a9 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1new.samsung.com (EPCPMTA) with SMTP id B9.77.06682.F13D9175; Fri, 22 Apr 2016 16:30:39 +0900 (KST) Received: from localhost.localdomain ([10.113.63.51]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0O6000HOUY72Y580@mmp1.samsung.com>; Fri, 22 Apr 2016 16:30:39 +0900 (KST) From: Joonyoung Shim To: dri-devel@lists.freedesktop.org Subject: [PATCH 1/2] drm/exynos: support gem_prime_mmap Date: Fri, 22 Apr 2016 16:30:47 +0900 Message-id: <1461310248-28199-1-git-send-email-jy0922.shim@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrGLMWRmVeSWpSXmKPExsWyRsSkSFf+smS4wcaJ8hZXvr5ns5h0fwKL xYt7F1ksZkx+yebA4nG/+ziTR9+WVYwBTFFcNimpOZllqUX6dglcGVN23GQtuCtV8XXhCvYG xv1iXYycHBICJhJT/k5kgrDFJC7cW8/WxcjFISSwglFix6p2NpiitkfzWSESSxklVm6/yQTh fGeUODB7LzNIFZuAnsSdbcfBRokIKEv8nbiKEcRmFvCUWLFqHlCcg0NYwFzi2x9xkDCLgKrE h9tNrCA2r4C7xMNz01kglslJnDw2GWyZhMB9Nolza36zQzQISHybfIgFZI6EgKzEpgPMEPWS EgdX3GCZwCi4gJFhFaNoakFyQXFSepGpXnFibnFpXrpecn7uJkZg8J3+92ziDsb7B6wPMQpw MCrx8H5okAwXYk0sK67MPcRoCrRhIrOUaHI+MMTzSuINjc2MLExNTI2NzC3NlMR5daR/BgsJ pCeWpGanphakFsUXleakFh9iZOLglGpgXLD+0aq31V3b/7cp/jb6fafa5rLrzAR1yR8ygea8 U2N3Jc2yW7G9JTheYdu7JbtCbKyWM7il9q0Xeti4aOnxo1nHvmpl2G2Wl983o5T9cc5mRz+1 nkuRixJWJbKcdnAp+PrbbOFS7/SvOgsLYrX+vHsjtO6ISNjfTuvvHp+NpR627Zw8kfn5AyWW 4oxEQy3mouJEAMOA9OQ5AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrMLMWRmVeSWpSXmKPExsVy+t9jAV35y5LhBntuSlpc+fqezWLS/Qks Fi/uXWSxmDH5JZsDi8f97uNMHn1bVjEGMEU1MNpkpCampBYppOYl56dk5qXbKnkHxzvHm5oZ GOoaWlqYKynkJeam2iq5+AToumXmAK1SUihLzCkFCgUkFhcr6dthmhAa4qZrAdMYoesbEgTX Y2SABhLWMGZM2XGTteCuVMXXhSvYGxj3i3UxcnJICJhItD2azwphi0lcuLeerYuRi0NIYCmj xMrtN5kgnO+MEgdm72UGqWIT0JO4s+04E4gtIqAs8XfiKkYQm1nAU2LFqnlAcQ4OYQFziW9/ xEHCLAKqEh9uN4Et4BVwl3h4bjoLxDI5iZPHJrNOYORewMiwilEitSC5oDgpPdcwL7Vcrzgx t7g0L10vOT93EyM4wJ9J7WA8uMv9EKMAB6MSD69Hs2S4EGtiWXFl7iFGCQ5mJRHeeeeBQrwp iZVVqUX58UWlOanFhxhNgQ6YyCwlmpwPjL68knhDYxMzI0sjc0MLI2NzJXHex//XhQkJpCeW pGanphakFsH0MXFwSjUwLj/PsrFx/SKz4wxvK9705zzN8pp7WbjqwZbV3WoTxbiCd6bsbJCq Xfn4d6jSkVDNSTcDJc7siiotNr33Y1npCv9lLZJb02Nv7WE+57F+t98C7m5vM8ukiTP3zw+2 mSsR3Mnd+utTz1sx70075nmmv0t57jr77PpXv6LfTSs6vGPf5q9R8lFXniixFGckGmoxFxUn AgCqKs2xhgIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: sw0312.kim@samsung.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-5.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This allows exported dma-bufs to be mapped using gem_prime_mmap. Signed-off-by: Joonyoung Shim --- drivers/gpu/drm/exynos/exynos_drm_drv.c | 1 + drivers/gpu/drm/exynos/exynos_drm_gem.c | 45 +++++++++++++++++++++++---------- drivers/gpu/drm/exynos/exynos_drm_gem.h | 2 ++ 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 5344940c8a07..94d0d785fac2 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -431,6 +431,7 @@ static struct drm_driver exynos_drm_driver = { .gem_prime_import_sg_table = exynos_drm_gem_prime_import_sg_table, .gem_prime_vmap = exynos_drm_gem_prime_vmap, .gem_prime_vunmap = exynos_drm_gem_prime_vunmap, + .gem_prime_mmap = exynos_drm_gem_prime_mmap, .ioctls = exynos_ioctls, .num_ioctls = ARRAY_SIZE(exynos_ioctls), .fops = &exynos_drm_driver_fops, diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c index 6fb98f4c3544..9f688c28fa8e 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c @@ -503,22 +503,12 @@ out: } } -int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma) +static int exynos_drm_gem_mmap_obj(struct drm_gem_object *obj, + struct vm_area_struct *vma) { - struct exynos_drm_gem *exynos_gem; - struct drm_gem_object *obj; + struct exynos_drm_gem *exynos_gem = to_exynos_gem(obj); int ret; - /* set vm_area_struct. */ - ret = drm_gem_mmap(filp, vma); - if (ret < 0) { - DRM_ERROR("failed to mmap.\n"); - return ret; - } - - obj = vma->vm_private_data; - exynos_gem = to_exynos_gem(obj); - DRM_DEBUG_KMS("flags = 0x%x\n", exynos_gem->flags); /* non-cachable as default. */ @@ -543,6 +533,23 @@ err_close_vm: return ret; } +int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma) +{ + struct drm_gem_object *obj; + int ret; + + /* set vm_area_struct. */ + ret = drm_gem_mmap(filp, vma); + if (ret < 0) { + DRM_ERROR("failed to mmap.\n"); + return ret; + } + + obj = vma->vm_private_data; + + return exynos_drm_gem_mmap_obj(obj, vma); +} + /* low-level interface prime helpers */ struct sg_table *exynos_drm_gem_prime_get_sg_table(struct drm_gem_object *obj) { @@ -617,3 +624,15 @@ void exynos_drm_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr) { /* Nothing to do */ } + +int exynos_drm_gem_prime_mmap(struct drm_gem_object *obj, + struct vm_area_struct *vma) +{ + int ret; + + ret = drm_gem_mmap_obj(obj, obj->size, vma); + if (ret < 0) + return ret; + + return exynos_drm_gem_mmap_obj(obj, vma); +} diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.h b/drivers/gpu/drm/exynos/exynos_drm_gem.h index 00223052b87b..895125431227 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.h +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.h @@ -139,5 +139,7 @@ exynos_drm_gem_prime_import_sg_table(struct drm_device *dev, struct sg_table *sgt); void *exynos_drm_gem_prime_vmap(struct drm_gem_object *obj); void exynos_drm_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); +int exynos_drm_gem_prime_mmap(struct drm_gem_object *obj, + struct vm_area_struct *vma); #endif