From patchwork Tue Jan 9 10:09:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 123858 Delivered-To: patch@linaro.org Received: by 10.80.140.226 with SMTP id r31csp266843edr; Tue, 9 Jan 2018 02:10:22 -0800 (PST) X-Google-Smtp-Source: ACJfBotF4u80fIaaAJp6rtdau5Y6yuv4DtDIIHsKIioz3Y14cdo5H1MYunJ2LBENqrxhjafWK64m X-Received: by 10.101.69.137 with SMTP id o9mr11679785pgq.34.1515492622311; Tue, 09 Jan 2018 02:10:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515492622; cv=none; d=google.com; s=arc-20160816; b=s2S2AETjkSE8DxDrVvdiHCmfRuj/pRmfhc6X2WVl6Av/ResjB0ZIeuFvwSlc3I8xys YuY65OWNnLWKMHsQ1p3BIy1Pauul4kpK5JRCxehCNFQlf6TQvX26o65E6Ec1/YOkcmei ged3ykxXv65U2n9pOUCu8qTuu5I5URkD+bVYPn3NzCYBErtnR3dNFRortByX91K5DnpB QAtq4zbdtM2xxtpjnjWmpE6ruGVIU4PLg5nZ3oDpTapDxCbQmoXIQUaIbfJk03Q8IwBH H5xfE3gsXk+b1IdWhZe8sFHxUp7gRdK81taqYSjf9iwf/J1uDMcIlD2qQni1bO/9L06s Qs2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:cc:references:in-reply-to:references:in-reply-to :message-id:date:subject:to:from:delivered-to :arc-authentication-results; bh=3a0Vebsla3y528T/myqmUled7NonqDwwQKw5PdFijSQ=; b=amByuqulttoLS/+L8JJUoK7ZUOA8Z06sDw7A+dud8PXjSSPIwhmddc50fKbcaJ+s6X HRdi7VWazg6Ks7BMeU71Do6n8dPgCPHTHeMxkUwgSlD4Y8VUp7nBcY4e0eC7R98dxbQy MEMXGzXWgG0arkk131VuQJSVMFyn1bwPJFBv0RkSakTOWCnQiaefWOqRyJEX/M+q73qw JMqVI18l/lDWRIHgKO8PASxq+xtZWosocEgAAmz6Ih++WRyJdTzkaD19jmf+1OXAc+Jg 8W2y4jQo+fiUy8N+j6PjLk3hb0NNdrQonGPm3mPgdl95n44DHsTHC7SbLbHCJkhVDn68 fIsg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Return-Path: Received: from gabe.freedesktop.org (gabe.freedesktop.org. [131.252.210.177]) by mx.google.com with ESMTPS id m7si8786853pgu.354.2018.01.09.02.10.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Jan 2018 02:10:22 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) client-ip=131.252.210.177; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 225046E655; Tue, 9 Jan 2018 10:09:46 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id EF56D6E6E9 for ; Tue, 9 Jan 2018 10:09:43 +0000 (UTC) Received: by mail.free-electrons.com (Postfix, from userid 110) id 775CC20931; Tue, 9 Jan 2018 11:09:42 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.free-electrons.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from localhost (LStLambert-657-1-97-87.w90-63.abo.wanadoo.fr [90.63.216.87]) by mail.free-electrons.com (Postfix) with ESMTPSA id 9290620725; Tue, 9 Jan 2018 11:09:30 +0100 (CET) From: Maxime Ripard To: Daniel Vetter , David Airlie , Chen-Yu Tsai , Maxime Ripard Subject: [PATCH v3 05/13] drm/sun4i: engine: Add a custom crtc atomic_check Date: Tue, 9 Jan 2018 11:09:18 +0100 Message-Id: X-Mailer: git-send-email 2.14.3 In-Reply-To: References: In-Reply-To: References: Cc: Thomas Petazzoni , narmstrong@baylibre.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, thomas@vitsch.nl X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" We have some restrictions on what the planes and CRTC can provide that are tied to only one generation of display engines. For example, on the first generation, we can only have one YUV plane or one plane that uses the frontend output. Let's allow our engines to provide an atomic_check callback to validate the current configuration. Reviewed-by: Chen-Yu Tsai Reviewed-by: Neil Armstrong Signed-off-by: Maxime Ripard --- drivers/gpu/drm/sun4i/sun4i_crtc.c | 14 ++++++++++++++ drivers/gpu/drm/sun4i/sunxi_engine.h | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/gpu/drm/sun4i/sun4i_crtc.c b/drivers/gpu/drm/sun4i/sun4i_crtc.c index 5decae0069d0..2a565325714f 100644 --- a/drivers/gpu/drm/sun4i/sun4i_crtc.c +++ b/drivers/gpu/drm/sun4i/sun4i_crtc.c @@ -46,6 +46,19 @@ static struct drm_encoder *sun4i_crtc_get_encoder(struct drm_crtc *crtc) return NULL; } +static int sun4i_crtc_atomic_check(struct drm_crtc *crtc, + struct drm_crtc_state *state) +{ + struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc); + struct sunxi_engine *engine = scrtc->engine; + int ret = 0; + + if (engine && engine->ops && engine->ops->atomic_check) + ret = engine->ops->atomic_check(engine, state); + + return ret; +} + static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { @@ -125,6 +138,7 @@ static void sun4i_crtc_mode_set_nofb(struct drm_crtc *crtc) } static const struct drm_crtc_helper_funcs sun4i_crtc_helper_funcs = { + .atomic_check = sun4i_crtc_atomic_check, .atomic_begin = sun4i_crtc_atomic_begin, .atomic_flush = sun4i_crtc_atomic_flush, .atomic_enable = sun4i_crtc_atomic_enable, diff --git a/drivers/gpu/drm/sun4i/sunxi_engine.h b/drivers/gpu/drm/sun4i/sunxi_engine.h index b374e074c7c3..b819d4f9f02f 100644 --- a/drivers/gpu/drm/sun4i/sunxi_engine.h +++ b/drivers/gpu/drm/sun4i/sunxi_engine.h @@ -23,6 +23,23 @@ struct sunxi_engine; */ struct sunxi_engine_ops { /** + * @atomic_check: + * + * This callback allows to validate plane-update related CRTC + * constraints specific to engines. This is mirroring the + * &drm_crtc_helper_funcs.atomic_check callback, so any + * documentation there applies. + * + * This function is optional. + * + * RETURNS: + * + * 0 on success or a negative error code. + */ + int (*atomic_check)(struct sunxi_engine *engine, + struct drm_crtc_state *state); + + /** * @commit: * * This callback will trigger the hardware switch to commit