From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 3/7] drm/i915: Hoover the IPS enable/disable calls into the pre/post update hooks
Date: Wed, 09 Feb 2022 15:25:44 +0200 [thread overview]
Message-ID: <87wni4npd3.fsf@intel.com> (raw)
In-Reply-To: <20220209113526.7595-3-ville.syrjala@linux.intel.com>
On Wed, 09 Feb 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> No reason the caller of the IPS pre/post update hooks should
> be responsible for the actual IPS enab/disable. Just pull those
> calls into the pre/post update hooks themselves. And while
> at it let's adjust the function naming a bit to have a consistent
> namespace.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Seems like some of the calling convention changes here should've been
put in the preceding patch, but not a big deal.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 46 +++++++++++++++-----
> drivers/gpu/drm/i915/display/intel_display.h | 2 -
> 2 files changed, 34 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index c5d30c683911..08c59fdb24e5 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -125,6 +125,7 @@ static void bdw_set_pipemisc(const struct intel_crtc_state *crtc_state);
> static void ilk_pfit_enable(const struct intel_crtc_state *crtc_state);
> static void intel_modeset_setup_hw_state(struct drm_device *dev,
> struct drm_modeset_acquire_ctx *ctx);
> +static bool hsw_ips_disable(const struct intel_crtc_state *crtc_state);
>
> /**
> * intel_update_watermarks - update FIFO watermark values based on current modes
> @@ -753,7 +754,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
> crtc_state->min_cdclk[plane->id] = 0;
>
> if (plane->id == PLANE_PRIMARY &&
> - hsw_disable_ips(crtc_state))
> + hsw_ips_disable(crtc_state))
> intel_crtc_wait_for_next_vblank(crtc);
>
> /*
> @@ -1091,7 +1092,7 @@ static void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)
> intel_de_write(dev_priv, PF_WIN_SZ(pipe), width << 16 | height);
> }
>
> -void hsw_enable_ips(const struct intel_crtc_state *crtc_state)
> +static void hsw_ips_enable(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> struct drm_device *dev = crtc->base.dev;
> @@ -1128,7 +1129,7 @@ void hsw_enable_ips(const struct intel_crtc_state *crtc_state)
> }
> }
>
> -bool hsw_disable_ips(const struct intel_crtc_state *crtc_state)
> +static bool hsw_ips_disable(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> struct drm_device *dev = crtc->base.dev;
> @@ -1170,8 +1171,8 @@ static void intel_crtc_dpms_overlay_disable(struct intel_crtc *crtc)
> */
> }
>
> -static bool hsw_pre_update_disable_ips(struct intel_atomic_state *state,
> - struct intel_crtc *crtc)
> +static bool hsw_ips_need_disable(struct intel_atomic_state *state,
> + struct intel_crtc *crtc)
> {
> struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> const struct intel_crtc_state *old_crtc_state =
> @@ -1200,8 +1201,20 @@ static bool hsw_pre_update_disable_ips(struct intel_atomic_state *state,
> return !new_crtc_state->ips_enabled;
> }
>
> -static bool hsw_post_update_enable_ips(struct intel_atomic_state *state,
> - struct intel_crtc *crtc)
> +static bool hsw_ips_pre_update(struct intel_atomic_state *state,
> + struct intel_crtc *crtc)
> +{
> + const struct intel_crtc_state *old_crtc_state =
> + intel_atomic_get_old_crtc_state(state, crtc);
> +
> + if (!hsw_ips_need_disable(state, crtc))
> + return false;
> +
> + return hsw_ips_disable(old_crtc_state);
> +}
> +
> +static bool hsw_ips_need_enable(struct intel_atomic_state *state,
> + struct intel_crtc *crtc)
> {
> struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> const struct intel_crtc_state *old_crtc_state =
> @@ -1237,6 +1250,18 @@ static bool hsw_post_update_enable_ips(struct intel_atomic_state *state,
> return !old_crtc_state->ips_enabled;
> }
>
> +static void hsw_ips_post_update(struct intel_atomic_state *state,
> + struct intel_crtc *crtc)
> +{
> + const struct intel_crtc_state *new_crtc_state =
> + intel_atomic_get_new_crtc_state(state, crtc);
> +
> + if (!hsw_ips_need_enable(state, crtc))
> + return;
> +
> + hsw_ips_enable(new_crtc_state);
> +}
> +
> static bool needs_nv12_wa(const struct intel_crtc_state *crtc_state)
> {
> struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev);
> @@ -1331,9 +1356,7 @@ static void intel_post_plane_update(struct intel_atomic_state *state,
> if (new_crtc_state->update_wm_post && new_crtc_state->hw.active)
> intel_update_watermarks(dev_priv);
>
> - if (hsw_post_update_enable_ips(state, crtc))
> - hsw_enable_ips(new_crtc_state);
> -
> + hsw_ips_post_update(state, crtc);
> intel_fbc_post_update(state, crtc);
> intel_drrs_page_flip(state, crtc);
>
> @@ -1436,8 +1459,7 @@ static void intel_pre_plane_update(struct intel_atomic_state *state,
>
> intel_psr_pre_plane_update(state, crtc);
>
> - if (hsw_pre_update_disable_ips(state, crtc) &&
> - hsw_disable_ips(old_crtc_state))
> + if (hsw_ips_pre_update(state, crtc))
> intel_crtc_wait_for_next_vblank(crtc);
>
> if (intel_fbc_pre_update(state, crtc))
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index 8f9bec36898e..2315088a280d 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -633,8 +633,6 @@ void i9xx_crtc_clock_get(struct intel_crtc *crtc,
> struct intel_crtc_state *pipe_config);
> int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n);
> bool hsw_crtc_state_ips_capable(const struct intel_crtc_state *crtc_state);
> -void hsw_enable_ips(const struct intel_crtc_state *crtc_state);
> -bool hsw_disable_ips(const struct intel_crtc_state *crtc_state);
> enum intel_display_power_domain intel_port_to_power_domain(enum port port);
> enum intel_display_power_domain
> intel_aux_power_domain(struct intel_digital_port *dig_port);
--
Jani Nikula, Intel Open Source Graphics Center
next prev parent reply other threads:[~2022-02-09 13:25 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-09 11:35 [Intel-gfx] [PATCH 1/7] drm/i915: Move vblank waits out from IPS code Ville Syrjala
2022-02-09 11:35 ` [Intel-gfx] [PATCH 2/7] drm/i915: Change IPS calling convention Ville Syrjala
2022-02-09 13:17 ` Jani Nikula
2022-02-09 11:35 ` [Intel-gfx] [PATCH 3/7] drm/i915: Hoover the IPS enable/disable calls into the pre/post update hooks Ville Syrjala
2022-02-09 13:25 ` Jani Nikula [this message]
2022-02-09 11:35 ` [Intel-gfx] [PATCH 4/7] drm/i915: Move the IPS code to its own file Ville Syrjala
2022-02-09 13:34 ` Jani Nikula
2022-02-09 11:35 ` [Intel-gfx] [PATCH 5/7] drm/i915: Extract hsw_ips_get_config() Ville Syrjala
2022-02-09 13:35 ` Jani Nikula
2022-02-09 11:35 ` [Intel-gfx] [PATCH 6/7] drm/i915: Fix IPS disable in intel_plane_disable_noatomic() Ville Syrjala
2022-02-09 13:41 ` Jani Nikula
2022-02-09 11:35 ` [Intel-gfx] [PATCH 7/7] drm/i915: Consolidate all pre plane update vblank waits Ville Syrjala
2022-02-09 13:39 ` Jani Nikula
2022-02-09 16:36 ` Murthy, Arun R
2022-02-09 13:15 ` [Intel-gfx] [PATCH 1/7] drm/i915: Move vblank waits out from IPS code Jani Nikula
2022-02-09 14:06 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/7] " Patchwork
2022-02-09 14:08 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-02-09 14:39 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-02-09 17:36 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2022-02-09 19:13 ` Ville Syrjälä
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=87wni4npd3.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=ville.syrjala@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.