* [PATCH 0/3] ASoC: qcom: Add QAIF AIF MI2S and TDM DAI support
@ 2026-09-18 13:31 Mohammad Rafi Shaik
2026-09-18 13:31 ` [PATCH v1 1/3] ASoC: dt-bindings: qcom: add QAIF AIF MI2S and TDM dai ids Mohammad Rafi Shaik
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Mohammad Rafi Shaik @ 2026-09-18 13:31 UTC (permalink / raw)
To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai
Cc: linux-arm-msm, linux-sound, devicetree, linux-kernel,
Mohammad Rafi Shaik, Harendra Gautam
Add support for Qualcomm Audio Interface (QAIF) AIF MI2S and TDM DAI
id's across the Qualcomm audio stack.
The new DAI IDs are required for platforms such as Shikra, Hawi, and Nord,
where QAIF audio interfaces are used to connect external audio devices.
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
---
Mohammad Rafi Shaik (3):
ASoC: dt-bindings: qcom: add QAIF AIF MI2S and TDM dai ids
ASoC: qcom: qdsp6: lpass-ports: add support for QAIF AIF MI2S and TDM dais
ASoC: qcom: sc8280xp: Handle AIF MI2S and TDM interfaces
.../bindings/sound/qcom,q6dsp-lpass-ports.yaml | 16 +++++--
include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h | 52 +++++++++++++++++++++
sound/soc/qcom/common.h | 2 +-
sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 2 +
sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c | 54 ++++++++++++++++++++++
sound/soc/qcom/sc8280xp.c | 2 +
6 files changed, 123 insertions(+), 5 deletions(-)
---
base-commit: e657a464aba873f5eaf3ca821b6e4016674492d6
change-id: 20260918-qaif_dai_id_support-0f97144c83e4
Best regards,
--
Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 1/3] ASoC: dt-bindings: qcom: add QAIF AIF MI2S and TDM dai ids
2026-09-18 13:31 [PATCH 0/3] ASoC: qcom: Add QAIF AIF MI2S and TDM DAI support Mohammad Rafi Shaik
@ 2026-09-18 13:31 ` Mohammad Rafi Shaik
2026-09-18 13:31 ` [PATCH v1 2/3] ASoC: qcom: qdsp6: lpass-ports: add support for QAIF AIF MI2S and TDM dais Mohammad Rafi Shaik
2026-09-18 13:31 ` [PATCH v1 3/3] ASoC: qcom: sc8280xp: Handle AIF MI2S and TDM interfaces Mohammad Rafi Shaik
2 siblings, 0 replies; 6+ messages in thread
From: Mohammad Rafi Shaik @ 2026-09-18 13:31 UTC (permalink / raw)
To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai
Cc: linux-arm-msm, linux-sound, devicetree, linux-kernel,
Mohammad Rafi Shaik, Harendra Gautam
Add new dai ids entries for Qualcomm Audio Interface (QAIF) AIF MI2S
and TDM audio lines.
Co-developed-by: Harendra Gautam <harendra.gautam@oss.qualcomm.com>
Signed-off-by: Harendra Gautam <harendra.gautam@oss.qualcomm.com>
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
---
.../bindings/sound/qcom,q6dsp-lpass-ports.yaml | 16 +++++--
include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h | 52 ++++++++++++++++++++++
2 files changed, 64 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml b/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml
index 3b03e2acd67e..63f53837bd9f 100644
--- a/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml
@@ -108,10 +108,15 @@ patternProperties:
properties:
reg:
contains:
- # TDM DAI ID range from PRIMARY_TDM_RX_0 - QUINARY_TDM_TX_7
+ # TDM DAI ID range from PRIMARY_TDM_RX_0 - QUINARY_TDM_TX_7 and
+ # AIF_TDM_RX_0 - AIF_TDM_TX_12
items:
- minimum: 24
- maximum: 103
+ oneOf:
+ - minimum: 24
+ maximum: 103
+ - minimum: 179
+ maximum: 204
+
then:
required:
- qcom,tdm-sync-mode
@@ -127,7 +132,8 @@ patternProperties:
contains:
# MI2S DAI ID range PRIMARY_MI2S_RX - QUATERNARY_MI2S_TX and
# QUINARY_MI2S_RX - QUINARY_MI2S_TX and
- # LPI_MI2S_RX_0 - LPI_MI2S_TX_6
+ # LPI_MI2S_RX_0 - LPI_MI2S_TX_6 and
+ # AIF_MI2S_RX_0 - AIF_MI2S_TX_12
items:
oneOf:
- minimum: 16
@@ -136,6 +142,8 @@ patternProperties:
maximum: 128
- minimum: 137
maximum: 152
+ - minimum: 153
+ maximum: 178
then:
required:
- qcom,sd-lines
diff --git a/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h b/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h
index 3a99703dbc4a..e6c792d9312f 100644
--- a/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h
+++ b/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h
@@ -156,6 +156,58 @@
#define LPI_MI2S_TX_5 150
#define LPI_MI2S_RX_6 151
#define LPI_MI2S_TX_6 152
+#define AIF_MI2S_RX_0 153
+#define AIF_MI2S_TX_0 154
+#define AIF_MI2S_RX_1 155
+#define AIF_MI2S_TX_1 156
+#define AIF_MI2S_RX_2 157
+#define AIF_MI2S_TX_2 158
+#define AIF_MI2S_RX_3 159
+#define AIF_MI2S_TX_3 160
+#define AIF_MI2S_RX_4 161
+#define AIF_MI2S_TX_4 162
+#define AIF_MI2S_RX_5 163
+#define AIF_MI2S_TX_5 164
+#define AIF_MI2S_RX_6 165
+#define AIF_MI2S_TX_6 166
+#define AIF_MI2S_RX_7 167
+#define AIF_MI2S_TX_7 168
+#define AIF_MI2S_RX_8 169
+#define AIF_MI2S_TX_8 170
+#define AIF_MI2S_RX_9 171
+#define AIF_MI2S_TX_9 172
+#define AIF_MI2S_RX_10 173
+#define AIF_MI2S_TX_10 174
+#define AIF_MI2S_RX_11 175
+#define AIF_MI2S_TX_11 176
+#define AIF_MI2S_RX_12 177
+#define AIF_MI2S_TX_12 178
+#define AIF_TDM_RX_0 179
+#define AIF_TDM_TX_0 180
+#define AIF_TDM_RX_1 181
+#define AIF_TDM_TX_1 182
+#define AIF_TDM_RX_2 183
+#define AIF_TDM_TX_2 184
+#define AIF_TDM_RX_3 185
+#define AIF_TDM_TX_3 186
+#define AIF_TDM_RX_4 187
+#define AIF_TDM_TX_4 188
+#define AIF_TDM_RX_5 189
+#define AIF_TDM_TX_5 190
+#define AIF_TDM_RX_6 191
+#define AIF_TDM_TX_6 192
+#define AIF_TDM_RX_7 193
+#define AIF_TDM_TX_7 194
+#define AIF_TDM_RX_8 195
+#define AIF_TDM_TX_8 196
+#define AIF_TDM_RX_9 197
+#define AIF_TDM_TX_9 198
+#define AIF_TDM_RX_10 199
+#define AIF_TDM_TX_10 200
+#define AIF_TDM_RX_11 201
+#define AIF_TDM_TX_11 202
+#define AIF_TDM_RX_12 203
+#define AIF_TDM_TX_12 204
#define LPASS_CLK_ID_PRI_MI2S_IBIT 1
#define LPASS_CLK_ID_PRI_MI2S_EBIT 2
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 2/3] ASoC: qcom: qdsp6: lpass-ports: add support for QAIF AIF MI2S and TDM dais
2026-09-18 13:31 [PATCH 0/3] ASoC: qcom: Add QAIF AIF MI2S and TDM DAI support Mohammad Rafi Shaik
2026-09-18 13:31 ` [PATCH v1 1/3] ASoC: dt-bindings: qcom: add QAIF AIF MI2S and TDM dai ids Mohammad Rafi Shaik
@ 2026-09-18 13:31 ` Mohammad Rafi Shaik
2026-09-18 20:50 ` Srinivas Kandagatla
2026-09-18 13:31 ` [PATCH v1 3/3] ASoC: qcom: sc8280xp: Handle AIF MI2S and TDM interfaces Mohammad Rafi Shaik
2 siblings, 1 reply; 6+ messages in thread
From: Mohammad Rafi Shaik @ 2026-09-18 13:31 UTC (permalink / raw)
To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai
Cc: linux-arm-msm, linux-sound, devicetree, linux-kernel,
Mohammad Rafi Shaik
Add support for Qualcomm Audio Interface (QAIF) AIF MI2S and TDM dais in
the dai-driver, these dais are used in Shikra, Hawi and Nord based
Qualcomm platform devices.
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
---
sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 2 ++
sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c | 54 ++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+)
diff --git a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c
index e204fd59e512..83f2711bceea 100644
--- a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c
+++ b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c
@@ -386,6 +386,7 @@ static int q6tdm_set_tdm_slot(struct snd_soc_dai *dai,
switch (dai->id) {
case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
+ case AIF_TDM_RX_0 ... AIF_TDM_TX_12:
slot_mask = (dai->id & 0x1) ? tx_mask : rx_mask;
if (slot_mask & ~cap_mask) {
dev_err(dai->dev, "%s: invalid slot mask 0x%x for %d slots\n",
@@ -474,6 +475,7 @@ static int of_q6apm_parse_dai_data(struct device *dev,
case QUINARY_MI2S_RX ... QUINARY_MI2S_TX:
case SENARY_MI2S_RX ... SENARY_MI2S_TX:
case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
+ case AIF_MI2S_RX_0 ... AIF_TDM_TX_12:
priv = &data->priv[id];
priv->mclk = of_clk_get_by_name(node, "mclk");
if (IS_ERR(priv->mclk)) {
diff --git a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c b/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c
index c3d8116ad503..f422346a50c6 100644
--- a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c
+++ b/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c
@@ -548,6 +548,32 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = {
.id = SENARY_MI2S_TX,
.name = "SEN_MI2S_TX",
},
+ Q6AFE_MI2S_RX_DAI("AIF RX0", AIF_MI2S_RX_0),
+ Q6AFE_MI2S_RX_DAI("AIF RX1", AIF_MI2S_RX_1),
+ Q6AFE_MI2S_RX_DAI("AIF RX2", AIF_MI2S_RX_2),
+ Q6AFE_MI2S_RX_DAI("AIF RX3", AIF_MI2S_RX_3),
+ Q6AFE_MI2S_RX_DAI("AIF RX4", AIF_MI2S_RX_4),
+ Q6AFE_MI2S_RX_DAI("AIF RX5", AIF_MI2S_RX_5),
+ Q6AFE_MI2S_RX_DAI("AIF RX6", AIF_MI2S_RX_6),
+ Q6AFE_MI2S_RX_DAI("AIF RX7", AIF_MI2S_RX_7),
+ Q6AFE_MI2S_RX_DAI("AIF RX8", AIF_MI2S_RX_8),
+ Q6AFE_MI2S_RX_DAI("AIF RX9", AIF_MI2S_RX_9),
+ Q6AFE_MI2S_RX_DAI("AIF RX10", AIF_MI2S_RX_10),
+ Q6AFE_MI2S_RX_DAI("AIF RX11", AIF_MI2S_RX_11),
+ Q6AFE_MI2S_RX_DAI("AIF RX12", AIF_MI2S_RX_12),
+ Q6AFE_MI2S_TX_DAI("AIF TX0", AIF_MI2S_TX_0),
+ Q6AFE_MI2S_TX_DAI("AIF TX1", AIF_MI2S_TX_1),
+ Q6AFE_MI2S_TX_DAI("AIF TX2", AIF_MI2S_TX_2),
+ Q6AFE_MI2S_TX_DAI("AIF TX3", AIF_MI2S_TX_3),
+ Q6AFE_MI2S_TX_DAI("AIF TX4", AIF_MI2S_TX_4),
+ Q6AFE_MI2S_TX_DAI("AIF TX5", AIF_MI2S_TX_5),
+ Q6AFE_MI2S_TX_DAI("AIF TX6", AIF_MI2S_TX_6),
+ Q6AFE_MI2S_TX_DAI("AIF TX7", AIF_MI2S_TX_7),
+ Q6AFE_MI2S_TX_DAI("AIF TX8", AIF_MI2S_TX_8),
+ Q6AFE_MI2S_TX_DAI("AIF TX9", AIF_MI2S_TX_9),
+ Q6AFE_MI2S_TX_DAI("AIF TX10", AIF_MI2S_TX_10),
+ Q6AFE_MI2S_TX_DAI("AIF TX11", AIF_MI2S_TX_11),
+ Q6AFE_MI2S_TX_DAI("AIF TX12", AIF_MI2S_TX_12),
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),
@@ -562,6 +588,32 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = {
Q6AFE_MI2S_TX_DAI("LPI TX4", LPI_MI2S_TX_4),
Q6AFE_MI2S_TX_DAI("LPI TX5", LPI_MI2S_TX_5),
Q6AFE_MI2S_TX_DAI("LPI TX6", LPI_MI2S_TX_6),
+ Q6AFE_TDM_PB_DAI("AIF RX0", 0, AIF_TDM_RX_0),
+ Q6AFE_TDM_PB_DAI("AIF RX1", 1, AIF_TDM_RX_1),
+ Q6AFE_TDM_PB_DAI("AIF RX2", 2, AIF_TDM_RX_2),
+ Q6AFE_TDM_PB_DAI("AIF RX3", 3, AIF_TDM_RX_3),
+ Q6AFE_TDM_PB_DAI("AIF RX4", 4, AIF_TDM_RX_4),
+ Q6AFE_TDM_PB_DAI("AIF RX5", 5, AIF_TDM_RX_5),
+ Q6AFE_TDM_PB_DAI("AIF RX6", 6, AIF_TDM_RX_6),
+ Q6AFE_TDM_PB_DAI("AIF RX7", 7, AIF_TDM_RX_7),
+ Q6AFE_TDM_PB_DAI("AIF RX8", 8, AIF_TDM_RX_8),
+ Q6AFE_TDM_PB_DAI("AIF RX9", 9, AIF_TDM_RX_9),
+ Q6AFE_TDM_PB_DAI("AIF RX10", 10, AIF_TDM_RX_10),
+ Q6AFE_TDM_PB_DAI("AIF RX11", 11, AIF_TDM_RX_11),
+ Q6AFE_TDM_PB_DAI("AIF RX12", 12, AIF_TDM_RX_12),
+ Q6AFE_TDM_CAP_DAI("AIF TX0", 0, AIF_TDM_TX_0),
+ Q6AFE_TDM_CAP_DAI("AIF TX1", 1, AIF_TDM_TX_1),
+ Q6AFE_TDM_CAP_DAI("AIF TX2", 2, AIF_TDM_TX_2),
+ Q6AFE_TDM_CAP_DAI("AIF TX3", 3, AIF_TDM_TX_3),
+ Q6AFE_TDM_CAP_DAI("AIF TX4", 4, AIF_TDM_TX_4),
+ Q6AFE_TDM_CAP_DAI("AIF TX5", 5, AIF_TDM_TX_5),
+ Q6AFE_TDM_CAP_DAI("AIF TX6", 6, AIF_TDM_TX_6),
+ Q6AFE_TDM_CAP_DAI("AIF TX7", 7, AIF_TDM_TX_7),
+ Q6AFE_TDM_CAP_DAI("AIF TX8", 8, AIF_TDM_TX_8),
+ Q6AFE_TDM_CAP_DAI("AIF TX9", 9, AIF_TDM_TX_9),
+ Q6AFE_TDM_CAP_DAI("AIF TX10", 10, AIF_TDM_TX_10),
+ Q6AFE_TDM_CAP_DAI("AIF TX11", 11, AIF_TDM_TX_11),
+ Q6AFE_TDM_CAP_DAI("AIF TX12", 12, AIF_TDM_TX_12),
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),
@@ -717,9 +769,11 @@ struct snd_soc_dai_driver *q6dsp_audio_ports_set_config(struct device *dev,
case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX:
case LPI_MI2S_RX_0 ... LPI_MI2S_TX_4:
case LPI_MI2S_RX_5 ... LPI_MI2S_TX_6:
+ case AIF_MI2S_RX_0 ... AIF_MI2S_TX_12:
q6dsp_audio_fe_dais[i].ops = cfg->q6i2s_ops;
break;
case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
+ case AIF_TDM_RX_0 ... AIF_TDM_TX_12:
q6dsp_audio_fe_dais[i].ops = cfg->q6tdm_ops;
break;
case WSA_CODEC_DMA_RX_0 ... RX_CODEC_DMA_RX_7:
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 3/3] ASoC: qcom: sc8280xp: Handle AIF MI2S and TDM interfaces
2026-09-18 13:31 [PATCH 0/3] ASoC: qcom: Add QAIF AIF MI2S and TDM DAI support Mohammad Rafi Shaik
2026-09-18 13:31 ` [PATCH v1 1/3] ASoC: dt-bindings: qcom: add QAIF AIF MI2S and TDM dai ids Mohammad Rafi Shaik
2026-09-18 13:31 ` [PATCH v1 2/3] ASoC: qcom: qdsp6: lpass-ports: add support for QAIF AIF MI2S and TDM dais Mohammad Rafi Shaik
@ 2026-09-18 13:31 ` Mohammad Rafi Shaik
2026-09-18 21:00 ` Srinivas Kandagatla
2 siblings, 1 reply; 6+ messages in thread
From: Mohammad Rafi Shaik @ 2026-09-18 13:31 UTC (permalink / raw)
To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai
Cc: linux-arm-msm, linux-sound, devicetree, linux-kernel,
Mohammad Rafi Shaik
Handle AIF MI2S and TDM DAI IDs in the SC8280XP machine driver
and extend LPASS_MAX_PORT to accommodate the additional audio
interfaces.
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
---
sound/soc/qcom/common.h | 2 +-
sound/soc/qcom/sc8280xp.c | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/sound/soc/qcom/common.h b/sound/soc/qcom/common.h
index c1deac109f24..18171656408c 100644
--- a/sound/soc/qcom/common.h
+++ b/sound/soc/qcom/common.h
@@ -7,7 +7,7 @@
#include <dt-bindings/sound/qcom,q6afe.h>
#include <sound/soc.h>
-#define LPASS_MAX_PORT (LPI_MI2S_TX_6 + 1)
+#define LPASS_MAX_PORT (AIF_TDM_TX_12 + 1)
struct qcom_snd_tdm_slot_cfg {
unsigned int tx_mask;
diff --git a/sound/soc/qcom/sc8280xp.c b/sound/soc/qcom/sc8280xp.c
index 4d48e1012cd4..0876b9be136d 100644
--- a/sound/soc/qcom/sc8280xp.c
+++ b/sound/soc/qcom/sc8280xp.c
@@ -260,6 +260,7 @@ static int sc8280xp_snd_hw_params(struct snd_pcm_substream *substream,
case QUINARY_MI2S_RX ... QUINARY_MI2S_TX:
case SENARY_MI2S_RX ... SENARY_MI2S_TX:
case LPI_MI2S_RX_0 ... LPI_MI2S_TX_4:
+ case AIF_MI2S_RX_0 ... AIF_MI2S_TX_12:
ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_BP_FP);
if (ret && ret != -ENOTSUPP)
return ret;
@@ -296,6 +297,7 @@ static int sc8280xp_snd_hw_params(struct snd_pcm_substream *substream,
}
break;
case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
+ case AIF_TDM_RX_0 ... AIF_TDM_TX_12:
return sc8280xp_tdm_hw_params(substream, params);
default:
break;
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 2/3] ASoC: qcom: qdsp6: lpass-ports: add support for QAIF AIF MI2S and TDM dais
2026-09-18 13:31 ` [PATCH v1 2/3] ASoC: qcom: qdsp6: lpass-ports: add support for QAIF AIF MI2S and TDM dais Mohammad Rafi Shaik
@ 2026-09-18 20:50 ` Srinivas Kandagatla
0 siblings, 0 replies; 6+ messages in thread
From: Srinivas Kandagatla @ 2026-09-18 20:50 UTC (permalink / raw)
To: Mohammad Rafi Shaik, Srinivas Kandagatla, Liam Girdwood,
Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jaroslav Kysela, Takashi Iwai
Cc: linux-arm-msm, linux-sound, devicetree, linux-kernel
On 9/18/26 2:31 PM, Mohammad Rafi Shaik wrote:
> Add support for Qualcomm Audio Interface (QAIF) AIF MI2S and TDM dais in
> the dai-driver, these dais are used in Shikra, Hawi and Nord based
> Qualcomm platform devices.
>
> Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
> ---
Lgtm,
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
> sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 2 ++
> sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c | 54 ++++++++++++++++++++++++++++++++
> 2 files changed, 56 insertions(+)
>
> diff --git a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c
> index e204fd59e512..83f2711bceea 100644
> --- a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c
> +++ b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c
> @@ -386,6 +386,7 @@ static int q6tdm_set_tdm_slot(struct snd_soc_dai *dai,
>
> switch (dai->id) {
> case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
> + case AIF_TDM_RX_0 ... AIF_TDM_TX_12:
> slot_mask = (dai->id & 0x1) ? tx_mask : rx_mask;
> if (slot_mask & ~cap_mask) {
> dev_err(dai->dev, "%s: invalid slot mask 0x%x for %d slots\n",
> @@ -474,6 +475,7 @@ static int of_q6apm_parse_dai_data(struct device *dev,
> case QUINARY_MI2S_RX ... QUINARY_MI2S_TX:
> case SENARY_MI2S_RX ... SENARY_MI2S_TX:
> case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
> + case AIF_MI2S_RX_0 ... AIF_TDM_TX_12:
> priv = &data->priv[id];
> priv->mclk = of_clk_get_by_name(node, "mclk");
> if (IS_ERR(priv->mclk)) {
> diff --git a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c b/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c
> index c3d8116ad503..f422346a50c6 100644
> --- a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c
> +++ b/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c
> @@ -548,6 +548,32 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = {
> .id = SENARY_MI2S_TX,
> .name = "SEN_MI2S_TX",
> },
> + Q6AFE_MI2S_RX_DAI("AIF RX0", AIF_MI2S_RX_0),
> + Q6AFE_MI2S_RX_DAI("AIF RX1", AIF_MI2S_RX_1),
> + Q6AFE_MI2S_RX_DAI("AIF RX2", AIF_MI2S_RX_2),
> + Q6AFE_MI2S_RX_DAI("AIF RX3", AIF_MI2S_RX_3),
> + Q6AFE_MI2S_RX_DAI("AIF RX4", AIF_MI2S_RX_4),
> + Q6AFE_MI2S_RX_DAI("AIF RX5", AIF_MI2S_RX_5),
> + Q6AFE_MI2S_RX_DAI("AIF RX6", AIF_MI2S_RX_6),
> + Q6AFE_MI2S_RX_DAI("AIF RX7", AIF_MI2S_RX_7),
> + Q6AFE_MI2S_RX_DAI("AIF RX8", AIF_MI2S_RX_8),
> + Q6AFE_MI2S_RX_DAI("AIF RX9", AIF_MI2S_RX_9),
> + Q6AFE_MI2S_RX_DAI("AIF RX10", AIF_MI2S_RX_10),
> + Q6AFE_MI2S_RX_DAI("AIF RX11", AIF_MI2S_RX_11),
> + Q6AFE_MI2S_RX_DAI("AIF RX12", AIF_MI2S_RX_12),
> + Q6AFE_MI2S_TX_DAI("AIF TX0", AIF_MI2S_TX_0),
> + Q6AFE_MI2S_TX_DAI("AIF TX1", AIF_MI2S_TX_1),
> + Q6AFE_MI2S_TX_DAI("AIF TX2", AIF_MI2S_TX_2),
> + Q6AFE_MI2S_TX_DAI("AIF TX3", AIF_MI2S_TX_3),
> + Q6AFE_MI2S_TX_DAI("AIF TX4", AIF_MI2S_TX_4),
> + Q6AFE_MI2S_TX_DAI("AIF TX5", AIF_MI2S_TX_5),
> + Q6AFE_MI2S_TX_DAI("AIF TX6", AIF_MI2S_TX_6),
> + Q6AFE_MI2S_TX_DAI("AIF TX7", AIF_MI2S_TX_7),
> + Q6AFE_MI2S_TX_DAI("AIF TX8", AIF_MI2S_TX_8),
> + Q6AFE_MI2S_TX_DAI("AIF TX9", AIF_MI2S_TX_9),
> + Q6AFE_MI2S_TX_DAI("AIF TX10", AIF_MI2S_TX_10),
> + Q6AFE_MI2S_TX_DAI("AIF TX11", AIF_MI2S_TX_11),
> + Q6AFE_MI2S_TX_DAI("AIF TX12", AIF_MI2S_TX_12),
> 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),
> @@ -562,6 +588,32 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = {
> Q6AFE_MI2S_TX_DAI("LPI TX4", LPI_MI2S_TX_4),
> Q6AFE_MI2S_TX_DAI("LPI TX5", LPI_MI2S_TX_5),
> Q6AFE_MI2S_TX_DAI("LPI TX6", LPI_MI2S_TX_6),
> + Q6AFE_TDM_PB_DAI("AIF RX0", 0, AIF_TDM_RX_0),
> + Q6AFE_TDM_PB_DAI("AIF RX1", 1, AIF_TDM_RX_1),
> + Q6AFE_TDM_PB_DAI("AIF RX2", 2, AIF_TDM_RX_2),
> + Q6AFE_TDM_PB_DAI("AIF RX3", 3, AIF_TDM_RX_3),
> + Q6AFE_TDM_PB_DAI("AIF RX4", 4, AIF_TDM_RX_4),
> + Q6AFE_TDM_PB_DAI("AIF RX5", 5, AIF_TDM_RX_5),
> + Q6AFE_TDM_PB_DAI("AIF RX6", 6, AIF_TDM_RX_6),
> + Q6AFE_TDM_PB_DAI("AIF RX7", 7, AIF_TDM_RX_7),
> + Q6AFE_TDM_PB_DAI("AIF RX8", 8, AIF_TDM_RX_8),
> + Q6AFE_TDM_PB_DAI("AIF RX9", 9, AIF_TDM_RX_9),
> + Q6AFE_TDM_PB_DAI("AIF RX10", 10, AIF_TDM_RX_10),
> + Q6AFE_TDM_PB_DAI("AIF RX11", 11, AIF_TDM_RX_11),
> + Q6AFE_TDM_PB_DAI("AIF RX12", 12, AIF_TDM_RX_12),
> + Q6AFE_TDM_CAP_DAI("AIF TX0", 0, AIF_TDM_TX_0),
> + Q6AFE_TDM_CAP_DAI("AIF TX1", 1, AIF_TDM_TX_1),
> + Q6AFE_TDM_CAP_DAI("AIF TX2", 2, AIF_TDM_TX_2),
> + Q6AFE_TDM_CAP_DAI("AIF TX3", 3, AIF_TDM_TX_3),
> + Q6AFE_TDM_CAP_DAI("AIF TX4", 4, AIF_TDM_TX_4),
> + Q6AFE_TDM_CAP_DAI("AIF TX5", 5, AIF_TDM_TX_5),
> + Q6AFE_TDM_CAP_DAI("AIF TX6", 6, AIF_TDM_TX_6),
> + Q6AFE_TDM_CAP_DAI("AIF TX7", 7, AIF_TDM_TX_7),
> + Q6AFE_TDM_CAP_DAI("AIF TX8", 8, AIF_TDM_TX_8),
> + Q6AFE_TDM_CAP_DAI("AIF TX9", 9, AIF_TDM_TX_9),
> + Q6AFE_TDM_CAP_DAI("AIF TX10", 10, AIF_TDM_TX_10),
> + Q6AFE_TDM_CAP_DAI("AIF TX11", 11, AIF_TDM_TX_11),
> + Q6AFE_TDM_CAP_DAI("AIF TX12", 12, AIF_TDM_TX_12),
> 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),
> @@ -717,9 +769,11 @@ struct snd_soc_dai_driver *q6dsp_audio_ports_set_config(struct device *dev,
> case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX:
> case LPI_MI2S_RX_0 ... LPI_MI2S_TX_4:
> case LPI_MI2S_RX_5 ... LPI_MI2S_TX_6:
> + case AIF_MI2S_RX_0 ... AIF_MI2S_TX_12:
> q6dsp_audio_fe_dais[i].ops = cfg->q6i2s_ops;
> break;
> case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
> + case AIF_TDM_RX_0 ... AIF_TDM_TX_12:
> q6dsp_audio_fe_dais[i].ops = cfg->q6tdm_ops;
> break;
> case WSA_CODEC_DMA_RX_0 ... RX_CODEC_DMA_RX_7:
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 3/3] ASoC: qcom: sc8280xp: Handle AIF MI2S and TDM interfaces
2026-09-18 13:31 ` [PATCH v1 3/3] ASoC: qcom: sc8280xp: Handle AIF MI2S and TDM interfaces Mohammad Rafi Shaik
@ 2026-09-18 21:00 ` Srinivas Kandagatla
0 siblings, 0 replies; 6+ messages in thread
From: Srinivas Kandagatla @ 2026-09-18 21:00 UTC (permalink / raw)
To: Mohammad Rafi Shaik, Srinivas Kandagatla, Liam Girdwood,
Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jaroslav Kysela, Takashi Iwai
Cc: linux-arm-msm, linux-sound, devicetree, linux-kernel
On 9/18/26 2:31 PM, Mohammad Rafi Shaik wrote:
> Handle AIF MI2S and TDM DAI IDs in the SC8280XP machine driver
> and extend LPASS_MAX_PORT to accommodate the additional audio
> interfaces.
>
> Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
> ---
lgtm
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
> sound/soc/qcom/common.h | 2 +-
> sound/soc/qcom/sc8280xp.c | 2 ++
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/sound/soc/qcom/common.h b/sound/soc/qcom/common.h
> index c1deac109f24..18171656408c 100644
> --- a/sound/soc/qcom/common.h
> +++ b/sound/soc/qcom/common.h
> @@ -7,7 +7,7 @@
> #include <dt-bindings/sound/qcom,q6afe.h>
> #include <sound/soc.h>
>
> -#define LPASS_MAX_PORT (LPI_MI2S_TX_6 + 1)
> +#define LPASS_MAX_PORT (AIF_TDM_TX_12 + 1)
Only concern I have is that we are now bloating the array. We should fix
this before it gets out of hand.
--srini
>
> struct qcom_snd_tdm_slot_cfg {
> unsigned int tx_mask;
> diff --git a/sound/soc/qcom/sc8280xp.c b/sound/soc/qcom/sc8280xp.c
> index 4d48e1012cd4..0876b9be136d 100644
> --- a/sound/soc/qcom/sc8280xp.c
> +++ b/sound/soc/qcom/sc8280xp.c
> @@ -260,6 +260,7 @@ static int sc8280xp_snd_hw_params(struct snd_pcm_substream *substream,
> case QUINARY_MI2S_RX ... QUINARY_MI2S_TX:
> case SENARY_MI2S_RX ... SENARY_MI2S_TX:
> case LPI_MI2S_RX_0 ... LPI_MI2S_TX_4:
> + case AIF_MI2S_RX_0 ... AIF_MI2S_TX_12:
> ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_BP_FP);
> if (ret && ret != -ENOTSUPP)
> return ret;
> @@ -296,6 +297,7 @@ static int sc8280xp_snd_hw_params(struct snd_pcm_substream *substream,
> }
> break;
> case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
> + case AIF_TDM_RX_0 ... AIF_TDM_TX_12:
> return sc8280xp_tdm_hw_params(substream, params);
> default:
> break;
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-09-18 21:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-18 13:31 [PATCH 0/3] ASoC: qcom: Add QAIF AIF MI2S and TDM DAI support Mohammad Rafi Shaik
2026-09-18 13:31 ` [PATCH v1 1/3] ASoC: dt-bindings: qcom: add QAIF AIF MI2S and TDM dai ids Mohammad Rafi Shaik
2026-09-18 13:31 ` [PATCH v1 2/3] ASoC: qcom: qdsp6: lpass-ports: add support for QAIF AIF MI2S and TDM dais Mohammad Rafi Shaik
2026-09-18 20:50 ` Srinivas Kandagatla
2026-09-18 13:31 ` [PATCH v1 3/3] ASoC: qcom: sc8280xp: Handle AIF MI2S and TDM interfaces Mohammad Rafi Shaik
2026-09-18 21:00 ` Srinivas Kandagatla
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®