Re: [PATCH v6 07/15] ASoC: qdsp6: q6afe: add internal mi2s support

Srinivas Kandagatla <[email protected]> Thu, 30 Jul 2026 23:51:55 +0100
Newsgroups org.kernel.vger.linux-sound,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Message-ID <[email protected]>

On 7/30/26 6:43 PM, Richard Acayan wrote:
> The bindings for LPI MI2S ports, originally exclusive to q6apm, can be
> used for internal MI2S ports on q6afe. Add the port mappings for
> internal MI2S, found on the Snapdragon 660 internal sound card.
> 
> Signed-off-by: Richard Acayan <[email protected]>
> ---
lgtm,

Reviewed-by: Srinivas Kandagatla <[email protected]>

--srini

>  sound/soc/qcom/qdsp6/q6afe.c | 56 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 56 insertions(+)
> 
> diff --git a/sound/soc/qcom/qdsp6/q6afe.c b/sound/soc/qcom/qdsp6/q6afe.c
> index 40237267fda0..1d68a80e8e0c 100644
> --- a/sound/soc/qcom/qdsp6/q6afe.c
> +++ b/sound/soc/qcom/qdsp6/q6afe.c
> @@ -132,6 +132,20 @@
>  #define AFE_PORT_ID_QUINARY_MI2S_TX	    0x1017
>  #define AFE_PORT_ID_SENARY_MI2S_RX          0x1018
>  #define AFE_PORT_ID_SENARY_MI2S_TX          0x1019
> +#define AFE_PORT_ID_INT0_MI2S_RX	    0x102e
> +#define AFE_PORT_ID_INT0_MI2S_TX	    0x102f
> +#define AFE_PORT_ID_INT1_MI2S_RX	    0x1030
> +#define AFE_PORT_ID_INT1_MI2S_TX	    0x1031
> +#define AFE_PORT_ID_INT2_MI2S_RX	    0x1032
> +#define AFE_PORT_ID_INT2_MI2S_TX	    0x1033
> +#define AFE_PORT_ID_INT3_MI2S_RX	    0x1034
> +#define AFE_PORT_ID_INT3_MI2S_TX	    0x1035
> +#define AFE_PORT_ID_INT4_MI2S_RX	    0x1036
> +#define AFE_PORT_ID_INT4_MI2S_TX	    0x1037
> +#define AFE_PORT_ID_INT5_MI2S_RX	    0x1038
> +#define AFE_PORT_ID_INT5_MI2S_TX	    0x1039
> +#define AFE_PORT_ID_INT6_MI2S_RX	    0x103a
> +#define AFE_PORT_ID_INT6_MI2S_TX	    0x103b
>  
>  /* Start of the range of port IDs for TDM devices. */
>  #define AFE_PORT_ID_TDM_PORT_RANGE_START	0x9000
> @@ -931,6 +945,34 @@ static struct afe_port_map port_maps[AFE_PORT_MAX] = {
>  	[RX_CODEC_DMA_RX_7] = { AFE_PORT_ID_RX_CODEC_DMA_RX_7,
>  				RX_CODEC_DMA_RX_7, 1, 1},
>  	[USB_RX] = { AFE_PORT_ID_USB_RX, USB_RX, 1, 1},
> +	[LPI_MI2S_RX_0] = { AFE_PORT_ID_INT0_MI2S_RX,
> +				LPI_MI2S_RX_0, 1, 1},
> +	[LPI_MI2S_TX_0] = { AFE_PORT_ID_INT0_MI2S_TX,
> +				LPI_MI2S_TX_0, 0, 1},
> +	[LPI_MI2S_RX_1] = { AFE_PORT_ID_INT1_MI2S_RX,
> +				LPI_MI2S_RX_1, 1, 1},
> +	[LPI_MI2S_TX_1] = { AFE_PORT_ID_INT1_MI2S_TX,
> +				LPI_MI2S_TX_1, 0, 1},
> +	[LPI_MI2S_RX_2] = { AFE_PORT_ID_INT2_MI2S_RX,
> +				LPI_MI2S_RX_2, 1, 1},
> +	[LPI_MI2S_TX_2] = { AFE_PORT_ID_INT2_MI2S_TX,
> +				LPI_MI2S_TX_2, 0, 1},
> +	[LPI_MI2S_RX_3] = { AFE_PORT_ID_INT3_MI2S_RX,
> +				LPI_MI2S_RX_3, 1, 1},
> +	[LPI_MI2S_TX_3] = { AFE_PORT_ID_INT3_MI2S_TX,
> +				LPI_MI2S_TX_3, 0, 1},
> +	[LPI_MI2S_RX_4] = { AFE_PORT_ID_INT4_MI2S_RX,
> +				LPI_MI2S_RX_4, 1, 1},
> +	[LPI_MI2S_TX_4] = { AFE_PORT_ID_INT4_MI2S_TX,
> +				LPI_MI2S_TX_4, 0, 1},
> +	[LPI_MI2S_RX_5] = { AFE_PORT_ID_INT5_MI2S_RX,
> +				LPI_MI2S_RX_5, 1, 1},
> +	[LPI_MI2S_TX_5] = { AFE_PORT_ID_INT5_MI2S_TX,
> +				LPI_MI2S_TX_5, 0, 1},
> +	[LPI_MI2S_RX_6] = { AFE_PORT_ID_INT6_MI2S_RX,
> +				LPI_MI2S_RX_6, 1, 1},
> +	[LPI_MI2S_TX_6] = { AFE_PORT_ID_INT6_MI2S_TX,
> +				LPI_MI2S_TX_6, 0, 1},
>  };
>  
>  static void q6afe_port_free(struct kref *ref)
> @@ -1785,6 +1827,20 @@ struct q6afe_port *q6afe_port_get_from_id(struct device *dev, int id)
>  	case AFE_PORT_ID_QUINARY_MI2S_TX:
>  	case AFE_PORT_ID_SENARY_MI2S_RX:
>  	case AFE_PORT_ID_SENARY_MI2S_TX:
> +	case AFE_PORT_ID_INT0_MI2S_RX:
> +	case AFE_PORT_ID_INT0_MI2S_TX:
> +	case AFE_PORT_ID_INT1_MI2S_RX:
> +	case AFE_PORT_ID_INT1_MI2S_TX:
> +	case AFE_PORT_ID_INT2_MI2S_RX:
> +	case AFE_PORT_ID_INT2_MI2S_TX:
> +	case AFE_PORT_ID_INT3_MI2S_RX:
> +	case AFE_PORT_ID_INT3_MI2S_TX:
> +	case AFE_PORT_ID_INT4_MI2S_RX:
> +	case AFE_PORT_ID_INT4_MI2S_TX:
> +	case AFE_PORT_ID_INT5_MI2S_RX:
> +	case AFE_PORT_ID_INT5_MI2S_TX:
> +	case AFE_PORT_ID_INT6_MI2S_RX:
> +	case AFE_PORT_ID_INT6_MI2S_TX:
>  		cfg_type = AFE_PARAM_ID_I2S_CONFIG;
>  		break;
>  	case AFE_PORT_ID_PRIMARY_TDM_RX ... AFE_PORT_ID_QUINARY_TDM_TX_7: