Re: [PATCH 09/10] ASoC: Intel: sof_sdw: Add support for Cirrus Logic CS35L56

From: Pierre-Louis Bossart
Date: Tue Feb 21 2023 - 11:59:21 EST



> +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;
> +}