From: Yang Shi <>

issue: snd_soc_skl meet "failed to add i915 component master (-19)" when
platform don't connect any display output.

i915 do initialization before than skl_probe, but if there is no display
output connect, in function drm_dp_dpcd_access, there is a 32 retry for
aux i2c transactions. It will meet timeout and do usleep. Then skl_probe
function will be scheduled. It will call snd_hdac_i915_init, and it will
meet "failed to add i915 component master" error.
And whole snd_soc_skl initialization will be failed, audio can't work normally

So i915 driver need to move intel_audio_init at the beginning of
intel_modeset_init. This will make sure i915_audio_component_init process
before snd_hdac_i915_init call it.

V2: edit comments more clearly

Signed-off-by: Bo He <>
Signed-off-by: Yang Shi <>
 drivers/gpu/drm/i915/i915_drv.c      | 2 --
 drivers/gpu/drm/i915/intel_display.c | 2 ++
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 2f5209d..9d25d7e 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1243,8 +1243,6 @@ static void i915_driver_register(struct drm_i915_private 
        if (IS_GEN5(dev_priv))
-       intel_audio_init(dev_priv);
         * Some ports require correctly set-up hpd registers for detection to
         * work properly (leading to ghost connected connector status), e.g. VGA
diff --git a/drivers/gpu/drm/i915/intel_display.c 
index f288bcc..a471c88 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14468,6 +14468,8 @@ int intel_modeset_init(struct drm_device *dev)
        dev->mode_config.funcs = &intel_mode_funcs;
+       intel_audio_init(dev_priv);

Intel-gfx mailing list

Reply via email to