dsp: afe: Add support for codec dma interface
New codec dma interfaces have been introduced to connect LPASS and Codec macros. This change is to add codec dma interface related updates to Q6 AFE native driver. Change-Id: Ia3d1e5e80c694c8c4a7f904151adfcb504964b08 Signed-off-by: Mangesh Kunchamwar <mangeshk@codeaurora.org>
This commit is contained in:
parent
e964a75f32
commit
8c706aba34
4 changed files with 173 additions and 173 deletions
205
dsp/q6afe.c
205
dsp/q6afe.c
|
@ -575,183 +575,17 @@ static int32_t afe_callback(struct apr_client_data *data, void *priv)
|
|||
*
|
||||
* @port_id: AFE Port ID number
|
||||
*
|
||||
* Returns RX/TX type on success or -EINVAL on failure.
|
||||
* Returns RX/TX type.
|
||||
*/
|
||||
int afe_get_port_type(u16 port_id)
|
||||
{
|
||||
int ret;
|
||||
int ret = MSM_AFE_PORT_TYPE_RX;
|
||||
|
||||
switch (port_id) {
|
||||
case PRIMARY_I2S_RX:
|
||||
case SECONDARY_I2S_RX:
|
||||
case MI2S_RX:
|
||||
case HDMI_RX:
|
||||
case DISPLAY_PORT_RX:
|
||||
case AFE_PORT_ID_SPDIF_RX:
|
||||
case SLIMBUS_0_RX:
|
||||
case SLIMBUS_1_RX:
|
||||
case SLIMBUS_2_RX:
|
||||
case SLIMBUS_3_RX:
|
||||
case SLIMBUS_4_RX:
|
||||
case SLIMBUS_5_RX:
|
||||
case SLIMBUS_6_RX:
|
||||
case SLIMBUS_7_RX:
|
||||
case SLIMBUS_8_RX:
|
||||
case INT_BT_SCO_RX:
|
||||
case INT_BT_A2DP_RX:
|
||||
case INT_FM_RX:
|
||||
case VOICE_PLAYBACK_TX:
|
||||
case VOICE2_PLAYBACK_TX:
|
||||
case RT_PROXY_PORT_001_RX:
|
||||
case AUDIO_PORT_ID_I2S_RX:
|
||||
case AFE_PORT_ID_PRIMARY_MI2S_RX:
|
||||
case AFE_PORT_ID_SECONDARY_MI2S_RX:
|
||||
case AFE_PORT_ID_SECONDARY_MI2S_RX_SD1:
|
||||
case AFE_PORT_ID_TERTIARY_MI2S_RX:
|
||||
case AFE_PORT_ID_QUATERNARY_MI2S_RX:
|
||||
case AFE_PORT_ID_QUINARY_MI2S_RX:
|
||||
case AFE_PORT_ID_PRIMARY_PCM_RX:
|
||||
case AFE_PORT_ID_SECONDARY_PCM_RX:
|
||||
case AFE_PORT_ID_TERTIARY_PCM_RX:
|
||||
case AFE_PORT_ID_QUATERNARY_PCM_RX:
|
||||
case AFE_PORT_ID_QUINARY_PCM_RX:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_RX:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_RX_1:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_RX_2:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_RX_3:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_RX_4:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_RX_5:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_RX_6:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_RX_7:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_RX:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_RX_1:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_RX_2:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_RX_3:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_RX_4:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_RX_5:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_RX_6:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_RX_7:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_RX:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_RX_1:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_RX_2:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_RX_3:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_RX_4:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_RX_5:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_RX_6:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_RX_7:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_1:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_2:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_3:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_4:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_5:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_6:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX:
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX_1:
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX_2:
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX_3:
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX_4:
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX_5:
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX_6:
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX_7:
|
||||
case AFE_PORT_ID_USB_RX:
|
||||
case AFE_PORT_ID_INT0_MI2S_RX:
|
||||
case AFE_PORT_ID_INT1_MI2S_RX:
|
||||
case AFE_PORT_ID_INT2_MI2S_RX:
|
||||
case AFE_PORT_ID_INT3_MI2S_RX:
|
||||
case AFE_PORT_ID_INT4_MI2S_RX:
|
||||
case AFE_PORT_ID_INT5_MI2S_RX:
|
||||
case AFE_PORT_ID_INT6_MI2S_RX:
|
||||
ret = MSM_AFE_PORT_TYPE_RX;
|
||||
break;
|
||||
|
||||
case PRIMARY_I2S_TX:
|
||||
case SECONDARY_I2S_TX:
|
||||
case MI2S_TX:
|
||||
case DIGI_MIC_TX:
|
||||
case VOICE_RECORD_TX:
|
||||
case SLIMBUS_0_TX:
|
||||
case SLIMBUS_1_TX:
|
||||
case SLIMBUS_2_TX:
|
||||
case SLIMBUS_3_TX:
|
||||
case SLIMBUS_4_TX:
|
||||
case SLIMBUS_5_TX:
|
||||
case SLIMBUS_6_TX:
|
||||
case SLIMBUS_7_TX:
|
||||
case SLIMBUS_8_TX:
|
||||
case INT_FM_TX:
|
||||
case VOICE_RECORD_RX:
|
||||
case INT_BT_SCO_TX:
|
||||
case RT_PROXY_PORT_001_TX:
|
||||
case AFE_PORT_ID_PRIMARY_MI2S_TX:
|
||||
case AFE_PORT_ID_SECONDARY_MI2S_TX:
|
||||
case AFE_PORT_ID_TERTIARY_MI2S_TX:
|
||||
case AFE_PORT_ID_QUATERNARY_MI2S_TX:
|
||||
case AFE_PORT_ID_QUINARY_MI2S_TX:
|
||||
case AFE_PORT_ID_SENARY_MI2S_TX:
|
||||
case AFE_PORT_ID_PRIMARY_PCM_TX:
|
||||
case AFE_PORT_ID_SECONDARY_PCM_TX:
|
||||
case AFE_PORT_ID_TERTIARY_PCM_TX:
|
||||
case AFE_PORT_ID_QUATERNARY_PCM_TX:
|
||||
case AFE_PORT_ID_QUINARY_PCM_TX:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_TX:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_TX_1:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_TX_2:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_TX_3:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_TX_4:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_TX_5:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_TX_6:
|
||||
case AFE_PORT_ID_PRIMARY_TDM_TX_7:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_TX:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_TX_1:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_TX_2:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_TX_3:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_TX_4:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_TX_5:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_TX_6:
|
||||
case AFE_PORT_ID_SECONDARY_TDM_TX_7:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_TX:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_TX_1:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_TX_2:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_TX_3:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_TX_4:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_TX_5:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_TX_6:
|
||||
case AFE_PORT_ID_TERTIARY_TDM_TX_7:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_1:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_2:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_3:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_4:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_5:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_6:
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
|
||||
case AFE_PORT_ID_QUINARY_TDM_TX:
|
||||
case AFE_PORT_ID_QUINARY_TDM_TX_1:
|
||||
case AFE_PORT_ID_QUINARY_TDM_TX_2:
|
||||
case AFE_PORT_ID_QUINARY_TDM_TX_3:
|
||||
case AFE_PORT_ID_QUINARY_TDM_TX_4:
|
||||
case AFE_PORT_ID_QUINARY_TDM_TX_5:
|
||||
case AFE_PORT_ID_QUINARY_TDM_TX_6:
|
||||
case AFE_PORT_ID_QUINARY_TDM_TX_7:
|
||||
case AFE_PORT_ID_USB_TX:
|
||||
case AFE_PORT_ID_INT0_MI2S_TX:
|
||||
case AFE_PORT_ID_INT1_MI2S_TX:
|
||||
case AFE_PORT_ID_INT2_MI2S_TX:
|
||||
case AFE_PORT_ID_INT3_MI2S_TX:
|
||||
case AFE_PORT_ID_INT4_MI2S_TX:
|
||||
case AFE_PORT_ID_INT5_MI2S_TX:
|
||||
case AFE_PORT_ID_INT6_MI2S_TX:
|
||||
/* Odd numbered ports are TX and Rx are Even numbered */
|
||||
if (port_id & 0x1)
|
||||
ret = MSM_AFE_PORT_TYPE_TX;
|
||||
break;
|
||||
|
||||
default:
|
||||
WARN_ON(1);
|
||||
pr_err("%s: Invalid port id = 0x%x\n",
|
||||
__func__, port_id);
|
||||
ret = -EINVAL;
|
||||
}
|
||||
else
|
||||
ret = MSM_AFE_PORT_TYPE_RX;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -815,6 +649,15 @@ int afe_sizeof_cfg_cmd(u16 port_id)
|
|||
case AFE_PORT_ID_USB_TX:
|
||||
ret_size = SIZEOF_CFG_CMD(afe_param_id_usb_audio_cfg);
|
||||
break;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
|
||||
ret_size = SIZEOF_CFG_CMD(afe_param_id_cdc_dma_cfg_t);
|
||||
break;
|
||||
case AFE_PORT_ID_PRIMARY_PCM_RX:
|
||||
case AFE_PORT_ID_PRIMARY_PCM_TX:
|
||||
case AFE_PORT_ID_SECONDARY_PCM_RX:
|
||||
|
@ -3554,6 +3397,15 @@ static int __afe_port_start(u16 port_id, union afe_port_config *afe_config,
|
|||
case INT_FM_TX:
|
||||
cfg_type = AFE_PARAM_ID_INTERNAL_BT_FM_CONFIG;
|
||||
break;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
|
||||
cfg_type = AFE_PARAM_ID_CODEC_DMA_CONFIG;
|
||||
break;
|
||||
default:
|
||||
pr_err("%s: Invalid port id 0x%x\n", __func__, port_id);
|
||||
ret = -EINVAL;
|
||||
|
@ -4113,6 +3965,15 @@ int afe_open(u16 port_id,
|
|||
case AFE_PORT_ID_USB_TX:
|
||||
cfg_type = AFE_PARAM_ID_USB_AUDIO_CONFIG;
|
||||
break;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
|
||||
cfg_type = AFE_PARAM_ID_CODEC_DMA_CONFIG;
|
||||
break;
|
||||
default:
|
||||
pr_err("%s: Invalid port id 0x%x\n",
|
||||
__func__, port_id);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -301,6 +301,20 @@ int q6audio_get_port_index(u16 port_id)
|
|||
return IDX_AFE_PORT_ID_INT6_MI2S_RX;
|
||||
case AFE_PORT_ID_INT6_MI2S_TX:
|
||||
return IDX_AFE_PORT_ID_INT6_MI2S_TX;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
|
||||
return IDX_AFE_PORT_ID_WSA_CODEC_DMA_RX_0;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
|
||||
return IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_0;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
|
||||
return IDX_AFE_PORT_ID_WSA_CODEC_DMA_RX_1;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
|
||||
return IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_1;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
|
||||
return IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_2;
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
|
||||
return IDX_AFE_PORT_ID_VA_CODEC_DMA_TX_0;
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
|
||||
return IDX_AFE_PORT_ID_VA_CODEC_DMA_TX_1;
|
||||
default: return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
@ -588,6 +602,20 @@ int q6audio_get_port_id(u16 port_id)
|
|||
return AFE_PORT_ID_INT6_MI2S_RX;
|
||||
case AFE_PORT_ID_INT6_MI2S_TX:
|
||||
return AFE_PORT_ID_INT6_MI2S_TX;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
|
||||
return AFE_PORT_ID_WSA_CODEC_DMA_RX_0;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
|
||||
return AFE_PORT_ID_WSA_CODEC_DMA_TX_0;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
|
||||
return AFE_PORT_ID_WSA_CODEC_DMA_RX_1;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
|
||||
return AFE_PORT_ID_WSA_CODEC_DMA_TX_1;
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
|
||||
return AFE_PORT_ID_WSA_CODEC_DMA_TX_2;
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
|
||||
return AFE_PORT_ID_VA_CODEC_DMA_TX_0;
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
|
||||
return AFE_PORT_ID_VA_CODEC_DMA_TX_1;
|
||||
default:
|
||||
pr_warn("%s: Invalid port_id %d\n", __func__, port_id);
|
||||
return -EINVAL;
|
||||
|
@ -742,6 +770,13 @@ int q6audio_is_digital_pcm_interface(u16 port_id)
|
|||
case AFE_PORT_ID_INT5_MI2S_TX:
|
||||
case AFE_PORT_ID_INT6_MI2S_RX:
|
||||
case AFE_PORT_ID_INT6_MI2S_TX:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
|
@ -922,6 +957,13 @@ int q6audio_validate_port(u16 port_id)
|
|||
case AFE_PORT_ID_INT5_MI2S_TX:
|
||||
case AFE_PORT_ID_INT6_MI2S_RX:
|
||||
case AFE_PORT_ID_INT6_MI2S_TX:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_RX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_1:
|
||||
case AFE_PORT_ID_WSA_CODEC_DMA_TX_2:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_0:
|
||||
case AFE_PORT_ID_VA_CODEC_DMA_TX_1:
|
||||
{
|
||||
ret = 0;
|
||||
break;
|
||||
|
|
|
@ -1263,6 +1263,27 @@ struct adm_cmd_connect_afe_port_v5 {
|
|||
#define AFE_PORT_ID_USB_RX 0x7000
|
||||
#define AFE_PORT_ID_USB_TX 0x7001
|
||||
|
||||
/* AFE WSA Codec DMA Rx port 0 */
|
||||
#define AFE_PORT_ID_WSA_CODEC_DMA_RX_0 0xB000
|
||||
|
||||
/* AFE WSA Codec DMA Tx port 0 */
|
||||
#define AFE_PORT_ID_WSA_CODEC_DMA_TX_0 0xB001
|
||||
|
||||
/* AFE WSA Codec DMA Rx port 1 */
|
||||
#define AFE_PORT_ID_WSA_CODEC_DMA_RX_1 0xB002
|
||||
|
||||
/* AFE WSA Codec DMA Tx port 1 */
|
||||
#define AFE_PORT_ID_WSA_CODEC_DMA_TX_1 0xB003
|
||||
|
||||
/* AFE WSA Codec DMA Tx port 2 */
|
||||
#define AFE_PORT_ID_WSA_CODEC_DMA_TX_2 0xB005
|
||||
|
||||
/* AFE VA Codec DMA Tx port 0 */
|
||||
#define AFE_PORT_ID_VA_CODEC_DMA_TX_0 0xB021
|
||||
|
||||
/* AFE VA Codec DMA Tx port 1 */
|
||||
#define AFE_PORT_ID_VA_CODEC_DMA_TX_1 0xB023
|
||||
|
||||
/* Generic pseudoport 1. */
|
||||
#define AFE_PORT_ID_PSEUDOPORT_01 0x8001
|
||||
/* Generic pseudoport 2. */
|
||||
|
@ -3920,6 +3941,73 @@ struct avs_dec_depacketizer_id_param_t {
|
|||
uint32_t dec_depacketizer_id;
|
||||
};
|
||||
|
||||
/* ID of the parameter used by #AFE_MODULE_AUDIO_DEV_INTERFACE to configure
|
||||
* the Codec DMA interface.
|
||||
*/
|
||||
|
||||
#define AFE_PARAM_ID_CODEC_DMA_CONFIG 0x000102B8
|
||||
|
||||
/* Version information used to handle future additions to codec DMA
|
||||
* configuration (for backward compatibility).
|
||||
*/
|
||||
#define AFE_API_VERSION_CODEC_DMA_CONFIG 0x1
|
||||
|
||||
/* Payload of the AFE_PARAM_ID_CODEC_DMA_CONFIG parameter used by
|
||||
* AFE_MODULE_AUDIO_DEV_INTERFACE.
|
||||
*/
|
||||
struct afe_param_id_cdc_dma_cfg_t {
|
||||
uint32_t cdc_dma_cfg_minor_version;
|
||||
/* Tracks the configuration of this parameter.
|
||||
* Supported values: #AFE_API_VERSION_CODEC_DMA_CONFIG
|
||||
*/
|
||||
|
||||
uint32_t sample_rate;
|
||||
/* Sampling rate of the port.
|
||||
* Supported values:
|
||||
* - #AFE_PORT_SAMPLE_RATE_8K
|
||||
* - #AFE_PORT_SAMPLE_RATE_11_025K
|
||||
* - #AFE_PORT_SAMPLE_RATE_12K
|
||||
* - #AFE_PORT_SAMPLE_RATE_16K
|
||||
* - #AFE_PORT_SAMPLE_RATE_22_05K
|
||||
* - #AFE_PORT_SAMPLE_RATE_24K
|
||||
* - #AFE_PORT_SAMPLE_RATE_32K
|
||||
* - #AFE_PORT_SAMPLE_RATE_44_1K
|
||||
* - #AFE_PORT_SAMPLE_RATE_48K
|
||||
* - #AFE_PORT_SAMPLE_RATE_88_2K
|
||||
* - #AFE_PORT_SAMPLE_RATE_96K
|
||||
* - #AFE_PORT_SAMPLE_RATE_176_4K
|
||||
* - #AFE_PORT_SAMPLE_RATE_192K
|
||||
* - #AFE_PORT_SAMPLE_RATE_352_8K
|
||||
* - #AFE_PORT_SAMPLE_RATE_384K
|
||||
*/
|
||||
|
||||
uint16_t bit_width;
|
||||
/* Bit width of the sample.
|
||||
* Supported values: 16, 24, 32
|
||||
*/
|
||||
|
||||
uint16_t data_format;
|
||||
/* Data format supported by the codec DMA interface.
|
||||
* Supported values:
|
||||
* - #AFE_LINEAR_PCM_DATA
|
||||
* - #AFE_LINEAR_PCM_DATA_PACKED_16BIT
|
||||
*/
|
||||
|
||||
uint16_t num_channels;
|
||||
/* Number of channels.
|
||||
* Supported values: 1 to Maximum number of channels supported
|
||||
* for each interface
|
||||
*/
|
||||
|
||||
uint16_t active_channels_mask;
|
||||
/* Active channels mask to denote the bit mask for active channels.
|
||||
* Bits 0 to 7 denote channels 0 to 7. A 1 denotes the channel is active
|
||||
* while a 0 denotes a channel is inactive.
|
||||
* Supported values:
|
||||
* Any mask with number of active bits equal to num_channels
|
||||
*/
|
||||
} __packed;
|
||||
|
||||
union afe_port_config {
|
||||
struct afe_param_id_pcm_cfg pcm;
|
||||
struct afe_param_id_i2s_cfg i2s;
|
||||
|
@ -3942,6 +4030,7 @@ union afe_port_config {
|
|||
struct avs_dec_depacketizer_id_param_t dec_depkt_id_param;
|
||||
struct afe_enc_level_to_bitrate_map_param_t map_param;
|
||||
struct afe_enc_dec_imc_info_param_t imc_info_param;
|
||||
struct afe_param_id_cdc_dma_cfg_t cdc_dma;
|
||||
} __packed;
|
||||
|
||||
#define AFE_PORT_CMD_DEVICE_START 0x000100E5
|
||||
|
|
|
@ -224,6 +224,14 @@ enum {
|
|||
IDX_AFE_PORT_ID_QUINARY_TDM_TX_6,
|
||||
IDX_AFE_PORT_ID_QUINARY_TDM_RX_7,
|
||||
IDX_AFE_PORT_ID_QUINARY_TDM_TX_7,
|
||||
/* IDX 161 to 166 */
|
||||
IDX_AFE_PORT_ID_WSA_CODEC_DMA_RX_0,
|
||||
IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_0,
|
||||
IDX_AFE_PORT_ID_WSA_CODEC_DMA_RX_1,
|
||||
IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_1,
|
||||
IDX_AFE_PORT_ID_WSA_CODEC_DMA_TX_2,
|
||||
IDX_AFE_PORT_ID_VA_CODEC_DMA_TX_0,
|
||||
IDX_AFE_PORT_ID_VA_CODEC_DMA_TX_1,
|
||||
AFE_MAX_PORTS
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue