From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751452AbdBBKcL (ORCPT ); Thu, 2 Feb 2017 05:32:11 -0500 Received: from mail.free-electrons.com ([62.4.15.54]:47425 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751408AbdBBKcH (ORCPT ); Thu, 2 Feb 2017 05:32:07 -0500 From: Maxime Ripard To: Daniel Vetter , David Airlie , Jani Nikula , Sean Paul Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Stefan Christ , Maxime Ripard , Xinliang Liu Subject: [PATCH v2 1/2] drm/cma-helper: Add multi buffer support for cma fbdev Date: Thu, 2 Feb 2017 11:31:56 +0100 Message-Id: <9b4f80f213b50959d168e6f22b21ee784fe26da5.1486031436.git-series.maxime.ripard@free-electrons.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xinliang Liu This patch add a config to support to create multi buffer for cma fbdev. Such as double buffer and triple buffer. Cma fbdev is convient to add a legency fbdev. And still many Android devices use fbdev now and at least double buffer is needed for these Android devices, so that a buffer flip can be operated. It will need some time for Android device vendors to abondon legency fbdev. So multi buffer for fbdev is needed. Signed-off-by: Xinliang Liu [s.christ@phytec.de: Picking patch from https://lkml.org/lkml/2015/9/14/188] Signed-off-by: Stefan Christ Signed-off-by: Maxime Ripard --- drivers/gpu/drm/Kconfig | 8 ++++++++ drivers/gpu/drm/drm_fb_cma_helper.c | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index ebfe8404c25f..2ca9bb26a4e4 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -121,6 +121,14 @@ config DRM_KMS_CMA_HELPER help Choose this if you need the KMS CMA helper functions +config DRM_CMA_FBDEV_BUFFER_NUM + int "Cma Fbdev Buffer Number" + depends on DRM_KMS_CMA_HELPER + default 1 + help + Defines the buffer number of cma fbdev. Default is one buffer. + For double buffer please set to 2 and 3 for triple buffer. + source "drivers/gpu/drm/i2c/Kconfig" source "drivers/gpu/drm/arm/Kconfig" diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c index 81b3558302b5..e3f8b9e720a0 100644 --- a/drivers/gpu/drm/drm_fb_cma_helper.c +++ b/drivers/gpu/drm/drm_fb_cma_helper.c @@ -411,6 +411,12 @@ static void drm_fbdev_cma_defio_fini(struct fb_info *fbi) kfree(fbi->fbops); } +static int fbdev_num_buffers = CONFIG_DRM_CMA_FBDEV_BUFFER_NUM; +module_param(fbdev_num_buffers, int, 0444); +MODULE_PARM_DESC(fbdev_num_buffers, + "Number of frame buffers to allocate [default=" + __MODULE_STRING(CONFIG_DRM_CMA_FBDEV_BUFFER_NUM) "]"); + /* * For use in a (struct drm_fb_helper_funcs *)->fb_probe callback function that * needs custom struct drm_framebuffer_funcs, like dirty() for deferred_io use. @@ -437,7 +443,7 @@ int drm_fbdev_cma_create_with_funcs(struct drm_fb_helper *helper, bytes_per_pixel = DIV_ROUND_UP(sizes->surface_bpp, 8); mode_cmd.width = sizes->surface_width; - mode_cmd.height = sizes->surface_height; + mode_cmd.height = sizes->surface_height * fbdev_num_buffers; mode_cmd.pitches[0] = sizes->surface_width * bytes_per_pixel; mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, sizes->surface_depth); -- git-series 0.8.11 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Subject: [PATCH v2 1/2] drm/cma-helper: Add multi buffer support for cma fbdev Date: Thu, 2 Feb 2017 11:31:56 +0100 Message-ID: <9b4f80f213b50959d168e6f22b21ee784fe26da5.1486031436.git-series.maxime.ripard@free-electrons.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 9AE136E994 for ; Thu, 2 Feb 2017 10:32:01 +0000 (UTC) In-Reply-To: In-Reply-To: References: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , David Airlie , Jani Nikula , Sean Paul Cc: Maxime Ripard , Stefan Christ , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogWGlubGlhbmcgTGl1IDx4aW5saWFuZy5saXVAbGluYXJvLm9yZz4KClRoaXMgcGF0Y2gg YWRkIGEgY29uZmlnIHRvIHN1cHBvcnQgdG8gY3JlYXRlIG11bHRpIGJ1ZmZlciBmb3IgY21hIGZi ZGV2LgpTdWNoIGFzIGRvdWJsZSBidWZmZXIgYW5kIHRyaXBsZSBidWZmZXIuCgpDbWEgZmJkZXYg aXMgY29udmllbnQgdG8gYWRkIGEgbGVnZW5jeSBmYmRldi4gQW5kIHN0aWxsIG1hbnkgQW5kcm9p ZApkZXZpY2VzIHVzZSBmYmRldiBub3cgYW5kIGF0IGxlYXN0IGRvdWJsZSBidWZmZXIgaXMgbmVl ZGVkIGZvciB0aGVzZQpBbmRyb2lkIGRldmljZXMsIHNvIHRoYXQgYSBidWZmZXIgZmxpcCBjYW4g YmUgb3BlcmF0ZWQuIEl0IHdpbGwgbmVlZApzb21lIHRpbWUgZm9yIEFuZHJvaWQgZGV2aWNlIHZl bmRvcnMgdG8gYWJvbmRvbiBsZWdlbmN5IGZiZGV2LiBTbyBtdWx0aQpidWZmZXIgZm9yIGZiZGV2 IGlzIG5lZWRlZC4KClNpZ25lZC1vZmYtYnk6IFhpbmxpYW5nIExpdSA8eGlubGlhbmcubGl1QGxp bmFyby5vcmc+CltzLmNocmlzdEBwaHl0ZWMuZGU6IFBpY2tpbmcgcGF0Y2ggZnJvbQogICAgICAg ICAgICAgICAgICAgICBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNS85LzE0LzE4OF0KU2lnbmVk LW9mZi1ieTogU3RlZmFuIENocmlzdCA8cy5jaHJpc3RAcGh5dGVjLmRlPgpTaWduZWQtb2ZmLWJ5 OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGZyZWUtZWxlY3Ryb25zLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAgICB8IDggKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jIHwgOCArKysrKysrLQogMiBmaWxlcyBjaGFuZ2Vk LCAxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCBlYmZlODQwNGMy NWYuLjJjYTliYjI2YTRlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysr IGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTEyMSw2ICsxMjEsMTQgQEAgY29uZmlnIERS TV9LTVNfQ01BX0hFTFBFUgogCWhlbHAKIAkgIENob29zZSB0aGlzIGlmIHlvdSBuZWVkIHRoZSBL TVMgQ01BIGhlbHBlciBmdW5jdGlvbnMKIAorY29uZmlnIERSTV9DTUFfRkJERVZfQlVGRkVSX05V TQorCWludCAiQ21hIEZiZGV2IEJ1ZmZlciBOdW1iZXIiCisJZGVwZW5kcyBvbiBEUk1fS01TX0NN QV9IRUxQRVIKKwlkZWZhdWx0IDEKKwloZWxwCisJICBEZWZpbmVzIHRoZSBidWZmZXIgbnVtYmVy IG9mIGNtYSBmYmRldi4gIERlZmF1bHQgaXMgb25lIGJ1ZmZlci4KKwkgIEZvciBkb3VibGUgYnVm ZmVyIHBsZWFzZSBzZXQgdG8gMiBhbmQgMyBmb3IgdHJpcGxlIGJ1ZmZlci4KKwogc291cmNlICJk cml2ZXJzL2dwdS9kcm0vaTJjL0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2Fy bS9LY29uZmlnIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuYwppbmRleCA4MWIzNTU4MzAy YjUuLmUzZjhiOWU3MjBhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFf aGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKQEAgLTQx MSw2ICs0MTEsMTIgQEAgc3RhdGljIHZvaWQgZHJtX2ZiZGV2X2NtYV9kZWZpb19maW5pKHN0cnVj dCBmYl9pbmZvICpmYmkpCiAJa2ZyZWUoZmJpLT5mYm9wcyk7CiB9CiAKK3N0YXRpYyBpbnQgZmJk ZXZfbnVtX2J1ZmZlcnMgPSBDT05GSUdfRFJNX0NNQV9GQkRFVl9CVUZGRVJfTlVNOworbW9kdWxl X3BhcmFtKGZiZGV2X251bV9idWZmZXJzLCBpbnQsIDA0NDQpOworTU9EVUxFX1BBUk1fREVTQyhm YmRldl9udW1fYnVmZmVycywKKwkJICJOdW1iZXIgb2YgZnJhbWUgYnVmZmVycyB0byBhbGxvY2F0 ZSBbZGVmYXVsdD0iCisJCSBfX01PRFVMRV9TVFJJTkcoQ09ORklHX0RSTV9DTUFfRkJERVZfQlVG RkVSX05VTSkgIl0iKTsKKwogLyoKICAqIEZvciB1c2UgaW4gYSAoc3RydWN0IGRybV9mYl9oZWxw ZXJfZnVuY3MgKiktPmZiX3Byb2JlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQKICAqIG5lZWRzIGN1 c3RvbSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLCBsaWtlIGRpcnR5KCkgZm9yIGRlZmVy cmVkX2lvIHVzZS4KQEAgLTQzNyw3ICs0NDMsNyBAQCBpbnQgZHJtX2ZiZGV2X2NtYV9jcmVhdGVf d2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCWJ5dGVzX3Blcl9waXhl bCA9IERJVl9ST1VORF9VUChzaXplcy0+c3VyZmFjZV9icHAsIDgpOwogCiAJbW9kZV9jbWQud2lk dGggPSBzaXplcy0+c3VyZmFjZV93aWR0aDsKLQltb2RlX2NtZC5oZWlnaHQgPSBzaXplcy0+c3Vy ZmFjZV9oZWlnaHQ7CisJbW9kZV9jbWQuaGVpZ2h0ID0gc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0ICog ZmJkZXZfbnVtX2J1ZmZlcnM7CiAJbW9kZV9jbWQucGl0Y2hlc1swXSA9IHNpemVzLT5zdXJmYWNl X3dpZHRoICogYnl0ZXNfcGVyX3BpeGVsOwogCW1vZGVfY21kLnBpeGVsX2Zvcm1hdCA9IGRybV9t b2RlX2xlZ2FjeV9mYl9mb3JtYXQoc2l6ZXMtPnN1cmZhY2VfYnBwLAogCQlzaXplcy0+c3VyZmFj ZV9kZXB0aCk7Ci0tIApnaXQtc2VyaWVzIDAuOC4xMQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK