]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: qcom: qdsp6: lpass-ports: add support for LPASS LPI MI2S dais
authorSrinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Thu, 2 Apr 2026 08:11:13 +0000 (08:11 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 2 Apr 2026 15:33:44 +0000 (16:33 +0100)
Add support for LPASS LPI MI2S dais in the dai-driver, these dais are
used in Monaco based platform devices.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Link: https://patch.msgid.link/20260402081118.348071-9-srinivas.kandagatla@oss.qualcomm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c

index 4eed54b071a5c48bc20675b7efd05cd1e1f5c105..d31388ed3ccf9b231d93d247331ce023473a52a9 100644 (file)
                .id = did,                                              \
        }
 
+#define Q6AFE_MI2S_RX_DAI(pre, did) {                          \
+               .playback = {                                           \
+                       .stream_name = pre" MI2S Playback",     \
+                       .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
+                               SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
+                               SNDRV_PCM_RATE_176400,                  \
+                       .formats = SNDRV_PCM_FMTBIT_S16_LE |            \
+                                  SNDRV_PCM_FMTBIT_S24_LE |            \
+                                  SNDRV_PCM_FMTBIT_S32_LE,             \
+                       .channels_min = 1,                              \
+                       .channels_max = 8,                              \
+                       .rate_min = 8000,                               \
+                       .rate_max = 176400,                             \
+               },                                                      \
+               .name = #did,                                           \
+               .id = did,                                              \
+       }
+
+#define Q6AFE_MI2S_TX_DAI(pre, did) {                          \
+               .capture = {                                            \
+                       .stream_name = pre" MI2S Capture",      \
+                       .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
+                               SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
+                               SNDRV_PCM_RATE_176400,                  \
+                       .formats = SNDRV_PCM_FMTBIT_S16_LE |            \
+                                  SNDRV_PCM_FMTBIT_S24_LE |            \
+                                  SNDRV_PCM_FMTBIT_S32_LE,             \
+                       .channels_min = 1,                              \
+                       .channels_max = 8,                              \
+                       .rate_min = 8000,                               \
+                       .rate_max = 176400,                             \
+               },                                                      \
+               .name = #did,                                           \
+               .id = did,                                              \
+       }
+
 static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = {
        {
                .playback = {
@@ -484,6 +520,16 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = {
                .id = QUINARY_MI2S_TX,
                .name = "QUIN_MI2S_TX",
        },
+       Q6AFE_MI2S_RX_DAI("LPI RX0", LPI_MI2S_RX_0),
+       Q6AFE_MI2S_RX_DAI("LPI RX1", LPI_MI2S_RX_1),
+       Q6AFE_MI2S_RX_DAI("LPI RX2", LPI_MI2S_RX_2),
+       Q6AFE_MI2S_RX_DAI("LPI RX3", LPI_MI2S_RX_3),
+       Q6AFE_MI2S_RX_DAI("LPI RX4", LPI_MI2S_RX_4),
+       Q6AFE_MI2S_TX_DAI("LPI TX0", LPI_MI2S_TX_0),
+       Q6AFE_MI2S_TX_DAI("LPI TX1", LPI_MI2S_TX_1),
+       Q6AFE_MI2S_TX_DAI("LPI TX2", LPI_MI2S_TX_2),
+       Q6AFE_MI2S_TX_DAI("LPI TX3", LPI_MI2S_TX_3),
+       Q6AFE_MI2S_TX_DAI("LPI TX4", LPI_MI2S_TX_4),
        Q6AFE_TDM_PB_DAI("Primary", 0, PRIMARY_TDM_RX_0),
        Q6AFE_TDM_PB_DAI("Primary", 1, PRIMARY_TDM_RX_1),
        Q6AFE_TDM_PB_DAI("Primary", 2, PRIMARY_TDM_RX_2),
@@ -636,6 +682,7 @@ struct snd_soc_dai_driver *q6dsp_audio_ports_set_config(struct device *dev,
                        break;
                case QUINARY_MI2S_RX ... QUINARY_MI2S_TX:
                case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX:
+               case LPI_MI2S_RX_0 ... LPI_MI2S_TX_4:
                        q6dsp_audio_fe_dais[i].ops = cfg->q6i2s_ops;
                        break;
                case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7: