Loading sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c +149 −143 Original line number Diff line number Diff line Loading @@ -108,7 +108,8 @@ static struct msm_pcm_route_bdai_pp_params {HDMI_RX, 0, 0, 0} }; static int msm_routing_send_device_pp_params(int port_id, int copp_idx); static int msm_routing_send_device_pp_params(int port_id, int copp_idx, int fe_id); static int msm_routing_get_bit_width(unsigned int format) { Loading Loading @@ -242,199 +243,202 @@ static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload, #define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = { { PRIMARY_I2S_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_PRI_I2S_RX}, { PRIMARY_I2S_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_PRI_I2S_TX}, { SLIMBUS_0_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_0_RX}, { SLIMBUS_0_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_0_TX}, { HDMI_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_HDMI}, { INT_BT_SCO_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_BT_SCO_RX}, { INT_BT_SCO_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_BT_SCO_TX}, { INT_FM_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_FM_RX}, { INT_FM_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_FM_TX}, { RT_PROXY_PORT_001_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_AFE_PCM_RX}, { RT_PROXY_PORT_001_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_AFE_PCM_TX}, { AFE_PORT_ID_PRIMARY_PCM_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_AUXPCM_RX}, { AFE_PORT_ID_PRIMARY_PCM_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_AUXPCM_TX}, { VOICE_PLAYBACK_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_VOICE_PLAYBACK_TX}, { VOICE2_PLAYBACK_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_VOICE2_PLAYBACK_TX}, { VOICE_RECORD_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INCALL_RECORD_RX}, { VOICE_RECORD_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INCALL_RECORD_TX}, { MI2S_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_MI2S_RX}, { MI2S_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_MI2S_TX}, { SECONDARY_I2S_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SEC_I2S_RX}, { SLIMBUS_1_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_1_RX}, { SLIMBUS_1_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_1_TX}, { SLIMBUS_4_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_4_RX}, { SLIMBUS_4_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_4_TX}, { SLIMBUS_3_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_3_RX}, { SLIMBUS_3_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_3_TX}, { SLIMBUS_5_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_5_TX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_STUB_RX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_STUB_TX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_STUB_1_TX}, { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { PRIMARY_I2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX}, { PRIMARY_I2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX}, { SLIMBUS_0_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX}, { SLIMBUS_0_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX}, { HDMI_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_HDMI}, { INT_BT_SCO_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX}, { INT_BT_SCO_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX}, { INT_FM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX}, { INT_FM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX}, { RT_PROXY_PORT_001_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AFE_PCM_RX}, { RT_PROXY_PORT_001_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AFE_PCM_TX}, { AFE_PORT_ID_PRIMARY_PCM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AUXPCM_RX}, { AFE_PORT_ID_PRIMARY_PCM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AUXPCM_TX}, { VOICE_PLAYBACK_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_VOICE_PLAYBACK_TX}, { VOICE2_PLAYBACK_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_VOICE2_PLAYBACK_TX}, { VOICE_RECORD_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INCALL_RECORD_RX}, { VOICE_RECORD_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INCALL_RECORD_TX}, { MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX}, { MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX}, { SECONDARY_I2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX}, { SLIMBUS_1_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX}, { SLIMBUS_1_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX}, { SLIMBUS_4_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX}, { SLIMBUS_4_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX}, { SLIMBUS_3_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX}, { SLIMBUS_3_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX}, { SLIMBUS_5_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX}, { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_MI2S_RX}, { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_MI2S_TX}, { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_MI2S_RX}, { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_MI2S_TX}, { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_MI2S_RX}, { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_MI2S_TX}, { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_MI2S_RX}, { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_MI2S_TX}, { AUDIO_PORT_ID_I2S_RX, 0, 0, 0, 0, 0, 0, 0, { AUDIO_PORT_ID_I2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AUDIO_I2S_RX}, { AFE_PORT_ID_SECONDARY_PCM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_PCM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_AUXPCM_RX}, { AFE_PORT_ID_SECONDARY_PCM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_PCM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_AUXPCM_TX}, { SLIMBUS_6_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_6_RX}, { SLIMBUS_6_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_6_TX}, { AFE_PORT_ID_SPDIF_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SPDIF_RX}, { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, 0, 0, 0, 0, 0, 0, { SLIMBUS_6_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX}, { SLIMBUS_6_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX}, { AFE_PORT_ID_SPDIF_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SPDIF_RX}, { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_MI2S_RX_SD1}, { SLIMBUS_5_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_5_RX}, { AFE_PORT_ID_QUINARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { SLIMBUS_5_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX}, { AFE_PORT_ID_QUINARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUIN_MI2S_RX}, { AFE_PORT_ID_QUINARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUINARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUIN_MI2S_TX}, { AFE_PORT_ID_SENARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SENARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SENARY_MI2S_TX}, { AFE_PORT_ID_PRIMARY_TDM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_0}, { AFE_PORT_ID_PRIMARY_TDM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_0}, { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_1}, { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_1}, { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_2}, { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_2}, { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_3}, { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_3}, { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_4}, { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_4}, { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_5}, { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_5}, { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_6}, { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_6}, { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_7}, { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_7}, { AFE_PORT_ID_SECONDARY_TDM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_0}, { AFE_PORT_ID_SECONDARY_TDM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_0}, { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_1}, { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_1}, { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_2}, { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_2}, { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_3}, { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_3}, { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_4}, { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_4}, { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_5}, { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_5}, { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_6}, { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_6}, { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_7}, { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_7}, { AFE_PORT_ID_TERTIARY_TDM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_0}, { AFE_PORT_ID_TERTIARY_TDM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_0}, { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_1}, { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_1}, { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_2}, { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_2}, { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_3}, { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_3}, { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_4}, { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_4}, { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_5}, { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_5}, { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_6}, { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_6}, { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_7}, { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_7}, { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_0}, { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_0}, { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_1}, { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_1}, { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_2}, { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_2}, { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_3}, { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_3}, { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_4}, { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_4}, { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_5}, { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_5}, { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_6}, { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_6}, { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_7}, { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_7}, { INT_BT_A2DP_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_BT_A2DP_RX}, { INT_BT_A2DP_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_A2DP_RX}, }; /* Track ASM playback & capture sessions of DAI Loading Loading @@ -955,7 +959,7 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode, msm_qti_pp_send_eq_values(fe_id); for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) { if (test_bit(fe_id, &msm_bedais[i].fe_sessions)) msm_bedais[i].passthr_mode = passthr_mode; msm_bedais[i].passthr_mode[fe_id] = passthr_mode; if (!is_be_dai_extproc(i) && (afe_get_port_type(msm_bedais[i].port_id) == Loading Loading @@ -1030,7 +1034,7 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode, } } msm_routing_send_device_pp_params(msm_bedais[i].port_id, copp_idx); copp_idx, fe_id); } } if (num_copps) { Loading Loading @@ -1126,7 +1130,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode, (test_bit(fedai_id, &msm_bedais[i].fe_sessions))) { int app_type, app_type_idx, copp_idx, acdb_dev_id; channels = msm_bedais[i].channel; msm_bedais[i].passthr_mode = msm_bedais[i].passthr_mode[fedai_id] = LEGACY_PCM; bits_per_sample = msm_routing_get_bit_width( Loading Loading @@ -1183,7 +1187,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode, } } if ((perf_mode == LEGACY_PCM_MODE) && (msm_bedais[i].passthr_mode == (msm_bedais[i].passthr_mode[fedai_id] == LEGACY_PCM)) msm_pcm_routing_cfg_pp(msm_bedais[i].port_id, copp_idx, topology, Loading Loading @@ -1274,7 +1278,7 @@ void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type) if ((DOLBY_ADM_COPP_TOPOLOGY_ID == topology || DS2_ADM_COPP_TOPOLOGY_ID == topology) && (fdai->perf_mode == LEGACY_PCM_MODE) && (msm_bedais[i].passthr_mode == (msm_bedais[i].passthr_mode[fedai_id] == LEGACY_PCM)) msm_pcm_routing_deinit_pp(msm_bedais[i].port_id, topology); Loading Loading @@ -1309,7 +1313,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set) u32 channels, sample_rate; uint16_t bits_per_sample = 16; struct msm_pcm_routing_fdai_data *fdai; uint32_t passthr_mode = msm_bedais[reg].passthr_mode; uint32_t passthr_mode; bool is_lsm; pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set); Loading @@ -1326,6 +1330,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set) return; } passthr_mode = msm_bedais[reg].passthr_mode[val]; if (afe_get_port_type(msm_bedais[reg].port_id) == MSM_AFE_PORT_TYPE_RX) { session_type = SESSION_TYPE_RX; Loading Loading @@ -11700,7 +11705,7 @@ static int msm_pcm_routing_close(struct snd_pcm_substream *substream) clear_bit(idx, &session_copp_map[i][session_type][be_id]); if ((fdai->perf_mode == LEGACY_PCM_MODE) && (bedai->passthr_mode == LEGACY_PCM)) (bedai->passthr_mode[i] == LEGACY_PCM)) msm_pcm_routing_deinit_pp(bedai->port_id, topology); } Loading Loading @@ -11736,17 +11741,6 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) bedai = &msm_bedais[be_id]; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (bedai->passthr_mode != LEGACY_PCM) path_type = ADM_PATH_COMPRESSED_RX; else path_type = ADM_PATH_PLAYBACK; session_type = SESSION_TYPE_RX; } else { path_type = ADM_PATH_LIVE_REC; session_type = SESSION_TYPE_TX; } mutex_lock(&routing_lock); if (bedai->active == 1) goto done; /* Ignore prepare if back-end already active */ Loading @@ -11763,6 +11757,17 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) route_check_fe_id_adm_support(i))) continue; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (bedai->passthr_mode[i] != LEGACY_PCM) path_type = ADM_PATH_COMPRESSED_RX; else path_type = ADM_PATH_PLAYBACK; session_type = SESSION_TYPE_RX; } else { path_type = ADM_PATH_LIVE_REC; session_type = SESSION_TYPE_TX; } is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) && (i <= MSM_FRONTEND_DAI_LSM8); fdai = &fe_dai_map[i][session_type]; Loading Loading @@ -11833,9 +11838,9 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) msm_pcm_routing_build_matrix(i, session_type, path_type, fdai->perf_mode, bedai->passthr_mode); bedai->passthr_mode[i]); if ((fdai->perf_mode == LEGACY_PCM_MODE) && (bedai->passthr_mode == LEGACY_PCM)) (bedai->passthr_mode[i] == LEGACY_PCM)) msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx, topology, channels); } Loading Loading @@ -11868,7 +11873,8 @@ done: return 0; } static int msm_routing_send_device_pp_params(int port_id, int copp_idx) static int msm_routing_send_device_pp_params(int port_id, int copp_idx, int fe_id) { int index, topo_id, be_idx; unsigned long pp_config = 0; Loading Loading @@ -11911,8 +11917,8 @@ static int msm_routing_send_device_pp_params(int port_id, int copp_idx) return -EINVAL; } if ((msm_bedais[be_idx].passthr_mode == LEGACY_PCM) || (msm_bedais[be_idx].passthr_mode == LISTEN)) if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) || (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN)) compr_passthr_mode = false; pp_config = msm_bedais_pp_params[index].pp_params_config; Loading Loading @@ -11971,12 +11977,12 @@ static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol, return -EINVAL; } if ((msm_bedais[be_idx].passthr_mode == LEGACY_PCM) || (msm_bedais[be_idx].passthr_mode == LISTEN)) compr_passthr_mode = false; for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions, MSM_FRONTEND_DAI_MM_SIZE) { if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) || (msm_bedais[be_idx].passthr_mode[i] == LISTEN)) compr_passthr_mode = false; for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) { unsigned long copp = session_copp_map[i] Loading @@ -11989,7 +11995,7 @@ static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol, continue; pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n", __func__, port_id, copp, msm_bedais[be_idx].active, msm_bedais[be_idx].passthr_mode); msm_bedais[be_idx].passthr_mode[i]); switch (pp_id) { case ADM_PP_PARAM_MUTE_ID: pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__); Loading sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.h +2 −2 Original line number Diff line number Diff line /* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2017, 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 Loading Loading @@ -350,7 +350,7 @@ struct msm_pcm_routing_bdai_data { unsigned int sample_rate; unsigned int channel; unsigned int format; u32 passthr_mode; u32 passthr_mode[MSM_FRONTEND_DAI_MAX]; char *name; }; Loading Loading
sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c +149 −143 Original line number Diff line number Diff line Loading @@ -108,7 +108,8 @@ static struct msm_pcm_route_bdai_pp_params {HDMI_RX, 0, 0, 0} }; static int msm_routing_send_device_pp_params(int port_id, int copp_idx); static int msm_routing_send_device_pp_params(int port_id, int copp_idx, int fe_id); static int msm_routing_get_bit_width(unsigned int format) { Loading Loading @@ -242,199 +243,202 @@ static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload, #define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = { { PRIMARY_I2S_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_PRI_I2S_RX}, { PRIMARY_I2S_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_PRI_I2S_TX}, { SLIMBUS_0_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_0_RX}, { SLIMBUS_0_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_0_TX}, { HDMI_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_HDMI}, { INT_BT_SCO_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_BT_SCO_RX}, { INT_BT_SCO_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_BT_SCO_TX}, { INT_FM_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_FM_RX}, { INT_FM_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_FM_TX}, { RT_PROXY_PORT_001_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_AFE_PCM_RX}, { RT_PROXY_PORT_001_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_AFE_PCM_TX}, { AFE_PORT_ID_PRIMARY_PCM_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_AUXPCM_RX}, { AFE_PORT_ID_PRIMARY_PCM_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_AUXPCM_TX}, { VOICE_PLAYBACK_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_VOICE_PLAYBACK_TX}, { VOICE2_PLAYBACK_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_VOICE2_PLAYBACK_TX}, { VOICE_RECORD_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INCALL_RECORD_RX}, { VOICE_RECORD_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INCALL_RECORD_TX}, { MI2S_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_MI2S_RX}, { MI2S_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_MI2S_TX}, { SECONDARY_I2S_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SEC_I2S_RX}, { SLIMBUS_1_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_1_RX}, { SLIMBUS_1_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_1_TX}, { SLIMBUS_4_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_4_RX}, { SLIMBUS_4_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_4_TX}, { SLIMBUS_3_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_3_RX}, { SLIMBUS_3_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_3_TX}, { SLIMBUS_5_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_5_TX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_STUB_RX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_STUB_TX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_STUB_1_TX}, { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { PRIMARY_I2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX}, { PRIMARY_I2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX}, { SLIMBUS_0_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX}, { SLIMBUS_0_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX}, { HDMI_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_HDMI}, { INT_BT_SCO_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX}, { INT_BT_SCO_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX}, { INT_FM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX}, { INT_FM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX}, { RT_PROXY_PORT_001_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AFE_PCM_RX}, { RT_PROXY_PORT_001_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AFE_PCM_TX}, { AFE_PORT_ID_PRIMARY_PCM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AUXPCM_RX}, { AFE_PORT_ID_PRIMARY_PCM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AUXPCM_TX}, { VOICE_PLAYBACK_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_VOICE_PLAYBACK_TX}, { VOICE2_PLAYBACK_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_VOICE2_PLAYBACK_TX}, { VOICE_RECORD_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INCALL_RECORD_RX}, { VOICE_RECORD_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INCALL_RECORD_TX}, { MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX}, { MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX}, { SECONDARY_I2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX}, { SLIMBUS_1_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX}, { SLIMBUS_1_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX}, { SLIMBUS_4_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX}, { SLIMBUS_4_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX}, { SLIMBUS_3_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX}, { SLIMBUS_3_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX}, { SLIMBUS_5_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX}, { SLIMBUS_EXTPROC_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX}, { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_MI2S_RX}, { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_MI2S_TX}, { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_MI2S_RX}, { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_MI2S_TX}, { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_MI2S_RX}, { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_MI2S_TX}, { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_MI2S_RX}, { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_MI2S_TX}, { AUDIO_PORT_ID_I2S_RX, 0, 0, 0, 0, 0, 0, 0, { AUDIO_PORT_ID_I2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_AUDIO_I2S_RX}, { AFE_PORT_ID_SECONDARY_PCM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_PCM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_AUXPCM_RX}, { AFE_PORT_ID_SECONDARY_PCM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_PCM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_AUXPCM_TX}, { SLIMBUS_6_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_6_RX}, { SLIMBUS_6_TX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_6_TX}, { AFE_PORT_ID_SPDIF_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SPDIF_RX}, { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, 0, 0, 0, 0, 0, 0, { SLIMBUS_6_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX}, { SLIMBUS_6_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX}, { AFE_PORT_ID_SPDIF_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SPDIF_RX}, { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_MI2S_RX_SD1}, { SLIMBUS_5_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_5_RX}, { AFE_PORT_ID_QUINARY_MI2S_RX, 0, 0, 0, 0, 0, 0, 0, { SLIMBUS_5_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX}, { AFE_PORT_ID_QUINARY_MI2S_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUIN_MI2S_RX}, { AFE_PORT_ID_QUINARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUINARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUIN_MI2S_TX}, { AFE_PORT_ID_SENARY_MI2S_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SENARY_MI2S_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SENARY_MI2S_TX}, { AFE_PORT_ID_PRIMARY_TDM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_0}, { AFE_PORT_ID_PRIMARY_TDM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_0}, { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_1}, { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_1}, { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_2}, { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_2}, { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_3}, { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_3}, { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_4}, { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_4}, { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_5}, { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_5}, { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_6}, { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_6}, { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_RX_7}, { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_PRI_TDM_TX_7}, { AFE_PORT_ID_SECONDARY_TDM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_0}, { AFE_PORT_ID_SECONDARY_TDM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_0}, { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_1}, { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_1}, { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_2}, { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_2}, { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_3}, { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_3}, { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_4}, { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_4}, { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_5}, { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_5}, { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_6}, { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_6}, { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_RX_7}, { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_SEC_TDM_TX_7}, { AFE_PORT_ID_TERTIARY_TDM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_0}, { AFE_PORT_ID_TERTIARY_TDM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_0}, { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_1}, { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_1}, { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_2}, { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_2}, { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_3}, { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_3}, { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_4}, { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_4}, { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_5}, { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_5}, { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_6}, { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_6}, { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_RX_7}, { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_TERT_TDM_TX_7}, { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_0}, { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_0}, { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_1}, { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_1}, { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_2}, { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_2}, { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_3}, { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_3}, { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_4}, { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_4}, { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_5}, { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_5}, { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_6}, { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_6}, { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_RX_7}, { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, 0, { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_QUAT_TDM_TX_7}, { INT_BT_A2DP_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_INT_BT_A2DP_RX}, { INT_BT_A2DP_RX, 0, 0, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_A2DP_RX}, }; /* Track ASM playback & capture sessions of DAI Loading Loading @@ -955,7 +959,7 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode, msm_qti_pp_send_eq_values(fe_id); for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) { if (test_bit(fe_id, &msm_bedais[i].fe_sessions)) msm_bedais[i].passthr_mode = passthr_mode; msm_bedais[i].passthr_mode[fe_id] = passthr_mode; if (!is_be_dai_extproc(i) && (afe_get_port_type(msm_bedais[i].port_id) == Loading Loading @@ -1030,7 +1034,7 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode, } } msm_routing_send_device_pp_params(msm_bedais[i].port_id, copp_idx); copp_idx, fe_id); } } if (num_copps) { Loading Loading @@ -1126,7 +1130,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode, (test_bit(fedai_id, &msm_bedais[i].fe_sessions))) { int app_type, app_type_idx, copp_idx, acdb_dev_id; channels = msm_bedais[i].channel; msm_bedais[i].passthr_mode = msm_bedais[i].passthr_mode[fedai_id] = LEGACY_PCM; bits_per_sample = msm_routing_get_bit_width( Loading Loading @@ -1183,7 +1187,7 @@ int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode, } } if ((perf_mode == LEGACY_PCM_MODE) && (msm_bedais[i].passthr_mode == (msm_bedais[i].passthr_mode[fedai_id] == LEGACY_PCM)) msm_pcm_routing_cfg_pp(msm_bedais[i].port_id, copp_idx, topology, Loading Loading @@ -1274,7 +1278,7 @@ void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type) if ((DOLBY_ADM_COPP_TOPOLOGY_ID == topology || DS2_ADM_COPP_TOPOLOGY_ID == topology) && (fdai->perf_mode == LEGACY_PCM_MODE) && (msm_bedais[i].passthr_mode == (msm_bedais[i].passthr_mode[fedai_id] == LEGACY_PCM)) msm_pcm_routing_deinit_pp(msm_bedais[i].port_id, topology); Loading Loading @@ -1309,7 +1313,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set) u32 channels, sample_rate; uint16_t bits_per_sample = 16; struct msm_pcm_routing_fdai_data *fdai; uint32_t passthr_mode = msm_bedais[reg].passthr_mode; uint32_t passthr_mode; bool is_lsm; pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set); Loading @@ -1326,6 +1330,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set) return; } passthr_mode = msm_bedais[reg].passthr_mode[val]; if (afe_get_port_type(msm_bedais[reg].port_id) == MSM_AFE_PORT_TYPE_RX) { session_type = SESSION_TYPE_RX; Loading Loading @@ -11700,7 +11705,7 @@ static int msm_pcm_routing_close(struct snd_pcm_substream *substream) clear_bit(idx, &session_copp_map[i][session_type][be_id]); if ((fdai->perf_mode == LEGACY_PCM_MODE) && (bedai->passthr_mode == LEGACY_PCM)) (bedai->passthr_mode[i] == LEGACY_PCM)) msm_pcm_routing_deinit_pp(bedai->port_id, topology); } Loading Loading @@ -11736,17 +11741,6 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) bedai = &msm_bedais[be_id]; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (bedai->passthr_mode != LEGACY_PCM) path_type = ADM_PATH_COMPRESSED_RX; else path_type = ADM_PATH_PLAYBACK; session_type = SESSION_TYPE_RX; } else { path_type = ADM_PATH_LIVE_REC; session_type = SESSION_TYPE_TX; } mutex_lock(&routing_lock); if (bedai->active == 1) goto done; /* Ignore prepare if back-end already active */ Loading @@ -11763,6 +11757,17 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) route_check_fe_id_adm_support(i))) continue; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (bedai->passthr_mode[i] != LEGACY_PCM) path_type = ADM_PATH_COMPRESSED_RX; else path_type = ADM_PATH_PLAYBACK; session_type = SESSION_TYPE_RX; } else { path_type = ADM_PATH_LIVE_REC; session_type = SESSION_TYPE_TX; } is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) && (i <= MSM_FRONTEND_DAI_LSM8); fdai = &fe_dai_map[i][session_type]; Loading Loading @@ -11833,9 +11838,9 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) msm_pcm_routing_build_matrix(i, session_type, path_type, fdai->perf_mode, bedai->passthr_mode); bedai->passthr_mode[i]); if ((fdai->perf_mode == LEGACY_PCM_MODE) && (bedai->passthr_mode == LEGACY_PCM)) (bedai->passthr_mode[i] == LEGACY_PCM)) msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx, topology, channels); } Loading Loading @@ -11868,7 +11873,8 @@ done: return 0; } static int msm_routing_send_device_pp_params(int port_id, int copp_idx) static int msm_routing_send_device_pp_params(int port_id, int copp_idx, int fe_id) { int index, topo_id, be_idx; unsigned long pp_config = 0; Loading Loading @@ -11911,8 +11917,8 @@ static int msm_routing_send_device_pp_params(int port_id, int copp_idx) return -EINVAL; } if ((msm_bedais[be_idx].passthr_mode == LEGACY_PCM) || (msm_bedais[be_idx].passthr_mode == LISTEN)) if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) || (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN)) compr_passthr_mode = false; pp_config = msm_bedais_pp_params[index].pp_params_config; Loading Loading @@ -11971,12 +11977,12 @@ static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol, return -EINVAL; } if ((msm_bedais[be_idx].passthr_mode == LEGACY_PCM) || (msm_bedais[be_idx].passthr_mode == LISTEN)) compr_passthr_mode = false; for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions, MSM_FRONTEND_DAI_MM_SIZE) { if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) || (msm_bedais[be_idx].passthr_mode[i] == LISTEN)) compr_passthr_mode = false; for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) { unsigned long copp = session_copp_map[i] Loading @@ -11989,7 +11995,7 @@ static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol, continue; pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n", __func__, port_id, copp, msm_bedais[be_idx].active, msm_bedais[be_idx].passthr_mode); msm_bedais[be_idx].passthr_mode[i]); switch (pp_id) { case ADM_PP_PARAM_MUTE_ID: pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__); Loading
sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.h +2 −2 Original line number Diff line number Diff line /* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2017, 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 Loading Loading @@ -350,7 +350,7 @@ struct msm_pcm_routing_bdai_data { unsigned int sample_rate; unsigned int channel; unsigned int format; u32 passthr_mode; u32 passthr_mode[MSM_FRONTEND_DAI_MAX]; char *name; }; Loading