Received: by 10.223.185.116 with SMTP id b49csp1927608wrg; Mon, 12 Feb 2018 00:58:50 -0800 (PST) X-Google-Smtp-Source: AH8x227xJw9CygwdyzBkU2wTn0b8HnvJWUk0l5IxNJBFwbN1CTCjvGFTqFtgqRnb/ijxiwVCBYSC X-Received: by 10.101.101.84 with SMTP id a20mr8887838pgw.163.1518425930705; Mon, 12 Feb 2018 00:58:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518425930; cv=none; d=google.com; s=arc-20160816; b=c9kIfa8rqv1k5vnWAOChmwZ4eImY4PNDxnGqRCTudTxHP0Gc/V74+AtK2Wf5Ku4soK CqnCDqJtrJ3wTOkSR7ao6+Z2SIK0zpx1s/sC8IiVgRHfx4I0bg2+AwX8qDC2UEyPXHL3 bvX6f9d3k4E+0WAu/ip/Wuxhh90kYKfs52mGuWRIx6zcXVYGzqKISb9aOR8fDE+955C5 whay8vNqgCUR6vmRaD1KsQ/+PeiLUONSczON5NJqj6jWJtYWN65f0QEAcEXeXs1jG/mT XxKY+6A+bUnOjCZ+PnmbPdUwPfS974UNbHyK6jH+0xFiHtE146QCdrQs3dekYP+ZpawN Ujag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=VQM63mhndVjVcB+Vt1fiY5Kbs8/UPVCTb49kCBsL8eE=; b=vaBJpOolIvxFACICrhBLZ3gl5c2F8xPMn2lONkdtiCjZMKMqXjOxq024F5HttYjT9R cnE1jHMsnDAiVONBK2h+bkZPkU7gJujsfrTLYBWiv+CobYDHNKroqVAlfLtX6CkLJ7iG H2Gw8mgowbKYQrpS2NCNLuhiU89hGCrCVgaMoXInAJNp/8CzIO7sDjeULZ7X/glizvWh NX/WmZYk0vApCl6wGtREM7M5ZQ+mT+sCXCcDZcqNnVd+eSuln33vC4dABBzR1JcnfIM1 YLPurXSKtsRY9+Lu5rGgYt/21xGLZLYYo3aJjWKqf+7Iue43bardCTMZia3QrhrIZ7Yz YLsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=IPLAFOWQ; 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 e5-v6si3382976plb.566.2018.02.12.00.58.36; Mon, 12 Feb 2018 00:58:50 -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=IPLAFOWQ; 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 S933236AbeBLIzM (ORCPT + 99 others); Mon, 12 Feb 2018 03:55:12 -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 Received: by mail-lf0-f68.google.com with SMTP id x196so19333522lfd.12 for ; Mon, 12 Feb 2018 00:53:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=VQM63mhndVjVcB+Vt1fiY5Kbs8/UPVCTb49kCBsL8eE=; b=IPLAFOWQZkHgnXZ/ejYD+r/7ldvy21I516r4utir48jTVD/k8N8hRtlxC1Jt76aQkY UwPZI+60Fb3tRNAWWbOICauawsInoT+J33XQj/tfAjBQ/Vegf+J3rWMwUd7kp3VMyqQ0 H3WKuLAS3OUhErwkfmW+G7YVjVK0U/nT0hKDsqGxA0KfN2HbTDZAG32toUX2I8k1o9/E lt/o/jFvs2vffHqdLj4kR2QliQZFvjjJb7VsamjGKbhZD/Fo9yEZrHXw0YE5KFlfDNdo CbroB4ZsecGpb5UoGj+KjwU7gS6pao+dRhOcBmU7Y3SNujZH2IIDkC3DTorU9STgv9Ob qSSA== 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:in-reply-to :references; bh=VQM63mhndVjVcB+Vt1fiY5Kbs8/UPVCTb49kCBsL8eE=; b=Y58kT4jJ7X9afepwS1FeR1ovEngDgJ965RRFAu/naMO5+RBZlY2/SmQAlJXiQdnxoJ caG1fe6JvzCTCd12h5OkeyZF+5W/mZWl2XjlJcSEX60on5WsM6Gm8Xt1O/FyKpGWyG3T YEmnvNZLe12bqJEKtDIirBduF20NB7aqSTQZRRGTMXP9Ik9rUari1w+2XAnRRbBAbZO/ G3rwyxtykg1746AIfuOQ93GwpvRQIrpyRO8NWKt8DrkLEIkVwvE/O+V93bTMtZz7/8EZ BcnJR3PsBbcqT14NZl8qnXMSUr915EKvx67vlZ+TCZFLeGV4JoUOGpPcVAmUYlAGxJ53 YcpA== X-Gm-Message-State: APf1xPDvQWh8lBHZNAWiucY3EWJOmm7PTchcYTbmKZIDjcelUMKau3Bn 39WmYgpYpoEuCCQfN7zs3KItuA== X-Received: by 10.25.178.207 with SMTP id t76mr7210716lfk.111.1518425582513; Mon, 12 Feb 2018 00:53:02 -0800 (PST) Received: from a2k-HP-ProDesk-600-G2-SFF.kyiv.epam.com (ll-55.209.223.85.sovam.net.ua. [85.223.209.55]) by smtp.gmail.com with ESMTPSA id q77sm897403lfd.23.2018.02.12.00.53.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 12 Feb 2018 00:53:01 -0800 (PST) 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 Precedence: bulk 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