ASoC: qcom: q6dsp: Add Senary MI2S audio interface support

Backport of the Senary MI2S port support merged upstream in 7.2-rc1
(series "ASoC: qcom: q6dsp: few fixes and enhancements"), using the
same port IDs (SENARY_MI2S_RX=147/TX=148; 137-146 are reserved for the
upstream LPI MI2S ports) so device trees remain compatible across the
rebase. Needed for the Fairphone (Gen. 6) speaker amplifiers, which sit
on Senary MI2S.

Assisted-by: Claude:claude-fable-5
Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
This commit is contained in:
Jorijn van der Graaf 2026-07-04 02:55:12 +02:00
commit eca3e60bc1
2 changed files with 32 additions and 0 deletions

View file

@ -140,6 +140,9 @@
#define DISPLAY_PORT_RX_6 134
#define DISPLAY_PORT_RX_7 135
#define USB_RX 136
/* 137-146 reserved for LPI MI2S (upstream 7.2) */
#define SENARY_MI2S_RX 147
#define SENARY_MI2S_TX 148
#define LPASS_CLK_ID_PRI_MI2S_IBIT 1
#define LPASS_CLK_ID_PRI_MI2S_EBIT 2

View file

@ -483,6 +483,34 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = {
},
.id = QUINARY_MI2S_TX,
.name = "QUIN_MI2S_TX",
}, {
.playback = {
.stream_name = "Senary MI2S Playback",
.rates = SNDRV_PCM_RATE_8000_192000,
.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 = 192000,
},
.id = SENARY_MI2S_RX,
.name = "SEN_MI2S_RX",
}, {
.capture = {
.stream_name = "Senary MI2S Capture",
.rates = SNDRV_PCM_RATE_8000_192000,
.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 = 192000,
},
.id = SENARY_MI2S_TX,
.name = "SEN_MI2S_TX",
},
Q6AFE_TDM_PB_DAI("Primary", 0, PRIMARY_TDM_RX_0),
Q6AFE_TDM_PB_DAI("Primary", 1, PRIMARY_TDM_RX_1),
@ -635,6 +663,7 @@ struct snd_soc_dai_driver *q6dsp_audio_ports_set_config(struct device *dev,
q6dsp_audio_fe_dais[i].ops = cfg->q6slim_ops;
break;
case QUINARY_MI2S_RX ... QUINARY_MI2S_TX:
case SENARY_MI2S_RX ... SENARY_MI2S_TX:
case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX:
q6dsp_audio_fe_dais[i].ops = cfg->q6i2s_ops;
break;