From patchwork Tue Dec 17 14:50:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Pietrasiewicz X-Patchwork-Id: 11297829 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0DC0C13B6 for ; Tue, 17 Dec 2019 14:52:59 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E9AE32467E for ; Tue, 17 Dec 2019 14:52:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E9AE32467E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0C1E16EA0D; Tue, 17 Dec 2019 14:52:49 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 853FB6EA05 for ; Tue, 17 Dec 2019 14:52:45 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: andrzej.p) with ESMTPSA id 41F9B292884 From: Andrzej Pietrasiewicz To: dri-devel@lists.freedesktop.org Subject: [PATCHv5 23/34] drm/komeda: Use special helper for non-afbc size checks Date: Tue, 17 Dec 2019 15:50:09 +0100 Message-Id: <20191217145020.14645-24-andrzej.p@collabora.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191217145020.14645-1-andrzej.p@collabora.com> References: <20191213173350.GJ624164@phenom.ffwll.local> <20191217145020.14645-1-andrzej.p@collabora.com> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ayan Halder , kernel@collabora.com, David Airlie , Liviu Dudau , Sandy Huang , Andrzej Pietrasiewicz , James Wang , Mihail Atanassov , Sean Paul MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Use the generic helper code. Signed-off-by: Andrzej Pietrasiewicz --- .../arm/display/komeda/komeda_framebuffer.c | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c index 9139fe5619be..d75176e24f24 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c @@ -88,42 +88,38 @@ komeda_fb_afbc_size_check(struct komeda_fb *kfb, } static int -komeda_fb_none_afbc_size_check(struct komeda_dev *mdev, +komeda_fb_none_afbc_size_check(struct drm_device *dev, const struct drm_format_info *info, struct drm_gem_object **objs, struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) { + struct komeda_dev *mdev = dev->dev_private; + struct drm_size_check check = { 0 }; struct drm_gem_object *obj; - u32 i, block_h; - u64 min_size; + u32 i; for (i = 0; i < info->num_planes; i++) { obj = objs[i]; - block_h = drm_format_info_block_height(info, i); - if ((mode_cmd->pitches[i] * block_h) % mdev->chip.bus_width) { - DRM_DEBUG_KMS("Pitch[%d]: 0x%x doesn't align to 0x%x\n", - i, mode_cmd->pitches[i], - mdev->chip.bus_width); - return -EINVAL; - } - - min_size = komeda_fb_get_pixel_addr_nofb(info, - mode_cmd->modifier[0], - mode_cmd->pitches, - mode_cmd->offsets, - obj, - 0, mode_cmd->height, i) - - to_drm_gem_cma_obj(obj)->paddr; - if (obj->size < min_size) { - DRM_DEBUG_KMS("The fb->obj[%d] size: 0x%zx lower than the minimum requirement: 0x%llx.\n", - i, obj->size, min_size); - return -EINVAL; - } + check.pitch_multiplier[i] = + drm_format_info_block_height(info, i); + + check.min_size[i] = + komeda_fb_get_pixel_addr_nofb(info, + mode_cmd->modifier[0], + mode_cmd->pitches, + mode_cmd->offsets, + obj, + 0, mode_cmd->height, i) + - to_drm_gem_cma_obj(obj)->paddr; } - return 0; + check.pitch_modulo = mdev->chip.bus_width; + check.use_pitch_multiplier = true; + check.use_min_size = true; + + return drm_gem_fb_size_check2(dev, mode_cmd, &check, objs); } struct drm_framebuffer * @@ -172,7 +168,7 @@ komeda_fb_create(struct drm_device *dev, struct drm_file *file, if (ret) goto err_cleanup; - ret = komeda_fb_none_afbc_size_check(mdev, info, objs, + ret = komeda_fb_none_afbc_size_check(dev, info, objs, file, mode_cmd); } if (ret < 0)