mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
ASoC: msm: add quat tdm tx_7 to rx_7 loopback
Add Quaternary TDM TX 7 to RX 7 AFE loopback routing support. Signed-off-by: Derek Chen <chenche@codeaurora.org> Change-Id: I0f6cf7cff1a0250f85f73f4ad63641b7364d4f7d
This commit is contained in:
parent
efdb8d9f66
commit
b9048cb1dd
3 changed files with 109 additions and 7 deletions
|
|
@ -2026,7 +2026,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
|
|||
.formats = (SNDRV_PCM_FMTBIT_S16_LE |
|
||||
SNDRV_PCM_FMTBIT_S24_LE),
|
||||
.channels_min = 1,
|
||||
.channels_max = 8,
|
||||
.channels_max = 16,
|
||||
.rate_min = 8000,
|
||||
.rate_max = 48000,
|
||||
},
|
||||
|
|
@ -2042,7 +2042,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
|
|||
.formats = (SNDRV_PCM_FMTBIT_S16_LE |
|
||||
SNDRV_PCM_FMTBIT_S24_LE),
|
||||
.channels_min = 1,
|
||||
.channels_max = 8,
|
||||
.channels_max = 16,
|
||||
.rate_min = 8000,
|
||||
.rate_max = 48000,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -16398,6 +16398,14 @@ static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
|
|||
msm_routing_put_port_mixer),
|
||||
};
|
||||
|
||||
static const struct snd_kcontrol_new quat_tdm_rx_7_port_mixer_controls[] = {
|
||||
SOC_DOUBLE_EXT("QUAT_TDM_TX_7", SND_SOC_NOPM,
|
||||
MSM_BACKEND_DAI_QUAT_TDM_RX_7,
|
||||
MSM_BACKEND_DAI_QUAT_TDM_TX_7, 1, 0,
|
||||
msm_routing_get_port_mixer,
|
||||
msm_routing_put_port_mixer),
|
||||
};
|
||||
|
||||
static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
|
||||
SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM,
|
||||
MSM_BACKEND_DAI_QUIN_TDM_RX_0,
|
||||
|
|
@ -20054,6 +20062,9 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
|
|||
SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
|
||||
quat_tdm_rx_3_port_mixer_controls,
|
||||
ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
|
||||
SND_SOC_DAPM_MIXER("QUAT_TDM_RX_7 Port Mixer", SND_SOC_NOPM, 0, 0,
|
||||
quat_tdm_rx_7_port_mixer_controls,
|
||||
ARRAY_SIZE(quat_tdm_rx_7_port_mixer_controls)),
|
||||
SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
|
||||
quin_tdm_rx_0_port_mixer_controls,
|
||||
ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
|
||||
|
|
@ -22735,10 +22746,12 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
|
||||
{"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
|
||||
{"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
|
||||
{"QUAT_TDM_TX_7_UL_HL", NULL, "QUAT_TDM_TX_7"},
|
||||
{"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
|
||||
{"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
|
||||
{"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
|
||||
{"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
|
||||
{"QUAT_TDM_RX_7", NULL, "QUAT_TDM_RX_7_DL_HL"},
|
||||
{"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
|
||||
{"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
|
||||
{"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
|
||||
|
|
@ -23103,6 +23116,9 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
|
||||
{"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
|
||||
|
||||
{"QUAT_TDM_RX_7 Port Mixer", "QUAT_TDM_TX_7", "QUAT_TDM_TX_7"},
|
||||
{"QUAT_TDM_RX_7", NULL, "QUAT_TDM_RX_7 Port Mixer"},
|
||||
|
||||
{"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
|
||||
{"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
|
||||
{"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
|
||||
|
|
@ -23524,6 +23540,7 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"BE_OUT", NULL, "QUAT_TDM_RX_1"},
|
||||
{"BE_OUT", NULL, "QUAT_TDM_RX_2"},
|
||||
{"BE_OUT", NULL, "QUAT_TDM_RX_3"},
|
||||
{"BE_OUT", NULL, "QUAT_TDM_RX_7"},
|
||||
{"BE_OUT", NULL, "QUIN_TDM_RX_0"},
|
||||
{"BE_OUT", NULL, "QUIN_TDM_RX_1"},
|
||||
{"BE_OUT", NULL, "QUIN_TDM_RX_2"},
|
||||
|
|
@ -23608,6 +23625,7 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"QUAT_TDM_TX_1", NULL, "BE_IN"},
|
||||
{"QUAT_TDM_TX_2", NULL, "BE_IN"},
|
||||
{"QUAT_TDM_TX_3", NULL, "BE_IN"},
|
||||
{"QUAT_TDM_TX_7", NULL, "BE_IN"},
|
||||
{"AFE_LOOPBACK_TX", NULL, "BE_IN"},
|
||||
{"QUIN_TDM_TX_0", NULL, "BE_IN"},
|
||||
{"QUIN_TDM_TX_1", NULL, "BE_IN"},
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ static struct dev_config tdm_tx_cfg[TDM_INTERFACE_MAX][TDM_PORT_MAX] = {
|
|||
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_7 */
|
||||
},
|
||||
{ /* QUAT TDM */
|
||||
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 8}, /* TX_0 */
|
||||
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 16}, /* TX_0 */
|
||||
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_1 */
|
||||
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_2 */
|
||||
{SAMPLING_RATE_48KHZ, SNDRV_PCM_FORMAT_S16_LE, 1}, /* TX_3 */
|
||||
|
|
@ -409,7 +409,7 @@ static unsigned int tdm_rx_slot_offset
|
|||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{28,0xFFFF},
|
||||
},
|
||||
{/* QUIN TDM */
|
||||
{0, 4, 0xFFFF},/*STEREO SPKR1*/
|
||||
|
|
@ -464,7 +464,7 @@ static unsigned int tdm_tx_slot_offset
|
|||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{60,0xFFFF},
|
||||
},
|
||||
{/* QUIN TDM */
|
||||
{0, 4, 8, 12, 16, 20, 0xFFFF},/*EC/ANC REF*/
|
||||
|
|
@ -525,7 +525,7 @@ static unsigned int tdm_rx_slot_offset_custom
|
|||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0, 0xFFFF},
|
||||
},
|
||||
{/* QUIN TDM */
|
||||
{0xFFFF}, /* not used */
|
||||
|
|
@ -579,7 +579,7 @@ static unsigned int tdm_tx_slot_offset_custom
|
|||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0xFFFF}, /* not used */
|
||||
{0, 0xFFFF},
|
||||
},
|
||||
{/* QUIN TDM */
|
||||
{0xFFFF}, /* not used */
|
||||
|
|
@ -4163,6 +4163,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
|||
rate->min = rate->max =
|
||||
tdm_rx_cfg[TDM_QUAT][TDM_3].sample_rate;
|
||||
break;
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
|
||||
channels->min = channels->max =
|
||||
tdm_rx_cfg[TDM_QUAT][TDM_7].channels;
|
||||
param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT,
|
||||
tdm_rx_cfg[TDM_QUAT][TDM_7].bit_format);
|
||||
rate->min = rate->max =
|
||||
tdm_rx_cfg[TDM_QUAT][TDM_7].sample_rate;
|
||||
break;
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX:
|
||||
channels->min = channels->max =
|
||||
tdm_tx_cfg[TDM_QUAT][TDM_0].channels;
|
||||
|
|
@ -4195,6 +4203,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
|||
rate->min = rate->max =
|
||||
tdm_tx_cfg[TDM_QUAT][TDM_3].sample_rate;
|
||||
break;
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
|
||||
channels->min = channels->max =
|
||||
tdm_tx_cfg[TDM_QUAT][TDM_7].channels;
|
||||
param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT,
|
||||
tdm_tx_cfg[TDM_QUAT][TDM_7].bit_format);
|
||||
rate->min = rate->max =
|
||||
tdm_tx_cfg[TDM_QUAT][TDM_7].sample_rate;
|
||||
break;
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX:
|
||||
channels->min = channels->max =
|
||||
tdm_rx_cfg[TDM_QUIN][TDM_0].channels;
|
||||
|
|
@ -4479,6 +4495,11 @@ static int sa8155_tdm_snd_hw_params(struct snd_pcm_substream *substream,
|
|||
slot_width = tdm_slot[TDM_QUAT].width;
|
||||
slot_offset = tdm_rx_slot_offset[TDM_QUAT][TDM_3];
|
||||
break;
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_RX_7:
|
||||
slots = tdm_slot[TDM_QUAT].num;
|
||||
slot_width = tdm_slot[TDM_QUAT].width;
|
||||
slot_offset = tdm_rx_slot_offset[TDM_QUAT][TDM_7];
|
||||
break;
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX:
|
||||
slots = tdm_slot[TDM_QUAT].num;
|
||||
slot_width = tdm_slot[TDM_QUAT].width;
|
||||
|
|
@ -4499,6 +4520,11 @@ static int sa8155_tdm_snd_hw_params(struct snd_pcm_substream *substream,
|
|||
slot_width = tdm_slot[TDM_QUAT].width;
|
||||
slot_offset = tdm_tx_slot_offset[TDM_QUAT][TDM_3];
|
||||
break;
|
||||
case AFE_PORT_ID_QUATERNARY_TDM_TX_7:
|
||||
slots = tdm_slot[TDM_QUAT].num;
|
||||
slot_width = tdm_slot[TDM_QUAT].width;
|
||||
slot_offset = tdm_tx_slot_offset[TDM_QUAT][TDM_7];
|
||||
break;
|
||||
case AFE_PORT_ID_QUINARY_TDM_RX:
|
||||
slots = tdm_slot[TDM_QUIN].num;
|
||||
slot_width = tdm_slot[TDM_QUIN].width;
|
||||
|
|
@ -5615,6 +5641,36 @@ static struct snd_soc_dai_link msm_auto_fe_dai_links[] = {
|
|||
.codec_dai_name = "snd-soc-dummy-dai",
|
||||
.codec_name = "snd-soc-dummy",
|
||||
},
|
||||
{
|
||||
.name = "Quaternary TDM RX 7 Hostless",
|
||||
.stream_name = "Quaternary TDM RX 7 Hostless",
|
||||
.cpu_dai_name = "QUAT_TDM_RX_7_HOSTLESS",
|
||||
.platform_name = "msm-pcm-hostless",
|
||||
.dynamic = 1,
|
||||
.dpcm_playback = 1,
|
||||
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
|
||||
SND_SOC_DPCM_TRIGGER_POST},
|
||||
.no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
|
||||
.ignore_suspend = 1,
|
||||
.ignore_pmdown_time = 1,
|
||||
.codec_dai_name = "snd-soc-dummy-dai",
|
||||
.codec_name = "snd-soc-dummy",
|
||||
},
|
||||
{
|
||||
.name = "Quaternary TDM TX 7 Hostless",
|
||||
.stream_name = "Quaternary TDM TX 7 Hostless",
|
||||
.cpu_dai_name = "QUAT_TDM_TX_7_HOSTLESS",
|
||||
.platform_name = "msm-pcm-hostless",
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
|
||||
SND_SOC_DPCM_TRIGGER_POST},
|
||||
.no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
|
||||
.ignore_suspend = 1,
|
||||
.ignore_pmdown_time = 1,
|
||||
.codec_dai_name = "snd-soc-dummy-dai",
|
||||
.codec_name = "snd-soc-dummy",
|
||||
},
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link msm_custom_fe_dai_links[] = {
|
||||
|
|
@ -6377,6 +6433,20 @@ static struct snd_soc_dai_link msm_auto_be_dai_links[] = {
|
|||
.ops = &sa8155_tdm_be_ops,
|
||||
.ignore_suspend = 1,
|
||||
},
|
||||
{
|
||||
.name = LPASS_BE_QUAT_TDM_RX_7,
|
||||
.stream_name = "Quaternary TDM7 Playback",
|
||||
.cpu_dai_name = "msm-dai-q6-tdm.36926",
|
||||
.platform_name = "msm-pcm-routing",
|
||||
.codec_name = "msm-stub-codec.1",
|
||||
.codec_dai_name = "msm-stub-rx",
|
||||
.no_pcm = 1,
|
||||
.dpcm_playback = 1,
|
||||
.id = MSM_BACKEND_DAI_QUAT_TDM_RX_7,
|
||||
.be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
|
||||
.ops = &sa8155_tdm_be_ops,
|
||||
.ignore_suspend = 1,
|
||||
},
|
||||
{
|
||||
.name = LPASS_BE_QUAT_TDM_TX_1,
|
||||
.stream_name = "Quaternary TDM1 Capture",
|
||||
|
|
@ -6419,6 +6489,20 @@ static struct snd_soc_dai_link msm_auto_be_dai_links[] = {
|
|||
.ops = &sa8155_tdm_be_ops,
|
||||
.ignore_suspend = 1,
|
||||
},
|
||||
{
|
||||
.name = LPASS_BE_QUAT_TDM_TX_7,
|
||||
.stream_name = "Quaternary TDM7 Capture",
|
||||
.cpu_dai_name = "msm-dai-q6-tdm.36927",
|
||||
.platform_name = "msm-pcm-routing",
|
||||
.codec_name = "msm-stub-codec.1",
|
||||
.codec_dai_name = "msm-stub-rx",
|
||||
.no_pcm = 1,
|
||||
.dpcm_capture = 1,
|
||||
.id = MSM_BACKEND_DAI_QUAT_TDM_TX_7,
|
||||
.be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
|
||||
.ops = &sa8155_tdm_be_ops,
|
||||
.ignore_suspend = 1,
|
||||
},
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link ext_disp_be_dai_link[] = {
|
||||
|
|
|
|||
Loading…
Reference in a new issue