[Intel-gfx] [PATCH 1/1] drm/i915: move audio component intialization before audio driver use it

Shi, Yang A yang.a.shi at intel.com
Tue Apr 10 07:23:41 UTC 2018


>-----Original Message-----
>From: Jani Nikula [mailto:jani.nikula at linux.intel.com]
>Sent: Thursday, March 29, 2018 9:16 PM
>To: Chris Wilson <chris at chris-wilson.co.uk>; Shi, Yang A <yang.a.shi at intel.com>;
>intel-gfx at lists.freedesktop.org
>Cc: Shi, Yang A <yang.a.shi at intel.com>; He, Bo <bo.he at intel.com>
>Subject: Re: [Intel-gfx] [PATCH 1/1] drm/i915: move audio component intialization
>before audio driver use it
>
>On Thu, 29 Mar 2018, Chris Wilson <chris at chris-wilson.co.uk> wrote:
>> Quoting Yang (2018-03-29 08:12:13)
>>> From: Yang Shi <yang.a.shi at intel.com>
>>>
>>> snd_hdac driver would use the component interface from i915 driver.
>>> if i915 driver do the audio component intialization too late,
>>> snd_hdac driver will meet ipanic.
>>>
>>> Signed-off-by: Bo He <bo.he at intel.com>
>>> Signed-off-by: Yang Shi <yang.a.shi at intel.com>
>>> ---
>>>  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
>*dev_priv)
>>>         if (IS_GEN5(dev_priv))
>>>                 intel_gpu_ips_init(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
>>> b/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);
>>
>> Has info->num_pipes been finalized yet? Does the component framework
>> expose the device to the external clients (if so, it can not be done
>> before we are ready).
>
>Hmmh, the same patch seems to have been sent twice. I replied at [1].
>
>BR,
>Jani.
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 anymore.

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.

BR.
Yang.
>
>
>[1] http://mid.mail-archive.com/87k1tvciec.fsf@intel.com
>
>
>> -Chris
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>--
>Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list