+static int cs35l56_init_multiple(struct snd_soc_pcm_runtime *rtd, int count)
+{
+ struct snd_soc_card *card = rtd->card;
+ struct snd_soc_dai *codec_dai;
+ int i, ret;
+
+ card->components = devm_kasprintf(card->dev, GFP_KERNEL,
+ "%s hs:cs35l56",
the string is wrong here, this is an amplifier so it should be
amp:cs35l56 or spk:cs36l56 (not sure which of the two we ended-up using).
+ card->components);
+ if (!card->components)
+ return -ENOMEM;
+
+ ret = snd_soc_dapm_new_controls(&card->dapm,
+ cs35l56_sof_widgets, ARRAY_SIZE(cs35l56_sof_widgets));
+ if (ret) {
+ dev_err(card->dev, "Widgets add failed: %d\n", ret);
+ return ret;
+ }
+
+ ret = snd_soc_dapm_add_routes(&card->dapm, cs35l56_sof_map, count);
+ if (ret) {
+ dev_err(card->dev, "Map add %d failed: %d\n", count, ret);
+ return ret;
+ }
+
+ /* Enable one feedback TX per amp on different slots */
+ for_each_rtd_codec_dais(rtd, i, codec_dai) {
+ ret = snd_soc_dai_set_tdm_slot(codec_dai, 0x3, 1 << i, 4, 16);
TDM slots? Not getting how this would work with SoundWire?
+ if (ret < 0)
+ return ret;
+ }
+
+ return 0;
+}