Re: [RFC PATCH 05/13] ASoC: qcom: audioreach: add q6apm support

From: Rob Herring
Date: Fri Jun 18 2021 - 16:17:29 EST


On Mon, Jun 07, 2021 at 04:28:28PM +0100, Srinivas Kandagatla wrote:
> Add support to q6apm (Audio Process Manager) component which is
> core Audioreach service running in the DSP.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx>
> ---
> include/dt-bindings/sound/qcom,q6apm.h | 215 ++++++++

This goes in the binding patch.

> sound/soc/qcom/audioreach/Makefile | 2 +-
> sound/soc/qcom/audioreach/audioreach.c | 252 +++++++++
> sound/soc/qcom/audioreach/audioreach.h | 6 +
> sound/soc/qcom/audioreach/q6apm.c | 695 +++++++++++++++++++++++++
> sound/soc/qcom/audioreach/q6apm.h | 171 ++++++
> 6 files changed, 1340 insertions(+), 1 deletion(-)
> create mode 100644 include/dt-bindings/sound/qcom,q6apm.h
> create mode 100644 sound/soc/qcom/audioreach/q6apm.c
> create mode 100644 sound/soc/qcom/audioreach/q6apm.h
>
> diff --git a/include/dt-bindings/sound/qcom,q6apm.h b/include/dt-bindings/sound/qcom,q6apm.h
> new file mode 100644
> index 000000000000..38e3a426b15a
> --- /dev/null
> +++ b/include/dt-bindings/sound/qcom,q6apm.h
> @@ -0,0 +1,215 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

Dual license.

> +#ifndef __DT_BINDINGS_Q6_APM_H__
> +#define __DT_BINDINGS_Q6_APM_H__
> +
> +#define MSM_FRONTEND_DAI_MULTIMEDIA1 1
> +#define MSM_FRONTEND_DAI_MULTIMEDIA2 2
> +#define MSM_FRONTEND_DAI_MULTIMEDIA3 3
> +#define MSM_FRONTEND_DAI_MULTIMEDIA4 4
> +#define MSM_FRONTEND_DAI_MULTIMEDIA5 5
> +#define MSM_FRONTEND_DAI_MULTIMEDIA6 6
> +#define MSM_FRONTEND_DAI_MULTIMEDIA7 7
> +#define MSM_FRONTEND_DAI_MULTIMEDIA8 8
> +
> +/* Audio Process Manager (APM) virtual ports IDs */
> +#define HDMI_RX 1
> +#define SLIMBUS_0_RX 2
> +#define SLIMBUS_0_TX 3
> +#define SLIMBUS_1_RX 4
> +#define SLIMBUS_1_TX 5
> +#define SLIMBUS_2_RX 6
> +#define SLIMBUS_2_TX 7
> +#define SLIMBUS_3_RX 8
> +#define SLIMBUS_3_TX 9
> +#define SLIMBUS_4_RX 10
> +#define SLIMBUS_4_TX 11
> +#define SLIMBUS_5_RX 12
> +#define SLIMBUS_5_TX 13
> +#define SLIMBUS_6_RX 14
> +#define SLIMBUS_6_TX 15
> +#define PRIMARY_MI2S_RX 16
> +#define PRIMARY_MI2S_TX 17
> +#define SECONDARY_MI2S_RX 18
> +#define SECONDARY_MI2S_TX 19
> +#define TERTIARY_MI2S_RX 20
> +#define TERTIARY_MI2S_TX 21
> +#define QUATERNARY_MI2S_RX 22
> +#define QUATERNARY_MI2S_TX 23
> +#define PRIMARY_TDM_RX_0 24
> +#define PRIMARY_TDM_TX_0 25
> +#define PRIMARY_TDM_RX_1 26
> +#define PRIMARY_TDM_TX_1 27
> +#define PRIMARY_TDM_RX_2 28
> +#define PRIMARY_TDM_TX_2 29
> +#define PRIMARY_TDM_RX_3 30
> +#define PRIMARY_TDM_TX_3 31
> +#define PRIMARY_TDM_RX_4 32
> +#define PRIMARY_TDM_TX_4 33
> +#define PRIMARY_TDM_RX_5 34
> +#define PRIMARY_TDM_TX_5 35
> +#define PRIMARY_TDM_RX_6 36
> +#define PRIMARY_TDM_TX_6 37
> +#define PRIMARY_TDM_RX_7 38
> +#define PRIMARY_TDM_TX_7 39
> +#define SECONDARY_TDM_RX_0 40
> +#define SECONDARY_TDM_TX_0 41
> +#define SECONDARY_TDM_RX_1 42
> +#define SECONDARY_TDM_TX_1 43
> +#define SECONDARY_TDM_RX_2 44
> +#define SECONDARY_TDM_TX_2 45
> +#define SECONDARY_TDM_RX_3 46
> +#define SECONDARY_TDM_TX_3 47
> +#define SECONDARY_TDM_RX_4 48
> +#define SECONDARY_TDM_TX_4 49
> +#define SECONDARY_TDM_RX_5 50
> +#define SECONDARY_TDM_TX_5 51
> +#define SECONDARY_TDM_RX_6 52
> +#define SECONDARY_TDM_TX_6 53
> +#define SECONDARY_TDM_RX_7 54
> +#define SECONDARY_TDM_TX_7 55
> +#define TERTIARY_TDM_RX_0 56
> +#define TERTIARY_TDM_TX_0 57
> +#define TERTIARY_TDM_RX_1 58
> +#define TERTIARY_TDM_TX_1 59
> +#define TERTIARY_TDM_RX_2 60
> +#define TERTIARY_TDM_TX_2 61
> +#define TERTIARY_TDM_RX_3 62
> +#define TERTIARY_TDM_TX_3 63
> +#define TERTIARY_TDM_RX_4 64
> +#define TERTIARY_TDM_TX_4 65
> +#define TERTIARY_TDM_RX_5 66
> +#define TERTIARY_TDM_TX_5 67
> +#define TERTIARY_TDM_RX_6 68
> +#define TERTIARY_TDM_TX_6 69
> +#define TERTIARY_TDM_RX_7 70
> +#define TERTIARY_TDM_TX_7 71
> +#define QUATERNARY_TDM_RX_0 72
> +#define QUATERNARY_TDM_TX_0 73
> +#define QUATERNARY_TDM_RX_1 74
> +#define QUATERNARY_TDM_TX_1 75
> +#define QUATERNARY_TDM_RX_2 76
> +#define QUATERNARY_TDM_TX_2 77
> +#define QUATERNARY_TDM_RX_3 78
> +#define QUATERNARY_TDM_TX_3 79
> +#define QUATERNARY_TDM_RX_4 80
> +#define QUATERNARY_TDM_TX_4 81
> +#define QUATERNARY_TDM_RX_5 82
> +#define QUATERNARY_TDM_TX_5 83
> +#define QUATERNARY_TDM_RX_6 84
> +#define QUATERNARY_TDM_TX_6 85
> +#define QUATERNARY_TDM_RX_7 86
> +#define QUATERNARY_TDM_TX_7 87
> +#define QUINARY_TDM_RX_0 88
> +#define QUINARY_TDM_TX_0 89
> +#define QUINARY_TDM_RX_1 90
> +#define QUINARY_TDM_TX_1 91
> +#define QUINARY_TDM_RX_2 92
> +#define QUINARY_TDM_TX_2 93
> +#define QUINARY_TDM_RX_3 94
> +#define QUINARY_TDM_TX_3 95
> +#define QUINARY_TDM_RX_4 96
> +#define QUINARY_TDM_TX_4 97
> +#define QUINARY_TDM_RX_5 98
> +#define QUINARY_TDM_TX_5 99
> +#define QUINARY_TDM_RX_6 100
> +#define QUINARY_TDM_TX_6 101
> +#define QUINARY_TDM_RX_7 102
> +#define QUINARY_TDM_TX_7 103
> +#define DISPLAY_PORT_RX 104
> +#define WSA_CODEC_DMA_RX_0 105
> +#define WSA_CODEC_DMA_TX_0 106
> +#define WSA_CODEC_DMA_RX_1 107
> +#define WSA_CODEC_DMA_TX_1 108
> +#define WSA_CODEC_DMA_TX_2 109
> +#define VA_CODEC_DMA_TX_0 110
> +#define VA_CODEC_DMA_TX_1 111
> +#define VA_CODEC_DMA_TX_2 112
> +#define RX_CODEC_DMA_RX_0 113
> +#define TX_CODEC_DMA_TX_0 114
> +#define RX_CODEC_DMA_RX_1 115
> +#define TX_CODEC_DMA_TX_1 116
> +#define RX_CODEC_DMA_RX_2 117
> +#define TX_CODEC_DMA_TX_2 118
> +#define RX_CODEC_DMA_RX_3 119
> +#define TX_CODEC_DMA_TX_3 120
> +#define RX_CODEC_DMA_RX_4 121
> +#define TX_CODEC_DMA_TX_4 122
> +#define RX_CODEC_DMA_RX_5 123
> +#define TX_CODEC_DMA_TX_5 124
> +#define RX_CODEC_DMA_RX_6 125
> +#define RX_CODEC_DMA_RX_7 126
> +
> +#define LPASS_CLK_ID_PRI_MI2S_IBIT 1
> +#define LPASS_CLK_ID_PRI_MI2S_EBIT 2
> +#define LPASS_CLK_ID_SEC_MI2S_IBIT 3
> +#define LPASS_CLK_ID_SEC_MI2S_EBIT 4
> +#define LPASS_CLK_ID_TER_MI2S_IBIT 5
> +#define LPASS_CLK_ID_TER_MI2S_EBIT 6
> +#define LPASS_CLK_ID_QUAD_MI2S_IBIT 7
> +#define LPASS_CLK_ID_QUAD_MI2S_EBIT 8
> +#define LPASS_CLK_ID_SPEAKER_I2S_IBIT 9
> +#define LPASS_CLK_ID_SPEAKER_I2S_EBIT 10
> +#define LPASS_CLK_ID_SPEAKER_I2S_OSR 11
> +#define LPASS_CLK_ID_QUI_MI2S_IBIT 12
> +#define LPASS_CLK_ID_QUI_MI2S_EBIT 13
> +#define LPASS_CLK_ID_SEN_MI2S_IBIT 14
> +#define LPASS_CLK_ID_SEN_MI2S_EBIT 15
> +#define LPASS_CLK_ID_INT0_MI2S_IBIT 16
> +#define LPASS_CLK_ID_INT1_MI2S_IBIT 17
> +#define LPASS_CLK_ID_INT2_MI2S_IBIT 18
> +#define LPASS_CLK_ID_INT3_MI2S_IBIT 19
> +#define LPASS_CLK_ID_INT4_MI2S_IBIT 20
> +#define LPASS_CLK_ID_INT5_MI2S_IBIT 21
> +#define LPASS_CLK_ID_INT6_MI2S_IBIT 22
> +#define LPASS_CLK_ID_QUI_MI2S_OSR 23
> +#define LPASS_CLK_ID_PRI_PCM_IBIT 24
> +#define LPASS_CLK_ID_PRI_PCM_EBIT 25
> +#define LPASS_CLK_ID_SEC_PCM_IBIT 26
> +#define LPASS_CLK_ID_SEC_PCM_EBIT 27
> +#define LPASS_CLK_ID_TER_PCM_IBIT 28
> +#define LPASS_CLK_ID_TER_PCM_EBIT 29
> +#define LPASS_CLK_ID_QUAD_PCM_IBIT 30
> +#define LPASS_CLK_ID_QUAD_PCM_EBIT 31
> +#define LPASS_CLK_ID_QUIN_PCM_IBIT 32
> +#define LPASS_CLK_ID_QUIN_PCM_EBIT 33
> +#define LPASS_CLK_ID_QUI_PCM_OSR 34
> +#define LPASS_CLK_ID_PRI_TDM_IBIT 35
> +#define LPASS_CLK_ID_PRI_TDM_EBIT 36
> +#define LPASS_CLK_ID_SEC_TDM_IBIT 37
> +#define LPASS_CLK_ID_SEC_TDM_EBIT 38
> +#define LPASS_CLK_ID_TER_TDM_IBIT 39
> +#define LPASS_CLK_ID_TER_TDM_EBIT 40
> +#define LPASS_CLK_ID_QUAD_TDM_IBIT 41
> +#define LPASS_CLK_ID_QUAD_TDM_EBIT 42
> +#define LPASS_CLK_ID_QUIN_TDM_IBIT 43
> +#define LPASS_CLK_ID_QUIN_TDM_EBIT 44
> +#define LPASS_CLK_ID_QUIN_TDM_OSR 45
> +#define LPASS_CLK_ID_MCLK_1 46
> +#define LPASS_CLK_ID_MCLK_2 47
> +#define LPASS_CLK_ID_MCLK_3 48
> +#define LPASS_CLK_ID_MCLK_4 49
> +#define LPASS_CLK_ID_INTERNAL_DIGITAL_CODEC_CORE 50
> +#define LPASS_CLK_ID_INT_MCLK_0 51
> +#define LPASS_CLK_ID_INT_MCLK_1 52
> +#define LPASS_CLK_ID_MCLK_5 53
> +#define LPASS_CLK_ID_WSA_CORE_MCLK 54
> +#define LPASS_CLK_ID_WSA_CORE_NPL_MCLK 55
> +#define LPASS_CLK_ID_VA_CORE_MCLK 56
> +#define LPASS_CLK_ID_TX_CORE_MCLK 57
> +#define LPASS_CLK_ID_TX_CORE_NPL_MCLK 58
> +#define LPASS_CLK_ID_RX_CORE_MCLK 59
> +#define LPASS_CLK_ID_RX_CORE_NPL_MCLK 60
> +#define LPASS_CLK_ID_VA_CORE_2X_MCLK 61
> +
> +#define LPASS_HW_AVTIMER_VOTE 101
> +#define LPASS_HW_MACRO_VOTE 102
> +#define LPASS_HW_DCODEC_VOTE 103
> +
> +#define Q6APM_MAX_CLK_ID 104
> +
> +#define LPASS_CLK_ATTRIBUTE_INVALID 0x0
> +#define LPASS_CLK_ATTRIBUTE_COUPLE_NO 0x1
> +#define LPASS_CLK_ATTRIBUTE_COUPLE_DIVIDEND 0x2
> +#define LPASS_CLK_ATTRIBUTE_COUPLE_DIVISOR 0x3
> +
> +#endif /* __DT_BINDINGS_Q6_APM_H__ */