]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ASoc: SOF: topology: Clear SOF link platform name upon unload
authorChen-Yu Tsai <wenst@chromium.org>
Wed, 21 Aug 2024 04:10:04 +0000 (12:10 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2024 09:11:44 +0000 (11:11 +0200)
[ Upstream commit e0be875c5bf03a9676a6bfed9e0f1766922a7dbd ]

The SOF topology loading function sets the device name for the platform
component link. This should be unset when unloading the topology,
otherwise a machine driver unbind/bind or reprobe would complain about
an invalid component as having both its component name and of_node set:

    mt8186_mt6366 sound: ASoC: Both Component name/of_node are set for AFE_SOF_DL1
    mt8186_mt6366 sound: error -EINVAL: Cannot register card
    mt8186_mt6366 sound: probe with driver mt8186_mt6366 failed with error -22

This happens with machine drivers that set the of_node separately.

Clear the SOF link platform name in the topology unload callback.

Fixes: 311ce4fe7637 ("ASoC: SOF: Add support for loading topologies")
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Link: https://patch.msgid.link/20240821041006.2618855-1-wenst@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/sof/topology.c

index 7133ec13322b3f998edf453cb28d45202447bb74..cf1e63daad86bf83d5620aa845f606974daf6c78 100644 (file)
@@ -2040,6 +2040,8 @@ static int sof_link_unload(struct snd_soc_component *scomp, struct snd_soc_dobj
        if (!slink)
                return 0;
 
+       slink->link->platforms->name = NULL;
+
        kfree(slink->tuples);
        list_del(&slink->list);
        kfree(slink->hw_configs);