Unverified Commit bcd0df1e authored by Srinivas Kandagatla's avatar Srinivas Kandagatla Committed by Mark Brown
Browse files

ASoC: qcom: qdsp6: lpass-ports: add support for LPASS LPI MI2S dais



Add support for LPASS LPI MI2S dais in the dai-driver, these dais are
used in Monaco based platform devices.

Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Link: https://patch.msgid.link/20260402081118.348071-9-srinivas.kandagatla@oss.qualcomm.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent d49ee8fa
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
@@ -96,6 +96,42 @@
		.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: