From patchwork Mon Jan 22 09:25:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 125352 Delivered-To: patch@linaro.org Received: by 10.46.66.141 with SMTP id h13csp1053794ljf; Mon, 22 Jan 2018 01:25:51 -0800 (PST) X-Google-Smtp-Source: AH8x22720u2MXP4Z1cRa0bhyEwD4mkCDSfJfS/+1YlQzB0a7U9KHTEtsRs0N8Sa3TLcc4Ez9t/v8 X-Received: by 10.98.155.8 with SMTP id r8mr7830518pfd.94.1516613151219; Mon, 22 Jan 2018 01:25:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516613151; cv=none; d=google.com; s=arc-20160816; b=PoJjlnYVQZoCD5ytrogppJSdUV9I/5xGi0lB0Kagd7zh6ROa89FFKvtLvBo282CBTP RXUWTThqss8ty0PkAQ+ViCQzbXUN+Srjoia9DlyLqYcRYAbripQrqnkqvsSUUK+X4amK 5TnDpcX5vgXDqVIWEZFgi32S1+WZB4SH2PoPmcRT253SSQEEGnPmi91xxr4Ov2AjyDs1 x33UyaNXXMUTHRdMp1E+zmMAEWl4C1nzbkHSPG98QNPrxMu/9ksYER8sxLEkBcEKdPtB z+USm6h8xUU390538nZA4DhD4PMR6BR/pfNBW819d3QDHfy5wwn0ndwXUu7TTO5nDlY4 Jf3g== 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:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=sK0hhYZBu6frIxjWsIxSztsrm/mn5iRzqwOrv8e7mKY=; b=a3B/adqowe5jXchDi3pj66bi7F0vt6YFGhkx58L8Dr+PnnDyh6B8QK9xC2B9m6LjAF vv8dOFYls0Jm7H5kbuS3YRzlqck+4iq3IP17DP6QJPDUCTHF7hyGuyPIPXR5T05Ron0j /pXoubny+9kUrEXFzvebIAPrSbX59FfsWIYtr/8RI9BaCGRLJjI4nh4h1B85KGgietv1 wh6HW9wQr94hrCdqbgeKdzVexP5uMzY0zAEwRZejk5LagY/uaxBIecZAGgeVXdbsfuWd qj2M+ZSd5Zpozoz4n1ThjFGRtgtatry2uSkerFerF2B21A8Ei3MDZjrYUp9qfp89n8+R T77w== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f9-v6si3236173plm.183.2018.01.22.01.25.50; Mon, 22 Jan 2018 01:25:51 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752097AbeAVJZr (ORCPT + 28 others); Mon, 22 Jan 2018 04:25:47 -0500 Received: from mail.free-electrons.com ([62.4.15.54]:44109 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752003AbeAVJZo (ORCPT ); Mon, 22 Jan 2018 04:25:44 -0500 Received: by mail.free-electrons.com (Postfix, from userid 110) id D64DC2072C; Mon, 22 Jan 2018 10:25:41 +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 A406A20730; Mon, 22 Jan 2018 10:25:31 +0100 (CET) From: Maxime Ripard To: Chen-Yu Tsai , Maxime Ripard Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, narmstrong@baylibre.com, thomas@vitsch.nl Subject: [PATCH v4 06/13] drm/sun4i: engine: Add a VBLANK quirk callback Date: Mon, 22 Jan 2018 10:25:20 +0100 Message-Id: <7c298d43aa1500196aa5d15d7a7c0f228c7a6f3c.1516613040.git-series.maxime.ripard@free-electrons.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In some cases, the display engine needs to apply some quirks during the VBLANK event. In the Display Engine 1.0 case for example, we can only disable the frontend once the backend has been, which is at VBLANK. Let's introduce a callback that can be implemented by the various engines. Reviewed-by: Chen-Yu Tsai Signed-off-by: Maxime Ripard --- drivers/gpu/drm/sun4i/sun4i_tcon.c | 4 ++++ drivers/gpu/drm/sun4i/sunxi_engine.h | 13 +++++++++++++ 2 files changed, 17 insertions(+) -- git-series 0.9.1 diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c index e122f5b2a395..55f54b54293c 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c @@ -368,6 +368,7 @@ static irqreturn_t sun4i_tcon_handler(int irq, void *private) struct sun4i_tcon *tcon = private; struct drm_device *drm = tcon->drm; struct sun4i_crtc *scrtc = tcon->crtc; + struct sunxi_engine *engine = scrtc->engine; unsigned int status; regmap_read(tcon->regs, SUN4I_TCON_GINT0_REG, &status); @@ -385,6 +386,9 @@ static irqreturn_t sun4i_tcon_handler(int irq, void *private) SUN4I_TCON_GINT0_VBLANK_INT(1), 0); + if (engine->ops->vblank_quirk) + engine->ops->vblank_quirk(engine); + return IRQ_HANDLED; } diff --git a/drivers/gpu/drm/sun4i/sunxi_engine.h b/drivers/gpu/drm/sun4i/sunxi_engine.h index b819d4f9f02f..54c029877531 100644 --- a/drivers/gpu/drm/sun4i/sunxi_engine.h +++ b/drivers/gpu/drm/sun4i/sunxi_engine.h @@ -85,6 +85,19 @@ struct sunxi_engine_ops { * This function is optional. */ void (*disable_color_correction)(struct sunxi_engine *engine); + + /** + * @vblank_quirk: + * + * This callback is used to implement engine-specific + * behaviour part of the VBLANK event. It is run with all the + * constraints of an interrupt (can't sleep, all local + * interrupts disabled) and therefore should be as fast as + * possible. + * + * This function is optional. + */ + void (*vblank_quirk)(struct sunxi_engine *engine); }; /**