intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Suraj Kandpal <suraj.kandpal@intel.com>
Cc: intel-gfx@lists.freedesktop.org, mitulkumar.ajitkumar.golani@intel.com
Subject: Re: [PATCH] drm/i915/pps: Disable DPLS_GATING around pps sequence
Date: Thu, 9 May 2024 13:54:04 +0300	[thread overview]
Message-ID: <ZjyrTLGidDq8lu6S@intel.com> (raw)
In-Reply-To: <20240509032922.1145558-2-suraj.kandpal@intel.com>

On Thu, May 09, 2024 at 08:59:23AM +0530, Suraj Kandpal wrote:
> Disable bit 29 of SCLKGATE_DIS register around pps sequence
> when we turn panel power on.
> 
> --v2
> -Squash two commit together [Jani]
> -Use IS_DISPLAY_VER [Jani]
> -Fix multiline comment [Jani]
> 
> --v3
> -Define register in a more appropriate place [Mitul]
> 
> Bspec: 49304
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_pps.c | 12 ++++++++++++
>  drivers/gpu/drm/i915/i915_reg.h          |  4 ++++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c
> index 0ccbf9a85914..d774aeb1673e 100644
> --- a/drivers/gpu/drm/i915/display/intel_pps.c
> +++ b/drivers/gpu/drm/i915/display/intel_pps.c
> @@ -948,6 +948,14 @@ void intel_pps_on_unlocked(struct intel_dp *intel_dp)
>  		intel_de_posting_read(dev_priv, pp_ctrl_reg);
>  	}
>  
> +	/*
> +	 * WA: 16023567976
> +	 * Disable DPLS gating around power sequence.
> +	 */
> +	if (IS_DISPLAY_VER(dev_priv, 12, 14))

The issue has supposedly existed since at least BXT.
It was documented as w/a #1124 there:
https://patchwork.freedesktop.org/series/70655/

The original w/a called for keeping the clock gating
disabled between the PP_ON_DELAYS and PP_CONTROL
writes, which would have been annoying to implement
so I went with the extra delay instead. But if the new
approach of just toggle the clock gating around the
PP_CONTROL write works then that is definitely better.

Sadly I wasn't able to reproduce this issue locally. Gave it
a decent try on GLK, TGL, and ADL, but no joy. So can't be
sure this actually works.

I suppose technically it doesn't matter for us since we always use
the VDD override anyway, but no harm in having the w/a implemented
anyway in case we ever change that.

> +		intel_de_rmw(dev_priv, SCLKGATE_DIS,
> +			     0, DPLS_GATING_DISABLE);

IIRC on BXT/GLK we need to poke at some north clock gating register.

And on BXT/GLK, and ICP+ we can have two power sequencers so we
probably want to poke the bits for both of them.

The other issue is that we are poking at these register from multiple
places, so we probably need a lock to protect it. I'm think we could
have just a single chicken_lock or something for these kinds of use
cases.

> +
>  	pp |= PANEL_POWER_ON;
>  	if (!IS_IRONLAKE(dev_priv))
>  		pp |= PANEL_POWER_RESET;
> @@ -958,6 +966,10 @@ void intel_pps_on_unlocked(struct intel_dp *intel_dp)
>  	wait_panel_on(intel_dp);
>  	intel_dp->pps.last_power_on = jiffies;
>  
> +	if (IS_DISPLAY_VER(dev_priv, 12, 14))
> +		intel_de_rmw(dev_priv, SCLKGATE_DIS,
> +			     DPLS_GATING_DISABLE, 0);
> +
>  	if (IS_IRONLAKE(dev_priv)) {
>  		pp |= PANEL_POWER_RESET; /* restore panel reset bit */
>  		intel_de_write(dev_priv, pp_ctrl_reg, pp);
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 5670eee4a498..4cc82360298b 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -5151,6 +5151,10 @@ enum skl_power_gate {
>  
>  #define _MMIO_PLANE_GAMC(plane, i, a, b)  _MMIO(_PIPE(plane, a, b) + (i) * 4)
>  
> +/* SCLKGATE_DIS */
> +#define SCLKGATE_DIS			_MMIO(0xc2020)

We already have that register.

> +#define  DPLS_GATING_DISABLE		REG_BIT(29)
> +
>  /* Plane CSC Registers */
>  #define _PLANE_CSC_RY_GY_1_A	0x70210
>  #define _PLANE_CSC_RY_GY_2_A	0x70310
> -- 
> 2.43.2

-- 
Ville Syrjälä
Intel

  reply	other threads:[~2024-05-09 10:54 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-16  9:37 [PATCH] drm/i915/pps: Disable DPLS_GATING around pps sequence Suraj Kandpal
2024-04-16 10:48 ` ✗ Fi.CI.BAT: failure for " Patchwork
2024-04-17  5:59 ` ✓ Fi.CI.BAT: success for drm/i915/pps: Disable DPLS_GATING around pps sequence (rev2) Patchwork
2024-04-17  9:22 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-05-09  3:29 ` [PATCH] drm/i915/pps: Disable DPLS_GATING around pps sequence Suraj Kandpal
2024-05-09 10:54   ` Ville Syrjälä [this message]
2024-07-29 13:54   ` Bhadane, Dnyaneshwar
2024-07-30  4:08     ` Kandpal, Suraj
2024-07-31 13:25       ` Bhadane, Dnyaneshwar
2024-08-13  4:28   ` Suraj Kandpal
2024-08-14 13:01     ` Bhadane, Dnyaneshwar
2024-05-09  4:55 ` ✓ Fi.CI.BAT: success for drm/i915/pps: Disable DPLS_GATING around pps sequence (rev3) Patchwork
2024-05-09 14:06 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-07-29  7:23 ` ✗ Fi.CI.BUILD: failure for drm/i915/pps: Disable DPLS_GATING around pps sequence (rev4) Patchwork
2024-07-29 15:56 ` [PATCH] drm/i915/pps: Disable DPLS_GATING around pps sequence Jani Nikula
2024-08-13  5:19 ` ✓ Fi.CI.BAT: success for drm/i915/pps: Disable DPLS_GATING around pps sequence (rev5) Patchwork
2024-08-13 11:12 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-08-20 11:33 ` ✓ Fi.CI.IGT: success " Patchwork

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=ZjyrTLGidDq8lu6S@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=mitulkumar.ajitkumar.golani@intel.com \
    --cc=suraj.kandpal@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).