]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: tas2783A: sdw_utils: support ch 3 & 4
authorNiranjan H Y <niranjan.hy@ti.com>
Mon, 15 Dec 2025 15:32:12 +0000 (21:02 +0530)
committerMark Brown <broonie@kernel.org>
Thu, 18 Dec 2025 08:21:44 +0000 (08:21 +0000)
 Currently the machine driver for tas2783A can only
support 2 channels. This patch adds support for
2 channel playback with 4 device setup.

Signed-off-by: Niranjan H Y <niranjan.hy@ti.com>
Link: https://patch.msgid.link/20251215153219.810-1-niranjan.hy@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sdw_utils/soc_sdw_ti_amp.c
sound/soc/sdw_utils/soc_sdw_utils.c

index cbd60faecd0981c8c0959849ea13d829736abe97..488ef2ef45d4f1f243b96b79043dbe1593d9bc45 100644 (file)
@@ -58,6 +58,10 @@ int asoc_sdw_ti_spk_rtd_init(struct snd_soc_pcm_runtime *rtd,
                        strscpy(speaker, "Left Spk", sizeof(speaker));
                } else if (!strncmp(prefix, "tas2783-2", strlen("tas2783-2"))) {
                        strscpy(speaker, "Right Spk", sizeof(speaker));
+               } else if (!strncmp(prefix, "tas2783-3", strlen("tas2783-3"))) {
+                       strscpy(speaker, "Left Spk2", sizeof(speaker));
+               } else if (!strncmp(prefix, "tas2783-4", strlen("tas2783-4"))) {
+                       strscpy(speaker, "Right Spk2", sizeof(speaker));
                } else {
                        ret = -EINVAL;
                        dev_err(card->dev, "unhandled prefix %s", prefix);
index 6c656b2f7f3ae5622b4625e7a6bb0a8a5d953894..e699a713cf8114f72927a72ebda8b69fc7930094 100644 (file)
@@ -40,11 +40,25 @@ static const struct snd_soc_dapm_widget lr_spk_widgets[] = {
        SND_SOC_DAPM_SPK("Right Spk", NULL),
 };
 
+static const struct snd_soc_dapm_widget lr_4spk_widgets[] = {
+       SND_SOC_DAPM_SPK("Left Spk", NULL),
+       SND_SOC_DAPM_SPK("Right Spk", NULL),
+       SND_SOC_DAPM_SPK("Left Spk2", NULL),
+       SND_SOC_DAPM_SPK("Right Spk2", NULL),
+};
+
 static const struct snd_kcontrol_new lr_spk_controls[] = {
        SOC_DAPM_PIN_SWITCH("Left Spk"),
        SOC_DAPM_PIN_SWITCH("Right Spk"),
 };
 
+static const struct snd_kcontrol_new lr_4spk_controls[] = {
+       SOC_DAPM_PIN_SWITCH("Left Spk"),
+       SOC_DAPM_PIN_SWITCH("Right Spk"),
+       SOC_DAPM_PIN_SWITCH("Left Spk2"),
+       SOC_DAPM_PIN_SWITCH("Right Spk2"),
+};
+
 static const struct snd_soc_dapm_widget rt700_widgets[] = {
        SND_SOC_DAPM_HP("Headphones", NULL),
        SND_SOC_DAPM_MIC("AMIC", NULL),
@@ -69,10 +83,10 @@ struct asoc_sdw_codec_info codec_info_list[] = {
                                .dailink = {SOC_SDW_AMP_OUT_DAI_ID, SOC_SDW_AMP_IN_DAI_ID},
                                .init = asoc_sdw_ti_amp_init,
                                .rtd_init = asoc_sdw_ti_spk_rtd_init,
-                               .controls = lr_spk_controls,
-                               .num_controls = ARRAY_SIZE(lr_spk_controls),
-                               .widgets = lr_spk_widgets,
-                               .num_widgets = ARRAY_SIZE(lr_spk_widgets),
+                               .controls = lr_4spk_controls,
+                               .num_controls = ARRAY_SIZE(lr_4spk_controls),
+                               .widgets = lr_4spk_widgets,
+                               .num_widgets = ARRAY_SIZE(lr_4spk_widgets),
                        },
                },
                .dai_num = 1,