Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752363AbdLSFPY (ORCPT ); Tue, 19 Dec 2017 00:15:24 -0500 Received: from smtp.csie.ntu.edu.tw ([140.112.30.61]:41918 "EHLO smtp.csie.ntu.edu.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750968AbdLSFPW (ORCPT ); Tue, 19 Dec 2017 00:15:22 -0500 X-Google-Smtp-Source: ACJfBosGc7kB2EvhVbXt7AUet/X12YLemDe/gEfQ792I1SrzlRUIHrptFmIRA1v3LjZIXBJdvFVdTkGUo0/llHwvOQs= MIME-Version: 1.0 In-Reply-To: References: From: Chen-Yu Tsai Date: Tue, 19 Dec 2017 13:14:56 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 06/12] drm/sun4i: engine: Create an atomic_begin callback To: Maxime Ripard Cc: Daniel Vetter , David Airlie , Chen-Yu Tsai , dri-devel , linux-kernel , linux-arm-kernel , Thomas Petazzoni , Neil Armstrong , thomas@vitsch.nl Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2470 Lines: 68 On Mon, Dec 18, 2017 at 10:57 PM, Maxime Ripard wrote: > We have to implement some display engine specific behaviours in > atomic_begin. Let's add a function for that. > > Signed-off-by: Maxime Ripard > --- > drivers/gpu/drm/sun4i/sun4i_crtc.c | 6 +++++- > drivers/gpu/drm/sun4i/sunxi_engine.h | 13 +++++++++++++ > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/sun4i/sun4i_crtc.c b/drivers/gpu/drm/sun4i/sun4i_crtc.c > index 2a565325714f..f549f2874353 100644 > --- a/drivers/gpu/drm/sun4i/sun4i_crtc.c > +++ b/drivers/gpu/drm/sun4i/sun4i_crtc.c > @@ -64,6 +64,7 @@ static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc, > { > struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc); > struct drm_device *dev = crtc->dev; > + struct sunxi_engine *engine = scrtc->engine; > unsigned long flags; > > if (crtc->state->event) { > @@ -73,7 +74,10 @@ static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc, > scrtc->event = crtc->state->event; > spin_unlock_irqrestore(&dev->event_lock, flags); > crtc->state->event = NULL; > - } > + } > + > + if (engine->ops->atomic_begin) > + engine->ops->atomic_begin(engine, old_state); > } > > static void sun4i_crtc_atomic_flush(struct drm_crtc *crtc, > diff --git a/drivers/gpu/drm/sun4i/sunxi_engine.h b/drivers/gpu/drm/sun4i/sunxi_engine.h > index b810c26d78bb..ec4d54f596d4 100644 > --- a/drivers/gpu/drm/sun4i/sunxi_engine.h > +++ b/drivers/gpu/drm/sun4i/sunxi_engine.h > @@ -33,6 +33,19 @@ struct sunxi_engine_ops { > void (*apply_color_correction)(struct sunxi_engine *engine); > > /** > + * @atomic_begin: > + * > + * This callback allows to prepare our backend for an atomic ... our engine ... Otherwise, Reviewed-by: Chen-Yu Tsai > + * update. This is mirroring the > + * &drm_crtc_helper_funcs.atomic_begin callback, so any > + * documentation there applies. > + * > + * This function is optional. > + */ > + void (*atomic_begin)(struct sunxi_engine *engine, > + struct drm_crtc_state *old_state); > + > + /** > * @atomic_check: > * > * This callback allows to validate plane-update related CRTC > -- > git-series 0.9.1