summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/display/intel_audio.h
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2024-05-21 17:30:22 +0300
committerImre Deak <imre.deak@intel.com>2024-05-24 16:02:40 +0300
commitfdd0b80172758ce284f19fa8a26d90c61e4371d2 (patch)
treee05973396ae8d3da3a3342a070b7155c0cdf0eb3 /drivers/gpu/drm/i915/display/intel_audio.h
parenteff70dac16d1f87c262049783b3281b706448593 (diff)
downloadlinux-next-fdd0b80172758ce284f19fa8a26d90c61e4371d2.tar.gz
linux-next-fdd0b80172758ce284f19fa8a26d90c61e4371d2.zip
drm/i915: Fix audio component initialization
After registering the audio component in i915_audio_component_init() the audio driver may call i915_audio_component_get_power() via the component ops. This could program AUD_FREQ_CNTRL with an uninitialized value if the latter function is called before display.audio.freq_cntrl gets initialized. The get_power() function also does a modeset which in the above case happens too early before the initialization step and triggers the "Reject display access from task" error message added by the Fixes: commit below. Fix the above issue by registering the audio component only after the initialization step. Fixes: 87c1694533c9 ("drm/i915: save AUD_FREQ_CNTRL state at audio domain suspend") Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10291 Cc: stable@vger.kernel.org # v5.5+ Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240521143022.3784539-1-imre.deak@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_audio.h')
-rw-r--r--drivers/gpu/drm/i915/display/intel_audio.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_audio.h b/drivers/gpu/drm/i915/display/intel_audio.h
index 9327954b801e..576c061d72a4 100644
--- a/drivers/gpu/drm/i915/display/intel_audio.h
+++ b/drivers/gpu/drm/i915/display/intel_audio.h
@@ -28,6 +28,7 @@ void intel_audio_codec_get_config(struct intel_encoder *encoder,
void intel_audio_cdclk_change_pre(struct drm_i915_private *dev_priv);
void intel_audio_cdclk_change_post(struct drm_i915_private *dev_priv);
void intel_audio_init(struct drm_i915_private *dev_priv);
+void intel_audio_register(struct drm_i915_private *i915);
void intel_audio_deinit(struct drm_i915_private *dev_priv);
void intel_audio_sdp_split_update(const struct intel_crtc_state *crtc_state);