[Intel-gfx] [PATCH] drm/i915: Acquire intel_runtime_pm for HD-Audio registers

Chris Wilson chris at chris-wilson.co.uk
Sat Jul 9 10:05:47 UTC 2016


On Haswell/Broadwell, the HD-Audio block is inside the HDMI/display
power well and so the sna-hda audio codec acquires the display power
well while it is operational. However, Skylake separates the powerwells
again, and so we must remember to acquire the rpm wakeref for ourselves
whilst tweaking the registers.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96214
Fixes: 03b135cebc47 "ALSA: hda - remove dependency on i915 power well for SKL")
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Libin Yang <libin.yang at intel.com>
Cc: Takashi Iwai <tiwai at suse.de>
Cc: Marius Vlad <marius.c.vlad at intel.com>
---
 drivers/gpu/drm/i915/intel_audio.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index 5d5f6bc10e85..eedcce6478ef 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -600,6 +600,8 @@ static void i915_audio_component_codec_wake_override(struct device *dev,
 	if (!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv))
 		return;
 
+	intel_runtime_pm_get(dev_priv);
+
 	/*
 	 * Enable/disable generating the codec wake signal, overriding the
 	 * internal logic to generate the codec wake to controller.
@@ -615,6 +617,8 @@ static void i915_audio_component_codec_wake_override(struct device *dev,
 		I915_WRITE(HSW_AUD_CHICKENBIT, tmp);
 		usleep_range(1000, 1500);
 	}
+
+	intel_runtime_pm_put(dev_priv);
 }
 
 /* Get CDCLK in kHz  */
@@ -648,6 +652,8 @@ static int i915_audio_component_sync_audio_rate(struct device *dev,
 	    !IS_HASWELL(dev_priv))
 		return 0;
 
+	intel_runtime_pm_get(dev_priv);
+
 	mutex_lock(&dev_priv->av_mutex);
 	/* 1. get the pipe */
 	intel_encoder = dev_priv->dig_port_map[port];
@@ -698,6 +704,7 @@ static int i915_audio_component_sync_audio_rate(struct device *dev,
 
  unlock:
 	mutex_unlock(&dev_priv->av_mutex);
+	intel_runtime_pm_put(dev_priv);
 	return err;
 }
 
-- 
2.8.1



More information about the Intel-gfx mailing list