From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support Date: Mon, 12 Feb 2018 10:52:51 +0200 Message-ID: <1518425574-32671-2-git-send-email-andr2000@gmail.com> References: <1518425574-32671-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8FE3D6E0C0 for ; Mon, 12 Feb 2018 08:53:04 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id 37so518810lfs.7 for ; Mon, 12 Feb 2018 00:53:04 -0800 (PST) In-Reply-To: <1518425574-32671-1-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: airlied@linux.ie, daniel.vetter@intel.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKSWYgc2ltcGxlX2ttc19oZWxwZXIgYmFzZWQgZHJpdmVyIG5lZWRzIHRvIHdvcmsg d2l0aCB2YmxhbmtzLAp0aGVuIGl0IGhhcyB0byBwcm92aWRlIGRybV9kcml2ZXIue2VuYWJsZXxk aXNhYmxlfV92YmxhbmsgY2FsbGJhY2tzLApiZWNhdXNlIGRybV9zaW1wbGVfa21zX2hlbHBlci5k cm1fY3J0Y19mdW5jcyBkb2VzIG5vdCBwcm92aWRlIGFueS4KQXQgdGhlIHNhbWUgdGltZSBkcm1f ZHJpdmVyLntlbmFibGV8ZGlzYWJsZX1fdmJsYW5rIGNhbGxiYWNrcwphcmUgbWFya2VkIGFzIGRl cHJlY2F0ZWQgYW5kIHNob3VsZG4ndCBiZSB1c2VkIGJ5IG5ldyBkcml2ZXJzLgoKRml4IHRoaXMg YnkgZXh0ZW5kaW5nIGRybV9zaW1wbGVfa21zX2hlbHBlci5kcm1fY3J0Y19mdW5jcwp0byBwcm92 aWRlIHRoZSBtaXNzaW5nIGNhbGxiYWNrcy4KClNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRy dXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMgfCAyNCArKysrKysrKysrKysrKysrKysr KysrKysKIGluY2x1ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oICAgICB8IDE4ICsrKysr KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jCmluZGV4IDlkM2Y2YjcwODEyYy4uOWNhOGE0 YTU5Yjc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVy LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jCkBAIC03Nyw2 ICs3NywyOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBkcm1f c2ltcGxlX2ttc19jcnRjX2hlbHBlcl9mdW5jcyA9IHsKIAkuYXRvbWljX2Rpc2FibGUgPSBkcm1f c2ltcGxlX2ttc19jcnRjX2Rpc2FibGUsCiB9OwogCitzdGF0aWMgaW50IGRybV9zaW1wbGVfa21z X2NydGNfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRy bV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlOworCisJcGlwZSA9IGNvbnRhaW5lcl9vZihjcnRj LCBzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUsIGNydGMpOworCWlmICghcGlwZS0+ZnVu Y3MgfHwgIXBpcGUtPmZ1bmNzLT5lbmFibGVfdmJsYW5rKQorCQlyZXR1cm4gMDsKKworCXJldHVy biBwaXBlLT5mdW5jcy0+ZW5hYmxlX3ZibGFuayhwaXBlKTsKK30KKworc3RhdGljIHZvaWQgZHJt X3NpbXBsZV9rbXNfY3J0Y19kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7 CisJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlOworCisJcGlwZSA9IGNvbnRh aW5lcl9vZihjcnRjLCBzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUsIGNydGMpOworCWlm ICghcGlwZS0+ZnVuY3MgfHwgIXBpcGUtPmZ1bmNzLT5kaXNhYmxlX3ZibGFuaykKKwkJcmV0dXJu OworCisJcGlwZS0+ZnVuY3MtPmRpc2FibGVfdmJsYW5rKHBpcGUpOworfQorCiBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGRybV9zaW1wbGVfa21zX2NydGNfZnVuY3MgPSB7CiAJ LnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKIAkuZGVzdHJveSA9IGRybV9j cnRjX2NsZWFudXAsCkBAIC04NCw2ICsxMDYsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9j cnRjX2Z1bmNzIGRybV9zaW1wbGVfa21zX2NydGNfZnVuY3MgPSB7CiAJLnBhZ2VfZmxpcCA9IGRy bV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9taWNfZGVzdHJveV9z dGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKKwkuZW5hYmxlX3Zi bGFuayA9IGRybV9zaW1wbGVfa21zX2NydGNfZW5hYmxlX3ZibGFuaywKKwkuZGlzYWJsZV92Ymxh bmsgPSBkcm1fc2ltcGxlX2ttc19jcnRjX2Rpc2FibGVfdmJsYW5rLAogfTsKIAogc3RhdGljIGlu dCBkcm1fc2ltcGxlX2ttc19wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaCBiL2lu Y2x1ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oCmluZGV4IDZkOWFkYmI0NjI5My4uNzk1 Njc4MjZiMDk5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIu aAorKysgYi9pbmNsdWRlL2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaApAQCAtOTMsNiArOTMs MjQgQEAgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIHsKIAkgKi8KIAl2b2lk ICgqY2xlYW51cF9mYikoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAogCQkJ ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOworCisJLyoqCisJICogQGVu YWJsZV92Ymxhbms6CisJICoKKwkgKiBPcHRpb25hbCwgY2FsbGVkIGJ5ICZkcm1fY3J0Y19mdW5j cy5lbmFibGVfdmJsYW5rLiBQbGVhc2UgcmVhZAorCSAqIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0 aGUgJmRybV9jcnRjX2Z1bmNzLmVuYWJsZV92YmxhbmsgaG9vayBmb3IKKwkgKiBtb3JlIGRldGFp bHMuCisJICovCisJaW50ICgqZW5hYmxlX3ZibGFuaykoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxh eV9waXBlICpwaXBlKTsKKworCS8qKgorCSAqIEBkaXNhYmxlX3ZibGFuazoKKwkgKgorCSAqIE9w dGlvbmFsLCBjYWxsZWQgYnkgJmRybV9jcnRjX2Z1bmNzLmRpc2FibGVfdmJsYW5rLiBQbGVhc2Ug cmVhZAorCSAqIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgJmRybV9jcnRjX2Z1bmNzLmRpc2Fi bGVfdmJsYW5rIGhvb2sgZm9yCisJICogbW9yZSBkZXRhaWxzLgorCSAqLworCXZvaWQgKCpkaXNh YmxlX3ZibGFuaykoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKTsKIH07CiAK IC8qKgotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933239AbeBLIzN (ORCPT ); Mon, 12 Feb 2018 03:55:13 -0500 Received: from mail-lf0-f68.google.com ([209.85.215.68]:45332 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933109AbeBLIxE (ORCPT ); Mon, 12 Feb 2018 03:53:04 -0500 X-Google-Smtp-Source: AH8x2259uCSaUUa18sk9KqsN0As3a3OWUmtBiV8pZcvwDCuPvRjGIDyYWNuOCQjYKuXj8fgnwbWUhw== From: Oleksandr Andrushchenko To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: daniel.vetter@intel.com, gustavo@padovan.org, airlied@linux.ie, seanpaul@chromium.org, Oleksandr Andrushchenko Subject: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support Date: Mon, 12 Feb 2018 10:52:51 +0200 Message-Id: <1518425574-32671-2-git-send-email-andr2000@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1518425574-32671-1-git-send-email-andr2000@gmail.com> References: <1518425574-32671-1-git-send-email-andr2000@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Oleksandr Andrushchenko If simple_kms_helper based driver needs to work with vblanks, then it has to provide drm_driver.{enable|disable}_vblank callbacks, because drm_simple_kms_helper.drm_crtc_funcs does not provide any. At the same time drm_driver.{enable|disable}_vblank callbacks are marked as deprecated and shouldn't be used by new drivers. Fix this by extending drm_simple_kms_helper.drm_crtc_funcs to provide the missing callbacks. Signed-off-by: Oleksandr Andrushchenko --- drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++ include/drm/drm_simple_kms_helper.h | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c index 9d3f6b70812c..9ca8a4a59b74 100644 --- a/drivers/gpu/drm/drm_simple_kms_helper.c +++ b/drivers/gpu/drm/drm_simple_kms_helper.c @@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = { .atomic_disable = drm_simple_kms_crtc_disable, }; +static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc) +{ + struct drm_simple_display_pipe *pipe; + + pipe = container_of(crtc, struct drm_simple_display_pipe, crtc); + if (!pipe->funcs || !pipe->funcs->enable_vblank) + return 0; + + return pipe->funcs->enable_vblank(pipe); +} + +static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc) +{ + struct drm_simple_display_pipe *pipe; + + pipe = container_of(crtc, struct drm_simple_display_pipe, crtc); + if (!pipe->funcs || !pipe->funcs->disable_vblank) + return; + + pipe->funcs->disable_vblank(pipe); +} + static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = { .reset = drm_atomic_helper_crtc_reset, .destroy = drm_crtc_cleanup, @@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = { .page_flip = drm_atomic_helper_page_flip, .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, + .enable_vblank = drm_simple_kms_crtc_enable_vblank, + .disable_vblank = drm_simple_kms_crtc_disable_vblank, }; static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane, diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h index 6d9adbb46293..79567826b099 100644 --- a/include/drm/drm_simple_kms_helper.h +++ b/include/drm/drm_simple_kms_helper.h @@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs { */ void (*cleanup_fb)(struct drm_simple_display_pipe *pipe, struct drm_plane_state *plane_state); + + /** + * @enable_vblank: + * + * Optional, called by &drm_crtc_funcs.enable_vblank. Please read + * the documentation for the &drm_crtc_funcs.enable_vblank hook for + * more details. + */ + int (*enable_vblank)(struct drm_simple_display_pipe *pipe); + + /** + * @disable_vblank: + * + * Optional, called by &drm_crtc_funcs.disable_vblank. Please read + * the documentation for the &drm_crtc_funcs.disable_vblank hook for + * more details. + */ + void (*disable_vblank)(struct drm_simple_display_pipe *pipe); }; /** -- 2.7.4