Received: by 10.223.185.116 with SMTP id b49csp3521426wrg; Mon, 19 Feb 2018 01:12:32 -0800 (PST) X-Google-Smtp-Source: AH8x2242aIm7fWhpu4QUsV26aw4u2LsgKiMElaQ80YOeK0m9orOQntrgyinWR4Vbs4ZQsXaEkxbP X-Received: by 10.99.111.130 with SMTP id k124mr3481640pgc.236.1519031552852; Mon, 19 Feb 2018 01:12:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519031552; cv=none; d=google.com; s=arc-20160816; b=pYV4haJ2GRrQkRFQ2OBU7RK1Z0CpyQMDwKWF3/4QkKxuZbRaJT6aUkjl+mnQJ617el p11cPAxLlf5+w7o+4q0EKdujDwbB3Gw22KcesZovicrRSAkxZ6Q8foV3IfLZWh0BCM/m Ywb3JNJ7mYZxJhzzMtEXSqEgk1tyvnPuBK3KbHCJ+CIwSS+Kopjb1P1RSFvL63Dijgdv +tAn2HSlp9RwQR4F3CaZsX+mGB9G+wn9X4DMBFYVd758FL/dzNwp5BFsZAQgwZIYT15N +9adhvw2yjF15BoFqo0bt9n2k+9n7mIL4ugMutBDFJ/lWpdbM6DGlKaIdIAmUYhkX6OR dLKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:from:subject:dkim-signature :arc-authentication-results; bh=ffPE+WNwFaUhB/oT3MmAOy9unn6c3aA8nwYrsrvSmCg=; b=xmat53hiEgq3V1TskJzo6rCfw25Lvv3wNhaAgJfMVojcMhXDOXcF16WPQrCZ83cb3+ 4n74o64LBs6WhF70NEAJVCVe3cxmSwkotM/NCWUKGQTudFlZ8DZTFgt3SKKzJFhbF+Bp 8uvcYJI3dJS4ZWCth/4p+HXVO+r1tloVfj3nSKy1Klj1tnWOQISsaXK24w9z0HuVi/yp 8oeeSMCuAybyWfkQRXwWuxc//tzdD/0RLo84z6Vu3MPg7G1vNHYYIHuELeo0JRy8NfoE kaus217mZwPgoPZMZP2nHWJaPXlUa0rx2GRe43EN8K7tQRzudcpdMPVbLTF491dbdkdx TOEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=aM0RoHVN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 73si4335043pfr.363.2018.02.19.01.12.18; Mon, 19 Feb 2018 01:12:32 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=aM0RoHVN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752142AbeBSJL3 (ORCPT + 99 others); Mon, 19 Feb 2018 04:11:29 -0500 Received: from mail-lf0-f66.google.com ([209.85.215.66]:35162 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751866AbeBSJL0 (ORCPT ); Mon, 19 Feb 2018 04:11:26 -0500 Received: by mail-lf0-f66.google.com with SMTP id 70so6059616lfw.2 for ; Mon, 19 Feb 2018 01:11:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=ffPE+WNwFaUhB/oT3MmAOy9unn6c3aA8nwYrsrvSmCg=; b=aM0RoHVNBReoqeq+F0JX/MaNVC0JjhLuEsWVAbIJxMehoKIFwyVRL7+uybG5AUH98c KS0A3v7FCHdzJYtMQs6bGeOyhWF6wjrBem4tVtKkiE+Z2iOGy07p4nyn1v6jEhi3E4Q9 z4ZT7N1BBXMCcGA7QYt9eiOyW2i6GyjKkCPPMMVxFHrdRdgqs8vDvNMSCTKZPezEBCvy 3K8MGxfP2VfZWpwgRT2qOMrc9B166UHS5uI06j4xLyoGStjLdkqrC1TPE6b4Fu6quQ3s x/aUKkW7vHBpZ8OJG6QqBbjpALEUR6p5D488CFX7KhZU+IcVhbJYzvcWXdjput8NsbMm u3WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=ffPE+WNwFaUhB/oT3MmAOy9unn6c3aA8nwYrsrvSmCg=; b=LcgWH7stRJ/Gi/dInlUy30qo9aclCAFmwuOMALiW6uvHKS40xU/yKRhmGi57r5vYSr Vf7VLuTc6jDKsmq3qIwhJr5z34PXKLsKjXL/a2g3GS0ihsNm0cy9TG3Do+nSqVvdM57s 8GOPfl/IHxmrAbN+Qv7ki6b+jTikQq14S9+sBaH/HS9XXHhSyMbA81mxdhFgC2/XQFRn vysKmR9+g26QlIeDYQDBzGFxmSow50zs592DjV71hnE0vrKCjvFezzLUlRqsUOqZ+ETV HtwprAhJwezf5WsnNDqUVmjGPMQ5Ymd7YXXBt1exrJkpO/esy3U+NxlYb/VaAWttnphh ZKgA== X-Gm-Message-State: APf1xPC8KyjvMToX/IlZYHY8XozkBmi9dagyRkgkChTTtRxDSEQ8Jit7 PStibxjdAwRi1EZt2qXSzdA= X-Received: by 10.25.44.16 with SMTP id s16mr2278415lfs.15.1519031485038; Mon, 19 Feb 2018 01:11:25 -0800 (PST) Received: from [10.17.182.9] (ll-54.209.223.85.sovam.net.ua. [85.223.209.54]) by smtp.gmail.com with ESMTPSA id n36sm3512519lfi.74.2018.02.19.01.11.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Feb 2018 01:11:24 -0800 (PST) Subject: Re: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support 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 References: <1518425574-32671-1-git-send-email-andr2000@gmail.com> <1518425574-32671-2-git-send-email-andr2000@gmail.com> Message-ID: <00b01a2d-ad16-e171-f52f-88fba2896386@gmail.com> Date: Mon, 19 Feb 2018 11:11:23 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <1518425574-32671-2-git-send-email-andr2000@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ping On 02/12/2018 10:52 AM, Oleksandr Andrushchenko wrote: > 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); > }; > > /**