From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751985AbdBOQTk (ORCPT ); Wed, 15 Feb 2017 11:19:40 -0500 Received: from mail.free-electrons.com ([62.4.15.54]:46344 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751481AbdBOQTP (ORCPT ); Wed, 15 Feb 2017 11:19:15 -0500 From: Maxime Ripard To: Daniel Vetter , David Airlie , Sean Paul , Jani Nikula Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Stefan Christ , Boris Brezillon , Maxime Ripard , Xinliang Liu Subject: [PATCH v3 1/2] drm/fb-helper: Add multi buffer support for cma fbdev Date: Wed, 15 Feb 2017 17:19:08 +0100 Message-Id: <075ffb50cc16ab055b5d47b30163401bb356ab51.1487175046.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 | 9 +++++++++ drivers/gpu/drm/drm_fb_helper.c | 10 ++++++++++ 2 files changed, 19 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index ebfe8404c25f..700c8b8e57a9 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -84,6 +84,15 @@ config DRM_FBDEV_EMULATION If in doubt, say "Y". +config DRM_FBDEV_OVERALLOC + int "Overallocation of the fbdev buffer" + depends on DRM_FBDEV_EMULATION + default 100 + help + Defines the fbdev buffer overallocation in percent. Default + is 100. Typical values for double buffering will be 200, + triple buffering 300. + config DRM_LOAD_EDID_FIRMWARE bool "Allow to specify an EDID data set instead of probing for it" depends on DRM_KMS_HELPER diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index e934b541feea..c6de87abaca8 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -48,6 +48,12 @@ module_param_named(fbdev_emulation, drm_fbdev_emulation, bool, 0600); MODULE_PARM_DESC(fbdev_emulation, "Enable legacy fbdev emulation [default=true]"); +static int drm_fbdev_overalloc = CONFIG_DRM_FBDEV_OVERALLOC; +module_param(drm_fbdev_overalloc, int, 0444); +MODULE_PARM_DESC(drm_fbdev_overalloc, + "Overallocation of the fbdev buffer (%) [default=" + __MODULE_STRING(CONFIG_DRM_FBDEV_OVERALLOC) "]"); + static LIST_HEAD(kernel_fb_helper_list); static DEFINE_MUTEX(kernel_fb_helper_lock); @@ -1573,6 +1579,10 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper, sizes.fb_height = sizes.surface_height = 768; } + /* Handle our overallocation */ + sizes.surface_height *= drm_fbdev_overalloc; + sizes.surface_height /= 100; + /* push down into drivers */ ret = (*fb_helper->funcs->fb_probe)(fb_helper, &sizes); if (ret < 0) -- git-series 0.8.11 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Subject: [PATCH v3 1/2] drm/fb-helper: Add multi buffer support for cma fbdev Date: Wed, 15 Feb 2017 17:19:08 +0100 Message-ID: <075ffb50cc16ab055b5d47b30163401bb356ab51.1487175046.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 A75B46E209 for ; Wed, 15 Feb 2017 16:19:14 +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 , Sean Paul , Jani Nikula Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Maxime Ripard , Stefan Christ List-Id: dri-devel@lists.freedesktop.org RnJvbTogWGlubGlhbmcgTGl1IDx4aW5saWFuZy5saXVAbGluYXJvLm9yZz4KClRoaXMgcGF0Y2gg YWRkIGEgY29uZmlnIHRvIHN1cHBvcnQgdG8gY3JlYXRlIG11bHRpIGJ1ZmZlciBmb3IgY21hIGZi ZGV2LgpTdWNoIGFzIGRvdWJsZSBidWZmZXIgYW5kIHRyaXBsZSBidWZmZXIuCgpDbWEgZmJkZXYg aXMgY29udmllbnQgdG8gYWRkIGEgbGVnZW5jeSBmYmRldi4gQW5kIHN0aWxsIG1hbnkgQW5kcm9p ZApkZXZpY2VzIHVzZSBmYmRldiBub3cgYW5kIGF0IGxlYXN0IGRvdWJsZSBidWZmZXIgaXMgbmVl ZGVkIGZvciB0aGVzZQpBbmRyb2lkIGRldmljZXMsIHNvIHRoYXQgYSBidWZmZXIgZmxpcCBjYW4g YmUgb3BlcmF0ZWQuIEl0IHdpbGwgbmVlZApzb21lIHRpbWUgZm9yIEFuZHJvaWQgZGV2aWNlIHZl bmRvcnMgdG8gYWJvbmRvbiBsZWdlbmN5IGZiZGV2LiBTbyBtdWx0aQpidWZmZXIgZm9yIGZiZGV2 IGlzIG5lZWRlZC4KClNpZ25lZC1vZmYtYnk6IFhpbmxpYW5nIExpdSA8eGlubGlhbmcubGl1QGxp bmFyby5vcmc+CltzLmNocmlzdEBwaHl0ZWMuZGU6IFBpY2tpbmcgcGF0Y2ggZnJvbQogICAgICAg ICAgICAgICAgICAgICBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNS85LzE0LzE4OF0KU2lnbmVk LW9mZi1ieTogU3RlZmFuIENocmlzdCA8cy5jaHJpc3RAcGh5dGVjLmRlPgpTaWduZWQtb2ZmLWJ5 OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGZyZWUtZWxlY3Ryb25zLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgIHwgIDkgKysrKysrKysrCiBkcml2ZXJzL2dw dS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwgMTAgKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAx OSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggZWJmZTg0MDRjMjVm Li43MDBjOGI4ZTU3YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC04NCw2ICs4NCwxNSBAQCBjb25maWcgRFJNX0ZC REVWX0VNVUxBVElPTgogCiAJICBJZiBpbiBkb3VidCwgc2F5ICJZIi4KIAorY29uZmlnIERSTV9G QkRFVl9PVkVSQUxMT0MKKwlpbnQgIk92ZXJhbGxvY2F0aW9uIG9mIHRoZSBmYmRldiBidWZmZXIi CisJZGVwZW5kcyBvbiBEUk1fRkJERVZfRU1VTEFUSU9OCisJZGVmYXVsdCAxMDAKKwloZWxwCisJ ICBEZWZpbmVzIHRoZSBmYmRldiBidWZmZXIgb3ZlcmFsbG9jYXRpb24gaW4gcGVyY2VudC4gRGVm YXVsdAorCSAgaXMgMTAwLiBUeXBpY2FsIHZhbHVlcyBmb3IgZG91YmxlIGJ1ZmZlcmluZyB3aWxs IGJlIDIwMCwKKwkgIHRyaXBsZSBidWZmZXJpbmcgMzAwLgorCiBjb25maWcgRFJNX0xPQURfRURJ RF9GSVJNV0FSRQogCWJvb2wgIkFsbG93IHRvIHNwZWNpZnkgYW4gRURJRCBkYXRhIHNldCBpbnN0 ZWFkIG9mIHByb2JpbmcgZm9yIGl0IgogCWRlcGVuZHMgb24gRFJNX0tNU19IRUxQRVIKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2ZiX2hlbHBlci5jCmluZGV4IGU5MzRiNTQxZmVlYS4uYzZkZTg3YWJhY2E4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZmJfaGVscGVyLmMKQEAgLTQ4LDYgKzQ4LDEyIEBAIG1vZHVsZV9wYXJhbV9uYW1lZChm YmRldl9lbXVsYXRpb24sIGRybV9mYmRldl9lbXVsYXRpb24sIGJvb2wsIDA2MDApOwogTU9EVUxF X1BBUk1fREVTQyhmYmRldl9lbXVsYXRpb24sCiAJCSAiRW5hYmxlIGxlZ2FjeSBmYmRldiBlbXVs YXRpb24gW2RlZmF1bHQ9dHJ1ZV0iKTsKIAorc3RhdGljIGludCBkcm1fZmJkZXZfb3ZlcmFsbG9j ID0gQ09ORklHX0RSTV9GQkRFVl9PVkVSQUxMT0M7Cittb2R1bGVfcGFyYW0oZHJtX2ZiZGV2X292 ZXJhbGxvYywgaW50LCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoZHJtX2ZiZGV2X292ZXJhbGxv YywKKwkJICJPdmVyYWxsb2NhdGlvbiBvZiB0aGUgZmJkZXYgYnVmZmVyICglKSBbZGVmYXVsdD0i CisJCSBfX01PRFVMRV9TVFJJTkcoQ09ORklHX0RSTV9GQkRFVl9PVkVSQUxMT0MpICJdIik7CisK IHN0YXRpYyBMSVNUX0hFQUQoa2VybmVsX2ZiX2hlbHBlcl9saXN0KTsKIHN0YXRpYyBERUZJTkVf TVVURVgoa2VybmVsX2ZiX2hlbHBlcl9sb2NrKTsKIApAQCAtMTU3Myw2ICsxNTc5LDEwIEBAIHN0 YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlciwKIAkJc2l6ZXMuZmJfaGVpZ2h0ID0gc2l6ZXMuc3VyZmFjZV9oZWlnaHQg PSA3Njg7CiAJfQogCisJLyogSGFuZGxlIG91ciBvdmVyYWxsb2NhdGlvbiAqLworCXNpemVzLnN1 cmZhY2VfaGVpZ2h0ICo9IGRybV9mYmRldl9vdmVyYWxsb2M7CisJc2l6ZXMuc3VyZmFjZV9oZWln aHQgLz0gMTAwOworCiAJLyogcHVzaCBkb3duIGludG8gZHJpdmVycyAqLwogCXJldCA9ICgqZmJf aGVscGVyLT5mdW5jcy0+ZmJfcHJvYmUpKGZiX2hlbHBlciwgJnNpemVzKTsKIAlpZiAocmV0IDwg MCkKLS0gCmdpdC1zZXJpZXMgMC44LjExCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=