Re: [BISECT] No audio after "ASoC: core: use component driver name as component name"

From: Sylwester Nawrocki
Date: Fri May 31 2019 - 09:48:00 EST


On 5/31/19 12:20, Tzung-Bi Shih wrote:
> On Fri, May 31, 2019 at 5:27 PM Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote:
>> The problem might be in component name. The driver->name and
>> fmt_single_name(dev, &component->id) are:
>> snd_dmaengine_pcm != 3830000.i2s
>> snd_dmaengine_pcm != 3830000.i2s-sec
>> samsung-i2s != 3830000.i2s
>>
>> This commit should not go in without fixing the users of old
>> behavior... I could adjust the platform names for primary and
>> secondary links... but now it looks like two components will have the
>> same name.
>
> That is because the two component drivers used the same name in
> somehow. But yes, we should not have the commit without fixing
> potential errors for users depend on old behavior.

There are 2 platform devices (3830000.i2s, 3830000.i2s-sec), for each
a platform/DMA component is created. For 3830000.i2s there is also
a component with 2 CPU DAIs registered.

If we derive the platform/DMA component name from the component's driver
name then we end up with non unique Platform component names
(snd_dmaengine_pcm) and subsequently we fail to assign Platform component
to DAI links.

Here is list of components before the patch:

# cat /sys/kernel/debug/asoc/components
3830000.i2s
3830000.i2s-sec
3830000.i2s
hdmi-audio-codec.3.auto
max98090.5-0010
snd-soc-dummy
snd-soc-dummy

And after the patch:

root@target:~# cat /sys/kernel/debug/asoc/components
samsung-i2s
snd_dmaengine_pcm
snd_dmaengine_pcm
hdmi-audio-codec.3.auto
max98090.5-0010
snd-soc-dummy
snd-soc-dummy