Message ID | 20200209154748.3015-5-adam@serbinski.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASoC: qdsp6: db820c: Add support for external and bluetooth audio | expand |
On 09/02/2020 15:47, Adam Serbinski wrote: > This patch adds support to PCM_PORT mixers required to > select path between ASM stream and AFE ports. > > Signed-off-by: Adam Serbinski <adam@serbinski.com> > CC: Andy Gross <agross@kernel.org> > CC: Mark Rutland <mark.rutland@arm.com> > CC: Liam Girdwood <lgirdwood@gmail.com> > CC: Patrick Lai <plai@codeaurora.org> > CC: Banajit Goswami <bgoswami@codeaurora.org> > CC: Jaroslav Kysela <perex@perex.cz> > CC: Takashi Iwai <tiwai@suse.com> > CC: alsa-devel@alsa-project.org > CC: linux-arm-msm@vger.kernel.org > CC: devicetree@vger.kernel.org > CC: linux-kernel@vger.kernel.org > --- > sound/soc/qcom/qdsp6/q6routing.c | 44 ++++++++++++++++++++++++++++++++ Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > 1 file changed, 44 insertions(+) > > diff --git a/sound/soc/qcom/qdsp6/q6routing.c b/sound/soc/qcom/qdsp6/q6routing.c > index 20724102e85a..3a81d2161707 100644 > --- a/sound/soc/qcom/qdsp6/q6routing.c > +++ b/sound/soc/qcom/qdsp6/q6routing.c > @@ -67,6 +67,10 @@ > { mix_name, "SEC_MI2S_TX", "SEC_MI2S_TX" }, \ > { mix_name, "QUAT_MI2S_TX", "QUAT_MI2S_TX" }, \ > { mix_name, "TERT_MI2S_TX", "TERT_MI2S_TX" }, \ > + { mix_name, "PRI_PCM_TX", "PRI_PCM_TX" }, \ > + { mix_name, "SEC_PCM_TX", "SEC_PCM_TX" }, \ > + { mix_name, "TERT_PCM_TX", "TERT_PCM_TX" }, \ > + { mix_name, "QUAT_PCM_TX", "QUAT_PCM_TX" }, \ > { mix_name, "SLIMBUS_0_TX", "SLIMBUS_0_TX" }, \ > { mix_name, "SLIMBUS_1_TX", "SLIMBUS_1_TX" }, \ > { mix_name, "SLIMBUS_2_TX", "SLIMBUS_2_TX" }, \ > @@ -128,6 +132,18 @@ > SOC_SINGLE_EXT("QUAT_MI2S_TX", QUATERNARY_MI2S_TX, \ > id, 1, 0, msm_routing_get_audio_mixer, \ > msm_routing_put_audio_mixer), \ > + SOC_SINGLE_EXT("PRI_PCM_TX", PRIMARY_PCM_TX, \ > + id, 1, 0, msm_routing_get_audio_mixer, \ > + msm_routing_put_audio_mixer), \ > + SOC_SINGLE_EXT("SEC_PCM_TX", SECONDARY_PCM_TX, \ > + id, 1, 0, msm_routing_get_audio_mixer, \ > + msm_routing_put_audio_mixer), \ > + SOC_SINGLE_EXT("TERT_PCM_TX", TERTIARY_PCM_TX, \ > + id, 1, 0, msm_routing_get_audio_mixer, \ > + msm_routing_put_audio_mixer), \ > + SOC_SINGLE_EXT("QUAT_PCM_TX", QUATERNARY_PCM_TX, \ > + id, 1, 0, msm_routing_get_audio_mixer, \ > + msm_routing_put_audio_mixer), \ > SOC_SINGLE_EXT("SLIMBUS_0_TX", SLIMBUS_0_TX, \ > id, 1, 0, msm_routing_get_audio_mixer, \ > msm_routing_put_audio_mixer), \ > @@ -468,6 +484,18 @@ static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = { > static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = { > Q6ROUTING_RX_MIXERS(TERTIARY_MI2S_RX) }; > > +static const struct snd_kcontrol_new primary_pcm_rx_mixer_controls[] = { > + Q6ROUTING_RX_MIXERS(PRIMARY_PCM_RX) }; > + > +static const struct snd_kcontrol_new secondary_pcm_rx_mixer_controls[] = { > + Q6ROUTING_RX_MIXERS(SECONDARY_PCM_RX) }; > + > +static const struct snd_kcontrol_new tertiary_pcm_rx_mixer_controls[] = { > + Q6ROUTING_RX_MIXERS(TERTIARY_PCM_RX) }; > + > +static const struct snd_kcontrol_new quaternary_pcm_rx_mixer_controls[] = { > + Q6ROUTING_RX_MIXERS(QUATERNARY_PCM_RX) }; > + > static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = { > Q6ROUTING_RX_MIXERS(SLIMBUS_0_RX) }; > > @@ -695,6 +723,18 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { > SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0, > tertiary_mi2s_rx_mixer_controls, > ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)), > + SND_SOC_DAPM_MIXER("PRI_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0, > + primary_pcm_rx_mixer_controls, > + ARRAY_SIZE(primary_pcm_rx_mixer_controls)), > + SND_SOC_DAPM_MIXER("SEC_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0, > + secondary_pcm_rx_mixer_controls, > + ARRAY_SIZE(secondary_pcm_rx_mixer_controls)), > + SND_SOC_DAPM_MIXER("TERT_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0, > + tertiary_pcm_rx_mixer_controls, > + ARRAY_SIZE(tertiary_pcm_rx_mixer_controls)), > + SND_SOC_DAPM_MIXER("QUAT_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0, > + quaternary_pcm_rx_mixer_controls, > + ARRAY_SIZE(quaternary_pcm_rx_mixer_controls)), > SND_SOC_DAPM_MIXER("PRIMARY_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0, > pri_tdm_rx_0_mixer_controls, > ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)), > @@ -853,6 +893,10 @@ static const struct snd_soc_dapm_route intercon[] = { > Q6ROUTING_RX_DAPM_ROUTE("TERT_MI2S_RX Audio Mixer", "TERT_MI2S_RX"), > Q6ROUTING_RX_DAPM_ROUTE("SEC_MI2S_RX Audio Mixer", "SEC_MI2S_RX"), > Q6ROUTING_RX_DAPM_ROUTE("PRI_MI2S_RX Audio Mixer", "PRI_MI2S_RX"), > + Q6ROUTING_RX_DAPM_ROUTE("PRI_PCM_RX Audio Mixer", "PRI_PCM_RX"), > + Q6ROUTING_RX_DAPM_ROUTE("SEC_PCM_RX Audio Mixer", "SEC_PCM_RX"), > + Q6ROUTING_RX_DAPM_ROUTE("TERT_PCM_RX Audio Mixer", "TERT_PCM_RX"), > + Q6ROUTING_RX_DAPM_ROUTE("QUAT_PCM_RX Audio Mixer", "QUAT_PCM_RX"), > Q6ROUTING_RX_DAPM_ROUTE("PRIMARY_TDM_RX_0 Audio Mixer", > "PRIMARY_TDM_RX_0"), > Q6ROUTING_RX_DAPM_ROUTE("PRIMARY_TDM_RX_1 Audio Mixer", >
diff --git a/sound/soc/qcom/qdsp6/q6routing.c b/sound/soc/qcom/qdsp6/q6routing.c index 20724102e85a..3a81d2161707 100644 --- a/sound/soc/qcom/qdsp6/q6routing.c +++ b/sound/soc/qcom/qdsp6/q6routing.c @@ -67,6 +67,10 @@ { mix_name, "SEC_MI2S_TX", "SEC_MI2S_TX" }, \ { mix_name, "QUAT_MI2S_TX", "QUAT_MI2S_TX" }, \ { mix_name, "TERT_MI2S_TX", "TERT_MI2S_TX" }, \ + { mix_name, "PRI_PCM_TX", "PRI_PCM_TX" }, \ + { mix_name, "SEC_PCM_TX", "SEC_PCM_TX" }, \ + { mix_name, "TERT_PCM_TX", "TERT_PCM_TX" }, \ + { mix_name, "QUAT_PCM_TX", "QUAT_PCM_TX" }, \ { mix_name, "SLIMBUS_0_TX", "SLIMBUS_0_TX" }, \ { mix_name, "SLIMBUS_1_TX", "SLIMBUS_1_TX" }, \ { mix_name, "SLIMBUS_2_TX", "SLIMBUS_2_TX" }, \ @@ -128,6 +132,18 @@ SOC_SINGLE_EXT("QUAT_MI2S_TX", QUATERNARY_MI2S_TX, \ id, 1, 0, msm_routing_get_audio_mixer, \ msm_routing_put_audio_mixer), \ + SOC_SINGLE_EXT("PRI_PCM_TX", PRIMARY_PCM_TX, \ + id, 1, 0, msm_routing_get_audio_mixer, \ + msm_routing_put_audio_mixer), \ + SOC_SINGLE_EXT("SEC_PCM_TX", SECONDARY_PCM_TX, \ + id, 1, 0, msm_routing_get_audio_mixer, \ + msm_routing_put_audio_mixer), \ + SOC_SINGLE_EXT("TERT_PCM_TX", TERTIARY_PCM_TX, \ + id, 1, 0, msm_routing_get_audio_mixer, \ + msm_routing_put_audio_mixer), \ + SOC_SINGLE_EXT("QUAT_PCM_TX", QUATERNARY_PCM_TX, \ + id, 1, 0, msm_routing_get_audio_mixer, \ + msm_routing_put_audio_mixer), \ SOC_SINGLE_EXT("SLIMBUS_0_TX", SLIMBUS_0_TX, \ id, 1, 0, msm_routing_get_audio_mixer, \ msm_routing_put_audio_mixer), \ @@ -468,6 +484,18 @@ static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = { static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = { Q6ROUTING_RX_MIXERS(TERTIARY_MI2S_RX) }; +static const struct snd_kcontrol_new primary_pcm_rx_mixer_controls[] = { + Q6ROUTING_RX_MIXERS(PRIMARY_PCM_RX) }; + +static const struct snd_kcontrol_new secondary_pcm_rx_mixer_controls[] = { + Q6ROUTING_RX_MIXERS(SECONDARY_PCM_RX) }; + +static const struct snd_kcontrol_new tertiary_pcm_rx_mixer_controls[] = { + Q6ROUTING_RX_MIXERS(TERTIARY_PCM_RX) }; + +static const struct snd_kcontrol_new quaternary_pcm_rx_mixer_controls[] = { + Q6ROUTING_RX_MIXERS(QUATERNARY_PCM_RX) }; + static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = { Q6ROUTING_RX_MIXERS(SLIMBUS_0_RX) }; @@ -695,6 +723,18 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0, tertiary_mi2s_rx_mixer_controls, ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)), + SND_SOC_DAPM_MIXER("PRI_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0, + primary_pcm_rx_mixer_controls, + ARRAY_SIZE(primary_pcm_rx_mixer_controls)), + SND_SOC_DAPM_MIXER("SEC_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0, + secondary_pcm_rx_mixer_controls, + ARRAY_SIZE(secondary_pcm_rx_mixer_controls)), + SND_SOC_DAPM_MIXER("TERT_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0, + tertiary_pcm_rx_mixer_controls, + ARRAY_SIZE(tertiary_pcm_rx_mixer_controls)), + SND_SOC_DAPM_MIXER("QUAT_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0, + quaternary_pcm_rx_mixer_controls, + ARRAY_SIZE(quaternary_pcm_rx_mixer_controls)), SND_SOC_DAPM_MIXER("PRIMARY_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0, pri_tdm_rx_0_mixer_controls, ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)), @@ -853,6 +893,10 @@ static const struct snd_soc_dapm_route intercon[] = { Q6ROUTING_RX_DAPM_ROUTE("TERT_MI2S_RX Audio Mixer", "TERT_MI2S_RX"), Q6ROUTING_RX_DAPM_ROUTE("SEC_MI2S_RX Audio Mixer", "SEC_MI2S_RX"), Q6ROUTING_RX_DAPM_ROUTE("PRI_MI2S_RX Audio Mixer", "PRI_MI2S_RX"), + Q6ROUTING_RX_DAPM_ROUTE("PRI_PCM_RX Audio Mixer", "PRI_PCM_RX"), + Q6ROUTING_RX_DAPM_ROUTE("SEC_PCM_RX Audio Mixer", "SEC_PCM_RX"), + Q6ROUTING_RX_DAPM_ROUTE("TERT_PCM_RX Audio Mixer", "TERT_PCM_RX"), + Q6ROUTING_RX_DAPM_ROUTE("QUAT_PCM_RX Audio Mixer", "QUAT_PCM_RX"), Q6ROUTING_RX_DAPM_ROUTE("PRIMARY_TDM_RX_0 Audio Mixer", "PRIMARY_TDM_RX_0"), Q6ROUTING_RX_DAPM_ROUTE("PRIMARY_TDM_RX_1 Audio Mixer",
This patch adds support to PCM_PORT mixers required to select path between ASM stream and AFE ports. Signed-off-by: Adam Serbinski <adam@serbinski.com> CC: Andy Gross <agross@kernel.org> CC: Mark Rutland <mark.rutland@arm.com> CC: Liam Girdwood <lgirdwood@gmail.com> CC: Patrick Lai <plai@codeaurora.org> CC: Banajit Goswami <bgoswami@codeaurora.org> CC: Jaroslav Kysela <perex@perex.cz> CC: Takashi Iwai <tiwai@suse.com> CC: alsa-devel@alsa-project.org CC: linux-arm-msm@vger.kernel.org CC: devicetree@vger.kernel.org CC: linux-kernel@vger.kernel.org --- sound/soc/qcom/qdsp6/q6routing.c | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+)