From: Jani Nikula <jani.nikula@intel.com>
To: Kai Vehmanen <kai.vehmanen@linux.intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: save AUD_FREQ_CNTRL state at audio domain suspend
Date: Fri, 20 Sep 2019 12:09:31 +0300 [thread overview]
Message-ID: <87ef0buyes.fsf@intel.com> (raw)
In-Reply-To: <20190920083918.27057-1-kai.vehmanen@linux.intel.com>
On Fri, 20 Sep 2019, Kai Vehmanen <kai.vehmanen@linux.intel.com> wrote:
> When audio power domain is suspended, the display driver must
> save state of AUD_FREQ_CNTRL on Tiger Lake and Ice Lake
> systems. The initial value of the register is set by BIOS and
> is read by driver during the audio component init sequence.
>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Thanks for the patch, let's wait for the CI results.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_audio.c | 17 +++++++++++++++--
> drivers/gpu/drm/i915/i915_drv.h | 1 +
> drivers/gpu/drm/i915/i915_reg.h | 2 ++
> 3 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
> index aac089c79ceb..54638d99e021 100644
> --- a/drivers/gpu/drm/i915/display/intel_audio.c
> +++ b/drivers/gpu/drm/i915/display/intel_audio.c
> @@ -852,10 +852,17 @@ static unsigned long i915_audio_component_get_power(struct device *kdev)
>
> ret = intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO);
>
> - /* Force CDCLK to 2*BCLK as long as we need audio to be powered. */
> - if (dev_priv->audio_power_refcount++ == 0)
> + if (dev_priv->audio_power_refcount++ == 0) {
> + if (IS_TIGERLAKE(dev_priv) || IS_ICELAKE(dev_priv)) {
> + I915_WRITE(AUD_FREQ_CNTRL, dev_priv->audio_freq_cntrl);
> + DRM_DEBUG_KMS("restored AUD_FREQ_CNTRL to 0x%x\n",
> + dev_priv->audio_freq_cntrl);
> + }
> +
> + /* Force CDCLK to 2*BCLK as long as we need audio powered. */
> if (IS_CANNONLAKE(dev_priv) || IS_GEMINILAKE(dev_priv))
> glk_force_audio_cdclk(dev_priv, true);
> + }
>
> return ret;
> }
> @@ -1116,6 +1123,12 @@ static void i915_audio_component_init(struct drm_i915_private *dev_priv)
> return;
> }
>
> + if (IS_TIGERLAKE(dev_priv) || IS_ICELAKE(dev_priv)) {
> + dev_priv->audio_freq_cntrl = I915_READ(AUD_FREQ_CNTRL);
> + DRM_DEBUG_KMS("init value of AUD_FREQ_CNTRL of 0x%x\n",
> + dev_priv->audio_freq_cntrl);
> + }
> +
> dev_priv->audio_component_registered = true;
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 4faec2f94e19..5bb19f1c0ef4 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1540,6 +1540,7 @@ struct drm_i915_private {
> */
> struct mutex av_mutex;
> int audio_power_refcount;
> + u32 audio_freq_cntrl;
>
> struct {
> struct mutex mutex;
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index bf37ecebc82f..dff077aa4cc6 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -9119,6 +9119,8 @@ enum {
> #define HSW_AUD_CHICKENBIT _MMIO(0x65f10)
> #define SKL_AUD_CODEC_WAKE_SIGNAL (1 << 15)
>
> +#define AUD_FREQ_CNTRL _MMIO(0x65900)
> +
> /*
> * HSW - ICL power wells
> *
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2019-09-20 9:09 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-20 8:39 [PATCH] drm/i915: save AUD_FREQ_CNTRL state at audio domain suspend Kai Vehmanen
2019-09-20 9:09 ` Jani Nikula [this message]
2019-09-20 13:27 ` ✓ Fi.CI.BAT: success for " Patchwork
2019-09-21 9:20 ` ✓ Fi.CI.IGT: " Patchwork
2019-09-23 7:46 ` [PATCH] " Jani Nikula
2019-12-24 23:08 ` [Intel-gfx] " Matt Roper
2019-12-30 16:03 ` Kai Vehmanen
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=87ef0buyes.fsf@intel.com \
--to=jani.nikula@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=kai.vehmanen@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.