]> www.infradead.org Git - linux.git/commitdiff
ASoC: atmel: atmel-classd: Re-add dai_link->platform to fix card init
authorAndrei Simion <andrei.simion@microchip.com>
Tue, 4 Jun 2024 10:10:30 +0000 (13:10 +0300)
committerMark Brown <broonie@kernel.org>
Thu, 6 Jun 2024 13:04:00 +0000 (14:04 +0100)
The removed dai_link->platform component cause a fail which
is exposed at runtime. (ex: when a sound tool is used)
This patch re-adds the dai_link->platform component to have
a full card registered.

Before this patch:
:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CLASSD [CLASSD], device 0: CLASSD PCM snd-soc-dummy-dai-0 []
    Subdevices: 1/1
    Subdevice #0: subdevice #0

:~$ speaker-test -t sine
speaker-test 1.2.6
Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
Sine wave rate is 440.0000Hz
Playback open error: -22,Invalid argument

After this patch which restores the platform component:
:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CLASSD [CLASSD], device 0: CLASSD PCM snd-soc-dummy-dai-0
[CLASSD PCM snd-soc-dummy-dai-0]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
-> Resolve the playback error.

Fixes: 2f650f87c03c ("ASoC: atmel: remove unnecessary dai_link->platform")
Signed-off-by: Andrei Simion <andrei.simion@microchip.com>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://msgid.link/r/20240604101030.237792-1-andrei.simion@microchip.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/atmel/atmel-classd.c

index 6aed1ee443b4433f81e9041dd6fda36147492055..ba314b2799190e760143e55ffd956f35d4c5127c 100644 (file)
@@ -473,19 +473,22 @@ static int atmel_classd_asoc_card_init(struct device *dev,
        if (!dai_link)
                return -ENOMEM;
 
-       comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL);
+       comp = devm_kzalloc(dev, 2 * sizeof(*comp), GFP_KERNEL);
        if (!comp)
                return -ENOMEM;
 
-       dai_link->cpus          = comp;
+       dai_link->cpus          = &comp[0];
        dai_link->codecs        = &snd_soc_dummy_dlc;
+       dai_link->platforms     = &comp[1];
 
        dai_link->num_cpus      = 1;
        dai_link->num_codecs    = 1;
+       dai_link->num_platforms = 1;
 
        dai_link->name                  = "CLASSD";
        dai_link->stream_name           = "CLASSD PCM";
        dai_link->cpus->dai_name        = dev_name(dev);
+       dai_link->platforms->name       = dev_name(dev);
 
        card->dai_link  = dai_link;
        card->num_links = 1;