The patch below does not apply to the 5.4-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <stable@xxxxxxxxxxxxxxx>. To reproduce the conflict and resubmit, you may use the following commands: git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.4.y git checkout FETCH_HEAD git cherry-pick -x 8a8a9ac8a4972ee69d3dd3d1ae43963ae39cee18 # <resolve conflicts, build, test, etc.> git commit -s git send-email --to '<stable@xxxxxxxxxxxxxxx>' --in-reply-to '2024012240-ether-snoring-afc9@gregkh' --subject-prefix 'PATCH 5.4.y' HEAD^.. Possible dependencies: 8a8a9ac8a497 ("soundwire: fix initializing sysfs for same devices on different buses") 92e9f10a0935 ("ASoC: intel: sof_sdw: Add helper to create a single codec DLC") 009582008182 ("ASoC: intel: sof_sdw: Allow direct specification of CODEC name") 656dd91a3a1c ("ASoC: Intel: sof_sdw: break earlier when a adr link contains different codecs") 1d1062382b18 ("ASoC: intel: sof_sdw: Use consistent variable naming for links") 0281b02e1913 ("ASoC: Intel: sof_sdw: add dai_link_codec_ch_map") d3fc5c4da599 ("ASoC: Intel: sof_sdw: add multi dailink support for a codec") 5714aabdf971 ("ASoC: Intel: sdw_sof: append dai_type and remove codec_type") cededa5a6486 ("ASoC: Intel: sof_sdw: add codec_info pointer") b274586533f5 ("ASoC: Intel: sof_sdw: use predefine dailink id") 07140abbbf9e ("ASoC: Intel: sof_sdw: add dai info") ba032909bb2d ("ASoC: Intel: sof_sdw: add missing exit callback") f0c8d83ab1a3 ("ASoC: Intel: sof_sdw: start set codec init function with an adr index") 1785af9ff65d ("ASoC: intel: sof: use asoc_dummy_dlc") dc5a3e60a4b5 ("ASoC: Intel: sof_sdw: append codec type to dai link name") c8db7b50128b ("ASoC: Intel: sof_sdw: support different devices on the same sdw link") 06b830bd73ec ("ASoC: Intel: sof_sdw: remove late_probe flag in struct sof_sdw_codec_info") ba7523bb0f49 ("ASoC: Intel: sof_nau8825: add variant with nau8318 amplifier.") 5c10da436ebd ("ASoC: Intel: sof_sdw: use common helpers for all Realtek amps") 8c4b3a8ea2c0 ("ASoC: intel: sof_sdw: add rt1318 codec support.") thanks, greg k-h ------------------ original commit in Linus's tree ------------------ >From 8a8a9ac8a4972ee69d3dd3d1ae43963ae39cee18 Mon Sep 17 00:00:00 2001 From: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> Date: Tue, 17 Oct 2023 11:09:33 -0500 Subject: [PATCH] soundwire: fix initializing sysfs for same devices on different buses If same devices with same device IDs are present on different soundwire buses, the probe fails due to conflicting device names and sysfs entries: sysfs: cannot create duplicate filename '/bus/soundwire/devices/sdw:0:0217:0204:00:0' The link ID is 0 for both devices, so they should be differentiated by the controller ID. Add the controller ID so, the device names and sysfs entries look like: sdw:1:0:0217:0204:00:0 -> ../../../devices/platform/soc@0/6ab0000.soundwire-controller/sdw-master-1-0/sdw:1:0:0217:0204:00:0 sdw:3:0:0217:0204:00:0 -> ../../../devices/platform/soc@0/6b10000.soundwire-controller/sdw-master-3-0/sdw:3:0:0217:0204:00:0 [PLB changes: use bus->controller_id instead of bus->id] Fixes: 7c3cd189b86d ("soundwire: Add Master registration") Cc: stable@xxxxxxxxxxxxxxx Reviewed-by: Bard Liao <yung-chuan.liao@xxxxxxxxxxxxxxx> Reviewed-by: Vijendar Mukunda <Vijendar.Mukunda@xxxxxxx> Co-developed-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> Tested-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> Acked-by: Mark Brown <broonie@xxxxxxxxxx> Tested-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> Link: https://lore.kernel.org/r/20231017160933.12624-3-pierre-louis.bossart@xxxxxxxxxxxxxxx Signed-off-by: Vinod Koul <vkoul@xxxxxxxxxx> diff --git a/drivers/soundwire/slave.c b/drivers/soundwire/slave.c index c1c1a2ac293a..060c2982e26b 100644 --- a/drivers/soundwire/slave.c +++ b/drivers/soundwire/slave.c @@ -39,14 +39,14 @@ int sdw_slave_add(struct sdw_bus *bus, slave->dev.fwnode = fwnode; if (id->unique_id == SDW_IGNORED_UNIQUE_ID) { - /* name shall be sdw:link:mfg:part:class */ - dev_set_name(&slave->dev, "sdw:%01x:%04x:%04x:%02x", - bus->link_id, id->mfg_id, id->part_id, + /* name shall be sdw:ctrl:link:mfg:part:class */ + dev_set_name(&slave->dev, "sdw:%01x:%01x:%04x:%04x:%02x", + bus->controller_id, bus->link_id, id->mfg_id, id->part_id, id->class_id); } else { - /* name shall be sdw:link:mfg:part:class:unique */ - dev_set_name(&slave->dev, "sdw:%01x:%04x:%04x:%02x:%01x", - bus->link_id, id->mfg_id, id->part_id, + /* name shall be sdw:ctrl:link:mfg:part:class:unique */ + dev_set_name(&slave->dev, "sdw:%01x:%01x:%04x:%04x:%02x:%01x", + bus->controller_id, bus->link_id, id->mfg_id, id->part_id, id->class_id, id->unique_id); } diff --git a/sound/soc/intel/boards/sof_sdw.c b/sound/soc/intel/boards/sof_sdw.c index 3312ad8a563b..690c279bbb88 100644 --- a/sound/soc/intel/boards/sof_sdw.c +++ b/sound/soc/intel/boards/sof_sdw.c @@ -1232,11 +1232,11 @@ static int fill_sdw_codec_dlc(struct device *dev, else if (is_unique_device(adr_link, sdw_version, mfg_id, part_id, class_id, adr_index)) codec->name = devm_kasprintf(dev, GFP_KERNEL, - "sdw:%01x:%04x:%04x:%02x", link_id, + "sdw:0:%01x:%04x:%04x:%02x", link_id, mfg_id, part_id, class_id); else codec->name = devm_kasprintf(dev, GFP_KERNEL, - "sdw:%01x:%04x:%04x:%02x:%01x", link_id, + "sdw:0:%01x:%04x:%04x:%02x:%01x", link_id, mfg_id, part_id, class_id, unique_id); if (!codec->name)