]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ASoC: ti: omap-hdmi: Re-add dai_link->platform to fix card init
authorYuuki NAGAO <wf.yn386@gmail.com>
Sat, 31 May 2025 14:13:41 +0000 (23:13 +0900)
committerMark Brown <broonie@kernel.org>
Mon, 2 Jun 2025 11:27:43 +0000 (12:27 +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 1: HDMI [HDMI], device 0: HDMI snd-soc-dummy-dai-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

$ speaker-test -D plughw:1,0 -t sine
speaker-test 1.2.8
Playback device is plughw:1,0
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: HDMI [HDMI], device 0: HDMI snd-soc-dummy-dai-0 [HDMI snd-soc-dummy-dai-0]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

-> Resolve the playback error.

Fixes: 3b0db249cf8f ("ASoC: ti: remove unnecessary dai_link->platform")
Signed-off-by: Yuuki NAGAO <wf.yn386@gmail.com>
Link: https://patch.msgid.link/20250531141341.81164-1-wf.yn386@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/ti/omap-hdmi.c

index cf43ac19c4a6d0db315503f8760c9b2704730f72..55e7cb96858fcaf7b51566718ad8bb465f07d37e 100644 (file)
@@ -361,17 +361,20 @@ static int omap_hdmi_audio_probe(struct platform_device *pdev)
        if (!card->dai_link)
                return -ENOMEM;
 
-       compnent = devm_kzalloc(dev, sizeof(*compnent), GFP_KERNEL);
+       compnent = devm_kzalloc(dev, 2 * sizeof(*compnent), GFP_KERNEL);
        if (!compnent)
                return -ENOMEM;
-       card->dai_link->cpus            = compnent;
+       card->dai_link->cpus            = &compnent[0];
        card->dai_link->num_cpus        = 1;
        card->dai_link->codecs          = &snd_soc_dummy_dlc;
        card->dai_link->num_codecs      = 1;
+       card->dai_link->platforms       = &compnent[1];
+       card->dai_link->num_platforms   = 1;
 
        card->dai_link->name = card->name;
        card->dai_link->stream_name = card->name;
        card->dai_link->cpus->dai_name = dev_name(ad->dssdev);
+       card->dai_link->platforms->name = dev_name(ad->dssdev);
        card->num_links = 1;
        card->dev = dev;