From patchwork Tue Sep 1 07:22:53 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joonyoung Shim X-Patchwork-Id: 7103581 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 A4621BEEC1 for ; Tue, 1 Sep 2015 07:23:02 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 85CCC20529 for ; Tue, 1 Sep 2015 07:23:01 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 071CA2052F for ; Tue, 1 Sep 2015 07:23:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1BC6B6E2CE; Tue, 1 Sep 2015 00:22:55 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 922F06E237 for ; Tue, 1 Sep 2015 00:22:53 -0700 (PDT) Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0NTZ01Y6FLU3VG50@mailout1.samsung.com> for dri-devel@lists.freedesktop.org; Tue, 01 Sep 2015 16:22:51 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [172.20.52.115]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id BB.CB.17770.B4255E55; Tue, 1 Sep 2015 16:22:51 +0900 (KST) X-AuditID: cbfee691-f79ca6d00000456a-d8-55e5524bb91b Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id 9F.9F.18629.B4255E55; Tue, 1 Sep 2015 16:22:51 +0900 (KST) Received: from localhost.localdomain ([10.252.81.123]) by mmp2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0NTZ00AOGLU2EMF0@mmp2.samsung.com>; Tue, 01 Sep 2015 16:22:50 +0900 (KST) From: Joonyoung Shim To: dri-devel@lists.freedesktop.org Subject: [PATCH 7/9] drm/exynos: cleanup exynos_user_fb_create() Date: Tue, 01 Sep 2015 16:22:53 +0900 Message-id: <1441092175-18187-7-git-send-email-jy0922.shim@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1441092175-18187-1-git-send-email-jy0922.shim@samsung.com> References: <1441092175-18187-1-git-send-email-jy0922.shim@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrPLMWRmVeSWpSXmKPExsWyRsSkWNc76GmowZNVvBZXvr5ns5h0fwKL xYt7F1ksZkx+yebA4nG/+ziTR9+WVYwBTFFcNimpOZllqUX6dglcGTemrmQtWCZcMenbIrYG xg/8XYycHBICJhK3Jj9ig7DFJC7cWw9kc3EICaxglPjbvocVpujLhu1QiVmMEse7+1ggnB+M Ev9ufGcHqWIT0JO4s+04E4gtIqAs8XfiKkYQm1nAU2LFqnlgcWEBB4l7O/exgNgsAqoSc1pm gMV5Bdwlrj76wASxTU7i5LHJYJs5BTwk7m3aAhYXAqo5eeI12GIJgfdsEq8u9DJCDBKQ+Db5 EFCCAyghK7HpADPEHEmJgytusExgFF7AyLCKUTS1ILmgOCm9yFSvODG3uDQvXS85P3cTIzBc T/97NnEH4/0D1ocYBTgYlXh4Oz4+CRViTSwrrsw9xGgKtGEis5Rocj4wKvJK4g2NzYwsTE1M jY3MLc2UxHl1pH8GCwmkJ5akZqemFqQWxReV5qQWH2Jk4uCUamBcplNyOETM736D5eeO6ULf LO+I9h/bnjNnS+EiDs8vb2JSnRpNUm+LON2yWWHduXkPd/4e5tdPpXjSWdTm/3eIdukUDngr timDk4tnW15C24y+GXtPnrGbpiHwftOPFWvjcjQT/wtr8x6be3NWzoMPZ+aWZPwVrjF78rtg gZ7Vifiw/kPv5VWVWIozEg21mIuKEwFYrk2tUgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuphkeLIzCtJLcpLzFFi42I5/e+xoK530NNQg0+dHBZXvr5ns5h0fwKL xYt7F1ksZkx+yebA4nG/+ziTR9+WVYwBTFENjDYZqYkpqUUKqXnJ+SmZeem2St7B8c7xpmYG hrqGlhbmSgp5ibmptkouPgG6bpk5QKuUFMoSc0qBQgGJxcVK+naYJoSGuOlawDRG6PqGBMH1 GBmggYQ1jBk3pq5kLVgmXDHp2yK2BsYP/F2MnBwSAiYSXzZsZ4OwxSQu3FsPZHNxCAnMYpQ4 3t3HAuH8YJT4d+M7O0gVm4CexJ1tx5lAbBEBZYm/E1cxgtjMAp4SK1bNA4sLCzhI3Nu5jwXE ZhFQlZjTMgMszivgLnH10QcmiG1yEiePTWYFsTkFPCTubdoCFhcCqjl54jXLBEbeBYwMqxgl UguSC4qT0nON8lLL9YoTc4tL89L1kvNzNzGCY+KZ9A7Gw7vcDzEKcDAq8fB2fHwSKsSaWFZc mXuIUYKDWUmE95jH01Ah3pTEyqrUovz4otKc1OJDjKZAh01klhJNzgfGa15JvKGxiZmRpZG5 oYWRsbmSOG8OO9AcgfTEktTs1NSC1CKYPiYOTqkGRgart2/Kuk/UxBQlZxgcZOhQtHh6+l6K wFyJk1OFrmvvXZDEv1y9S/91n0pKUMthrcliu52ZpOUf5vnJ86xOEtLJXdSyKXZl2YbM24wZ y3P4g94FXal+88yzjuFyidOBJR2lS2byLlwnn13bmTp73dIvl94lv6xK3S+2+sudE56T31+0 vp1yXomlOCPRUIu5qDgRAO57hXGfAgAA 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=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_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 Using exynos_drm_framebuffer_init(), redundant codes can be removed. Signed-off-by: Joonyoung Shim Reviewed-by: Gustavo Padovan --- drivers/gpu/drm/exynos/exynos_drm_fb.c | 47 ++++++++++------------------------ 1 file changed, 13 insertions(+), 34 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c index 8e5d3eb..9accc0d 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fb.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c @@ -174,57 +174,36 @@ static struct drm_framebuffer * exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, struct drm_mode_fb_cmd2 *mode_cmd) { + struct exynos_drm_gem_obj *gem_objs[MAX_FB_BUFFER]; struct drm_gem_object *obj; - struct exynos_drm_gem_obj *exynos_gem_obj; - struct exynos_drm_fb *exynos_fb; - int i, ret; - - exynos_fb = kzalloc(sizeof(*exynos_fb), GFP_KERNEL); - if (!exynos_fb) - return ERR_PTR(-ENOMEM); - - exynos_fb->buf_cnt = drm_format_num_planes(mode_cmd->pixel_format); - - DRM_DEBUG_KMS("buf_cnt = %d\n", exynos_fb->buf_cnt); + struct drm_framebuffer *fb; + int i; + int ret; - for (i = 0; i < exynos_fb->buf_cnt; i++) { + for (i = 0; i < drm_format_num_planes(mode_cmd->pixel_format); i++) { obj = drm_gem_object_lookup(dev, file_priv, - mode_cmd->handles[i]); + mode_cmd->handles[i]); if (!obj) { DRM_ERROR("failed to lookup gem object\n"); ret = -ENOENT; - exynos_fb->buf_cnt = i; goto err; } - exynos_gem_obj = to_exynos_gem_obj(obj); - exynos_fb->exynos_gem_obj[i] = exynos_gem_obj; - - ret = check_fb_gem_memory_type(dev, exynos_gem_obj); - if (ret < 0) - goto err; + gem_objs[i] = to_exynos_gem_obj(obj); } - drm_helper_mode_fill_fb_struct(&exynos_fb->fb, mode_cmd); - - ret = drm_framebuffer_init(dev, &exynos_fb->fb, &exynos_drm_fb_funcs); - if (ret) { - DRM_ERROR("failed to init framebuffer.\n"); + fb = exynos_drm_framebuffer_init(dev, mode_cmd, gem_objs, i); + if (IS_ERR(fb)) { + ret = PTR_ERR(fb); goto err; } - return &exynos_fb->fb; + return fb; err: - for (i = 0; i < exynos_fb->buf_cnt; i++) { - struct drm_gem_object *obj; + while (i--) + drm_gem_object_unreference_unlocked(&gem_objs[i]->base); - obj = &exynos_fb->exynos_gem_obj[i]->base; - if (obj) - drm_gem_object_unreference_unlocked(obj); - } - - kfree(exynos_fb); return ERR_PTR(ret); }