mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [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®