ASoC: intel: sof_sdw: Allow direct specification of CODEC name
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Mon, 31 Jul 2023 21:42:53 +0000 (16:42 -0500)
committerMark Brown <broonie@kernel.org>
Mon, 31 Jul 2023 22:22:39 +0000 (23:22 +0100)
Add support for MFD based CODEC drivers, by allowing the CODEC name to
not be the SoundWire device directly.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20230731214257.444605-20-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/sof_sdw.c
sound/soc/intel/boards/sof_sdw_common.h

index 846ba8e..e6faed2 100644 (file)
@@ -1174,7 +1174,11 @@ static int create_codec_dai_name(struct device *dev,
                class_id = SDW_CLASS_ID(adr);
 
                comp_index = i - adr_index + offset;
-               if (is_unique_device(adr_link, sdw_version, mfg_id, part_id,
+               if (codec_info_list[codec_index].codec_name) {
+                       codec[comp_index].name =
+                               devm_kstrdup(dev, codec_info_list[codec_index].codec_name,
+                                            GFP_KERNEL);
+               } else if (is_unique_device(adr_link, sdw_version, mfg_id, part_id,
                                     class_id, i)) {
                        codec_str = "sdw:%01x:%04x:%04x:%02x";
                        codec[comp_index].name =
index 3740217..fe234b9 100644 (file)
@@ -80,6 +80,7 @@ struct sof_sdw_dai_info {
 struct sof_sdw_codec_info {
        const int part_id;
        const int version_id;
+       const char *codec_name;
        int amp_num;
        const u8 acpi_id[ACPI_ID_LEN];
        const bool ignore_pch_dmic;