Loading sound/soc/msm/msm8996.c +38 −4 Original line number Diff line number Diff line Loading @@ -488,6 +488,37 @@ static int msm8996_mclk_event(struct snd_soc_dapm_widget *w, return 0; } static int msm_snd_enable_codec_ext_tx_clk(struct snd_soc_codec *codec, int enable, bool dapm) { int ret = 0; if (!strcmp(dev_name(codec->dev), "tasha_codec")) ret = tasha_cdc_mclk_tx_enable(codec, enable, dapm); else { dev_err(codec->dev, "%s: unknown codec to enable ext clk\n", __func__); ret = -EINVAL; } return ret; } static int msm8996_mclk_tx_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); pr_debug("%s: event = %d\n", __func__, event); switch (event) { case SND_SOC_DAPM_PRE_PMU: return msm_snd_enable_codec_ext_tx_clk(codec, 1, true); case SND_SOC_DAPM_POST_PMD: return msm_snd_enable_codec_ext_tx_clk(codec, 0, true); } return 0; } static int msm_hifi_ctrl_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { Loading Loading @@ -532,6 +563,9 @@ static const struct snd_soc_dapm_widget msm8996_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY("MCLK", SND_SOC_NOPM, 0, 0, msm8996_mclk_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SUPPLY("MCLK TX", SND_SOC_NOPM, 0, 0, msm8996_mclk_tx_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SPK("Lineout_1 amp", NULL), SND_SOC_DAPM_SPK("Lineout_3 amp", NULL), SND_SOC_DAPM_SPK("Lineout_2 amp", NULL), Loading @@ -557,10 +591,10 @@ static const struct snd_soc_dapm_widget msm8996_dapm_widgets[] = { }; static struct snd_soc_dapm_route wcd9335_audio_paths[] = { {"MIC BIAS1", NULL, "MCLK"}, {"MIC BIAS2", NULL, "MCLK"}, {"MIC BIAS3", NULL, "MCLK"}, {"MIC BIAS4", NULL, "MCLK"}, {"MIC BIAS1", NULL, "MCLK TX"}, {"MIC BIAS2", NULL, "MCLK TX"}, {"MIC BIAS3", NULL, "MCLK TX"}, {"MIC BIAS4", NULL, "MCLK TX"}, }; static int slim5_rx_sample_rate_get(struct snd_kcontrol *kcontrol, Loading Loading
sound/soc/msm/msm8996.c +38 −4 Original line number Diff line number Diff line Loading @@ -488,6 +488,37 @@ static int msm8996_mclk_event(struct snd_soc_dapm_widget *w, return 0; } static int msm_snd_enable_codec_ext_tx_clk(struct snd_soc_codec *codec, int enable, bool dapm) { int ret = 0; if (!strcmp(dev_name(codec->dev), "tasha_codec")) ret = tasha_cdc_mclk_tx_enable(codec, enable, dapm); else { dev_err(codec->dev, "%s: unknown codec to enable ext clk\n", __func__); ret = -EINVAL; } return ret; } static int msm8996_mclk_tx_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); pr_debug("%s: event = %d\n", __func__, event); switch (event) { case SND_SOC_DAPM_PRE_PMU: return msm_snd_enable_codec_ext_tx_clk(codec, 1, true); case SND_SOC_DAPM_POST_PMD: return msm_snd_enable_codec_ext_tx_clk(codec, 0, true); } return 0; } static int msm_hifi_ctrl_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { Loading Loading @@ -532,6 +563,9 @@ static const struct snd_soc_dapm_widget msm8996_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY("MCLK", SND_SOC_NOPM, 0, 0, msm8996_mclk_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SUPPLY("MCLK TX", SND_SOC_NOPM, 0, 0, msm8996_mclk_tx_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SPK("Lineout_1 amp", NULL), SND_SOC_DAPM_SPK("Lineout_3 amp", NULL), SND_SOC_DAPM_SPK("Lineout_2 amp", NULL), Loading @@ -557,10 +591,10 @@ static const struct snd_soc_dapm_widget msm8996_dapm_widgets[] = { }; static struct snd_soc_dapm_route wcd9335_audio_paths[] = { {"MIC BIAS1", NULL, "MCLK"}, {"MIC BIAS2", NULL, "MCLK"}, {"MIC BIAS3", NULL, "MCLK"}, {"MIC BIAS4", NULL, "MCLK"}, {"MIC BIAS1", NULL, "MCLK TX"}, {"MIC BIAS2", NULL, "MCLK TX"}, {"MIC BIAS3", NULL, "MCLK TX"}, {"MIC BIAS4", NULL, "MCLK TX"}, }; static int slim5_rx_sample_rate_get(struct snd_kcontrol *kcontrol, Loading