diff options
author | Chen-Yu Tsai <wenst@chromium.org> | 2024-08-21 12:10:04 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-09-12 11:10:29 +0200 |
commit | 760d252a99df5aab6e416f6c750355939f907780 (patch) | |
tree | d6510b766c919ffc188383114e33b972ff6ba932 /sound | |
parent | 7957c731fc2b23312f8935812dee5a0b14b04e2d (diff) | |
download | linux-stable-760d252a99df5aab6e416f6c750355939f907780.tar.gz linux-stable-760d252a99df5aab6e416f6c750355939f907780.tar.bz2 linux-stable-760d252a99df5aab6e416f6c750355939f907780.zip |
ASoc: SOF: topology: Clear SOF link platform name upon unload
[ 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>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/sof/topology.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c index e7305ce57ea1..374c8b1d6958 100644 --- a/sound/soc/sof/topology.c +++ b/sound/soc/sof/topology.c @@ -1817,6 +1817,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); |