From patchwork Wed Nov 27 18:00:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 11264633 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 EBBB0138C for ; Wed, 27 Nov 2019 18:00:46 +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 D31C820871 for ; Wed, 27 Nov 2019 18:00:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D31C820871 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 0997C6E429; Wed, 27 Nov 2019 18:00:45 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by gabe.freedesktop.org (Postfix) with ESMTPS id E27E46E3F9 for ; Wed, 27 Nov 2019 18:00:43 +0000 (UTC) Received: by mail-wm1-x342.google.com with SMTP id a131so3749473wme.5 for ; Wed, 27 Nov 2019 10:00:43 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=BpOgvjxM4sKKd7VkKkuDj6mkq+/hG5T/j3DPRAARKwQ=; b=Omtm9RpBGlLbjv7rME7f4vLaDoH9DCyNeLPu8ZVpTL6wTZFytMDILKJPvAILvPiaKr ou6/MYAIknRo3p4J/y2HiS+90x0n1yxoqwgZLraOuVKiB9jrliFgBlZeeKa8sgxzzGDF NG7qf9uK7GE83H5zT6aWFQ4djckctKX1jKInv3J6mJ1cFBYg06hhBM9VQovIEcIFsHt7 ZojU2qjZNDzxVhX/z5n9JC740gKt2vzbsQ/y21IXAZqdXq8qlIqYpEN+2/CeLzYfrvrC JSLw4cpdErOw30DgFtGANlnjWWIJQTG4YKWdmdasb3z3nPQ2/8ivwIJFMAymnCSVC8lL /lTg== X-Gm-Message-State: APjAAAXfJQh8GB7cYGF9Jh+IebMlpERcturwt427YspI48TjsyHtftl2 Kzc16zIVoWF318yceMmMefMD+Ioy8ZI= X-Google-Smtp-Source: APXvYqz46T0HWQ8pzpwreZfkTMdj8kYk6kJTppF1wGbW+JAKUBYuyKdq15Vo2Pkn1m8UGn9tTBM/ZQ== X-Received: by 2002:a7b:c7d3:: with SMTP id z19mr5772162wmk.98.1574877642244; Wed, 27 Nov 2019 10:00:42 -0800 (PST) Received: from phenom.ffwll.local (212-51-149-96.fiber7.init7.net. [212.51.149.96]) by smtp.gmail.com with ESMTPSA id m15sm19940165wrq.97.2019.11.27.10.00.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Nov 2019 10:00:41 -0800 (PST) From: Daniel Vetter To: DRI Development Subject: [PATCH 1/3] drm/rockchip: Use drm_gem_fb_create_with_dirty Date: Wed, 27 Nov 2019 19:00:33 +0100 Message-Id: <20191127180035.416209-1-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=BpOgvjxM4sKKd7VkKkuDj6mkq+/hG5T/j3DPRAARKwQ=; b=ik1xcvFH2pBkK2xynTjF/Jfx6VAN9i/CkxI/GQzuSvouOKQr0EGI79/zxOxqLCTS/u 2b9Si/8Tuchp/hVhJ2HaAUakdjZsxwJqtlZ4mZQ4uE8luoxK4Nw9ixR36+7pVamV9Tou H7NWtUKw2WfrBQ4XhAB2MnN4lbiH6W6iZeLks= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Vetter , Andrzej Pietrasiewicz , linux-rockchip@lists.infradead.org, Daniel Vetter , linux-arm-kernel@lists.infradead.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" If rockchip would switch over to the generic fbdev setup we could grabage collect even more of all this code (all of the remaining fb handling code really). v2: Actually use _with_dirty like the patch subject promised (Andrzej) Cc: Andrzej Pietrasiewicz Signed-off-by: Daniel Vetter Cc: Sandy Huang Cc: "Heiko Stübner" Cc: linux-arm-kernel@lists.infradead.org Cc: linux-rockchip@lists.infradead.org Reviewed-by: Andrzej Pietrasiewicz --- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 54 +--------------------- 1 file changed, 1 insertion(+), 53 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c index ca01234c037c..221e72e71432 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c @@ -53,64 +53,12 @@ rockchip_fb_alloc(struct drm_device *dev, const struct drm_mode_fb_cmd2 *mode_cm return fb; } -static struct drm_framebuffer * -rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, - const struct drm_mode_fb_cmd2 *mode_cmd) -{ - const struct drm_format_info *info = drm_get_format_info(dev, - mode_cmd); - struct drm_framebuffer *fb; - struct drm_gem_object *objs[ROCKCHIP_MAX_FB_BUFFER]; - struct drm_gem_object *obj; - int num_planes = min_t(int, info->num_planes, ROCKCHIP_MAX_FB_BUFFER); - int ret; - int i; - - for (i = 0; i < num_planes; i++) { - unsigned int width = mode_cmd->width / (i ? info->hsub : 1); - unsigned int height = mode_cmd->height / (i ? info->vsub : 1); - unsigned int min_size; - - obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[i]); - if (!obj) { - DRM_DEV_ERROR(dev->dev, - "Failed to lookup GEM object\n"); - ret = -ENXIO; - goto err_gem_object_unreference; - } - - min_size = (height - 1) * mode_cmd->pitches[i] + - mode_cmd->offsets[i] + - width * info->cpp[i]; - - if (obj->size < min_size) { - drm_gem_object_put_unlocked(obj); - ret = -EINVAL; - goto err_gem_object_unreference; - } - objs[i] = obj; - } - - fb = rockchip_fb_alloc(dev, mode_cmd, objs, i); - if (IS_ERR(fb)) { - ret = PTR_ERR(fb); - goto err_gem_object_unreference; - } - - return fb; - -err_gem_object_unreference: - for (i--; i >= 0; i--) - drm_gem_object_put_unlocked(objs[i]); - return ERR_PTR(ret); -} - static const struct drm_mode_config_helper_funcs rockchip_mode_config_helpers = { .atomic_commit_tail = drm_atomic_helper_commit_tail_rpm, }; static const struct drm_mode_config_funcs rockchip_drm_mode_config_funcs = { - .fb_create = rockchip_user_fb_create, + .fb_create = drm_gem_fb_create_with_dirty, .output_poll_changed = drm_fb_helper_output_poll_changed, .atomic_check = drm_atomic_helper_check, .atomic_commit = drm_atomic_helper_commit,