All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ander Conselvan De Oliveira <conselvan2@gmail.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 2/6] drm/atomic: pass old crtc state to atomic_begin/flush.
Date: Thu, 23 Jul 2015 15:37:28 +0300	[thread overview]
Message-ID: <1437655048.3604.11.camel@gmail.com> (raw)
In-Reply-To: <1437478142-416-3-git-send-email-maarten.lankhorst@linux.intel.com>

Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com>

On Tue, 2015-07-21 at 13:28 +0200, Maarten Lankhorst wrote:
> In intel it's useful to keep track of some state changes with old
> crtc state vs new state, for example to disable initial planes or
> when a modeset's prevented during fastboot.
> 
> Cc: dri-devel@lists.freedesktop.org
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c |  6 ++++--
>  drivers/gpu/drm/drm_atomic_helper.c            |  8 ++++----
>  drivers/gpu/drm/drm_plane_helper.c             |  4 ++--
>  drivers/gpu/drm/i915/intel_display.c           | 10 ++++++----
>  drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c       |  6 ++++--
>  drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c       |  6 ++++--
>  drivers/gpu/drm/rcar-du/rcar_du_crtc.c         |  6 ++++--
>  drivers/gpu/drm/sti/sti_drm_crtc.c             |  6 ++++--
>  drivers/gpu/drm/tegra/dc.c                     |  6 ++++--
>  include/drm/drm_crtc_helper.h                  |  6 ++++--
>  10 files changed, 40 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c 
> b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
> index f69b92535505..8b8fe3762ca9 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
> @@ -239,7 +239,8 @@ static int atmel_hlcdc_crtc_atomic_check(struct 
> drm_crtc *c,
>  	return atmel_hlcdc_plane_prepare_disc_area(s);
>  }
>  
> -static void atmel_hlcdc_crtc_atomic_begin(struct drm_crtc *c)
> +static void atmel_hlcdc_crtc_atomic_begin(struct drm_crtc *c,
> +					  struct drm_crtc_state 
> *old_s)
>  {
>  	struct atmel_hlcdc_crtc *crtc = 
> drm_crtc_to_atmel_hlcdc_crtc(c);
>  
> @@ -253,7 +254,8 @@ static void atmel_hlcdc_crtc_atomic_begin(struct 
> drm_crtc *c)
>  	}
>  }
>  
> -static void atmel_hlcdc_crtc_atomic_flush(struct drm_crtc *crtc)
> +static void atmel_hlcdc_crtc_atomic_flush(struct drm_crtc *crtc,
> +					  struct drm_crtc_state 
> *old_s)
>  {
>  	/* TODO: write common plane control register if available */
>  }
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
> b/drivers/gpu/drm/drm_atomic_helper.c
> index ac6601071414..4a48d76c4fb1 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -1170,7 +1170,7 @@ void drm_atomic_helper_commit_planes(struct 
> drm_device *dev,
>  		if (!funcs || !funcs->atomic_begin)
>  			continue;
>  
> -		funcs->atomic_begin(crtc);
> +		funcs->atomic_begin(crtc, old_crtc_state);
>  	}
>  
>  	for_each_plane_in_state(old_state, plane, old_plane_state, 
> i) {
> @@ -1200,7 +1200,7 @@ void drm_atomic_helper_commit_planes(struct 
> drm_device *dev,
>  		if (!funcs || !funcs->atomic_flush)
>  			continue;
>  
> -		funcs->atomic_flush(crtc);
> +		funcs->atomic_flush(crtc, old_crtc_state);
>  	}
>  }
>  EXPORT_SYMBOL(drm_atomic_helper_commit_planes);
> @@ -1236,7 +1236,7 @@ drm_atomic_helper_commit_planes_on_crtc(struct 
> drm_crtc_state *old_crtc_state)
>  
>  	crtc_funcs = crtc->helper_private;
>  	if (crtc_funcs && crtc_funcs->atomic_begin)
> -		crtc_funcs->atomic_begin(crtc);
> +		crtc_funcs->atomic_begin(crtc, old_crtc_state);
>  
>  	drm_for_each_plane_mask(plane, crtc->dev, plane_mask) {
>  		struct drm_plane_state *old_plane_state =
> @@ -1259,7 +1259,7 @@ drm_atomic_helper_commit_planes_on_crtc(struct 
> drm_crtc_state *old_crtc_state)
>  	}
>  
>  	if (crtc_funcs && crtc_funcs->atomic_flush)
> -		crtc_funcs->atomic_flush(crtc);
> +		crtc_funcs->atomic_flush(crtc, old_crtc_state);
>  }
>  EXPORT_SYMBOL(drm_atomic_helper_commit_planes_on_crtc);
>  
> diff --git a/drivers/gpu/drm/drm_plane_helper.c 
> b/drivers/gpu/drm/drm_plane_helper.c
> index 03b7afe455e6..cb5dab4c4337 100644
> --- a/drivers/gpu/drm/drm_plane_helper.c
> +++ b/drivers/gpu/drm/drm_plane_helper.c
> @@ -436,7 +436,7 @@ int drm_plane_helper_commit(struct drm_plane 
> *plane,
>  
>  	for (i = 0; i < 2; i++) {
>  		if (crtc_funcs[i] && crtc_funcs[i]->atomic_begin)
> -			crtc_funcs[i]->atomic_begin(crtc[i]);
> +			crtc_funcs[i]->atomic_begin(crtc[i], crtc[i]
> ->state);
>  	}
>  
>  	/*
> @@ -451,7 +451,7 @@ int drm_plane_helper_commit(struct drm_plane 
> *plane,
>  
>  	for (i = 0; i < 2; i++) {
>  		if (crtc_funcs[i] && crtc_funcs[i]->atomic_flush)
> -			crtc_funcs[i]->atomic_flush(crtc[i]);
> +			crtc_funcs[i]->atomic_flush(crtc[i], crtc[i]
> ->state);
>  	}
>  
>  	/*
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index 671ca2820f82..def9444eeae2 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -102,8 +102,8 @@ static void vlv_prepare_pll(struct intel_crtc 
> *crtc,
>  			    const struct intel_crtc_state 
> *pipe_config);
>  static void chv_prepare_pll(struct intel_crtc *crtc,
>  			    const struct intel_crtc_state 
> *pipe_config);
> -static void intel_begin_crtc_commit(struct drm_crtc *crtc);
> -static void intel_finish_crtc_commit(struct drm_crtc *crtc);
> +static void intel_begin_crtc_commit(struct drm_crtc *, struct 
> drm_crtc_state *);
> +static void intel_finish_crtc_commit(struct drm_crtc *, struct 
> drm_crtc_state *);
>  static void skl_init_scalers(struct drm_device *dev, struct 
> intel_crtc *intel_crtc,
>  	struct intel_crtc_state *crtc_state);
>  static int i9xx_get_refclk(const struct intel_crtc_state 
> *crtc_state,
> @@ -13440,7 +13440,8 @@ intel_disable_primary_plane(struct drm_plane 
> *plane,
>  	dev_priv->display.update_primary_plane(crtc, NULL, 0, 0);
>  }
>  
> -static void intel_begin_crtc_commit(struct drm_crtc *crtc)
> +static void intel_begin_crtc_commit(struct drm_crtc *crtc,
> +				    struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct drm_device *dev = crtc->dev;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> @@ -13456,7 +13457,8 @@ static void intel_begin_crtc_commit(struct 
> drm_crtc *crtc)
>  		skl_detach_scalers(intel_crtc);
>  }
>  
> -static void intel_finish_crtc_commit(struct drm_crtc *crtc)
> +static void intel_finish_crtc_commit(struct drm_crtc *crtc,
> +				     struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
>  
> diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c 
> b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c
> index c4bb9d9c7667..4dc158ed2e95 100644
> --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c
> +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c
> @@ -334,13 +334,15 @@ static int mdp4_crtc_atomic_check(struct 
> drm_crtc *crtc,
>  	return 0;
>  }
>  
> -static void mdp4_crtc_atomic_begin(struct drm_crtc *crtc)
> +static void mdp4_crtc_atomic_begin(struct drm_crtc *crtc,
> +				   struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
>  	DBG("%s: begin", mdp4_crtc->name);
>  }
>  
> -static void mdp4_crtc_atomic_flush(struct drm_crtc *crtc)
> +static void mdp4_crtc_atomic_flush(struct drm_crtc *crtc,
> +				   struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
>  	struct drm_device *dev = crtc->dev;
> diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c 
> b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
> index dea3d2e559b1..4c1df4e6e5bc 100644
> --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
> +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
> @@ -388,13 +388,15 @@ static int mdp5_crtc_atomic_check(struct 
> drm_crtc *crtc,
>  	return 0;
>  }
>  
> -static void mdp5_crtc_atomic_begin(struct drm_crtc *crtc)
> +static void mdp5_crtc_atomic_begin(struct drm_crtc *crtc,
> +				   struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc);
>  	DBG("%s: begin", mdp5_crtc->name);
>  }
>  
> -static void mdp5_crtc_atomic_flush(struct drm_crtc *crtc)
> +static void mdp5_crtc_atomic_flush(struct drm_crtc *crtc,
> +				   struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc);
>  	struct drm_device *dev = crtc->dev;
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c 
> b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> index 65d6ba6621ac..48cb19949ca3 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> @@ -496,7 +496,8 @@ static bool rcar_du_crtc_mode_fixup(struct 
> drm_crtc *crtc,
>  	return true;
>  }
>  
> -static void rcar_du_crtc_atomic_begin(struct drm_crtc *crtc)
> +static void rcar_du_crtc_atomic_begin(struct drm_crtc *crtc,
> +				      struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct drm_pending_vblank_event *event = crtc->state->event;
>  	struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
> @@ -512,7 +513,8 @@ static void rcar_du_crtc_atomic_begin(struct 
> drm_crtc *crtc)
>  	}
>  }
>  
> -static void rcar_du_crtc_atomic_flush(struct drm_crtc *crtc)
> +static void rcar_du_crtc_atomic_flush(struct drm_crtc *crtc,
> +				      struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
>  
> diff --git a/drivers/gpu/drm/sti/sti_drm_crtc.c 
> b/drivers/gpu/drm/sti/sti_drm_crtc.c
> index 6b641c5a2ec7..26e63bf14efe 100644
> --- a/drivers/gpu/drm/sti/sti_drm_crtc.c
> +++ b/drivers/gpu/drm/sti/sti_drm_crtc.c
> @@ -164,7 +164,8 @@ sti_drm_crtc_mode_set_nofb(struct drm_crtc *crtc)
>  	sti_drm_crtc_mode_set(crtc, &crtc->state->adjusted_mode);
>  }
>  
> -static void sti_drm_atomic_begin(struct drm_crtc *crtc)
> +static void sti_drm_atomic_begin(struct drm_crtc *crtc,
> +				 struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct sti_mixer *mixer = to_sti_mixer(crtc);
>  
> @@ -178,7 +179,8 @@ static void sti_drm_atomic_begin(struct drm_crtc 
> *crtc)
>  	}
>  }
>  
> -static void sti_drm_atomic_flush(struct drm_crtc *crtc)
> +static void sti_drm_atomic_flush(struct drm_crtc *crtc,
> +				 struct drm_crtc_state 
> *old_crtc_state)
>  {
>  }
>  
> diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
> index d447701173e6..24b38090dfd3 100644
> --- a/drivers/gpu/drm/tegra/dc.c
> +++ b/drivers/gpu/drm/tegra/dc.c
> @@ -1275,7 +1275,8 @@ static int tegra_crtc_atomic_check(struct 
> drm_crtc *crtc,
>  	return 0;
>  }
>  
> -static void tegra_crtc_atomic_begin(struct drm_crtc *crtc)
> +static void tegra_crtc_atomic_begin(struct drm_crtc *crtc,
> +				    struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct tegra_dc *dc = to_tegra_dc(crtc);
>  
> @@ -1289,7 +1290,8 @@ static void tegra_crtc_atomic_begin(struct 
> drm_crtc *crtc)
>  	}
>  }
>  
> -static void tegra_crtc_atomic_flush(struct drm_crtc *crtc)
> +static void tegra_crtc_atomic_flush(struct drm_crtc *crtc,
> +				    struct drm_crtc_state 
> *old_crtc_state)
>  {
>  	struct tegra_dc_state *state = to_dc_state(crtc->state);
>  	struct tegra_dc *dc = to_tegra_dc(crtc);
> diff --git a/include/drm/drm_crtc_helper.h 
> b/include/drm/drm_crtc_helper.h
> index 4562bd12bb4a..800e0d1cf32c 100644
> --- a/include/drm/drm_crtc_helper.h
> +++ b/include/drm/drm_crtc_helper.h
> @@ -108,8 +108,10 @@ struct drm_crtc_helper_funcs {
>  	/* atomic helpers */
>  	int (*atomic_check)(struct drm_crtc *crtc,
>  			    struct drm_crtc_state *state);
> -	void (*atomic_begin)(struct drm_crtc *crtc);
> -	void (*atomic_flush)(struct drm_crtc *crtc);
> +	void (*atomic_begin)(struct drm_crtc *crtc,
> +			     struct drm_crtc_state *old_crtc_state);
> +	void (*atomic_flush)(struct drm_crtc *crtc,
> +			     struct drm_crtc_state *old_crtc_state);
>  };
>  
>  /**
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-07-23 12:37 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-21 11:28 [PATCH 0/6] drm/i915: Fastboot for everyone! Maarten Lankhorst
2015-07-21 11:28 ` [PATCH 1/6] drm/atomic: add connectors_changed to separate it from mode_changed, v2 Maarten Lankhorst
2015-07-23 12:27   ` Ander Conselvan De Oliveira
2015-07-21 11:28 ` [PATCH 2/6] drm/atomic: pass old crtc state to atomic_begin/flush Maarten Lankhorst
2015-07-23 12:37   ` Ander Conselvan De Oliveira [this message]
2015-08-05  6:18   ` Tomi Valkeinen
2015-08-06 12:35     ` Maarten Lankhorst
2015-07-21 11:28 ` [PATCH 3/6] drm/i915: Set csc coefficients in update_pipe_size Maarten Lankhorst
2015-07-23 13:25   ` Ander Conselvan De Oliveira
2015-07-21 11:29 ` [PATCH 4/6] drm/i915: Always try to inherit the initial fb Maarten Lankhorst
2015-07-21 11:29 ` [PATCH 5/6] drm/i915: Make updating pipe without modeset atomic Maarten Lankhorst
2015-07-21 14:14   ` Daniel Vetter
2015-07-21 14:32     ` Maarten Lankhorst
2015-07-21 14:50       ` Daniel Vetter
2015-07-21 11:29 ` [PATCH 6/6] drm/i915: skip modeset if compatible for everyone Maarten Lankhorst

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1437655048.3604.11.camel@gmail.com \
    --to=conselvan2@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=maarten.lankhorst@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.