Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58409b08 authored by Santosh Mardi's avatar Santosh Mardi
Browse files

ASoC: msm8916: update machine driver for new SSR design.



Update machine driver to handle MCLK enable properly for the
new sub system restart(SSR) design.

CRs-Fixed: 661491
Change-Id: Ib23e70fc253ca5fa6feaad25087795f1dd39df64
Signed-off-by: default avatarSantosh Mardi <gsantosh@codeaurora.org>
parent cd738d78
Loading
Loading
Loading
Loading
+19 −13
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@
#include <linux/qpnp/clkdiv.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/timer.h>
#include <linux/workqueue.h>
#include <linux/sched.h>
#include <sound/core.h>
@@ -235,7 +234,7 @@ static int msm8x16_mclk_event(struct snd_soc_dapm_widget *w,
static const struct snd_soc_dapm_widget msm8x16_dapm_widgets[] = {

	SND_SOC_DAPM_SUPPLY("MCLK",  SND_SOC_NOPM, 0, 0,
	msm8x16_mclk_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
	msm8x16_mclk_event, SND_SOC_DAPM_POST_PMD),
	SND_SOC_DAPM_MIC("Handset Mic", NULL),
	SND_SOC_DAPM_MIC("Headset Mic", NULL),
	SND_SOC_DAPM_MIC("Secondary Mic", NULL),
@@ -578,8 +577,8 @@ static int msm8x16_enable_codec_ext_clk(struct snd_soc_codec *codec,
			msm8x16_wcd_mclk_enable(codec, 1, dapm);
		}
	} else {
		if (atomic_dec_return(&pdata->mclk_rsc_ref) == 0) {
		mutex_lock(&pdata->cdc_mclk_mutex);
		atomic_set(&pdata->mclk_rsc_ref, 0);
		cancel_delayed_work_sync(&pdata->enable_mclk_work);
		pdata->digital_cdc_clk.clk_val = 0;
		afe_set_digital_codec_core_clock(
@@ -589,7 +588,6 @@ static int msm8x16_enable_codec_ext_clk(struct snd_soc_codec *codec,
		mutex_unlock(&pdata->cdc_mclk_mutex);
		msm8x16_wcd_mclk_enable(codec, 0, dapm);
	}
	}
	return ret;
}

@@ -658,6 +656,14 @@ static int msm8x16_mclk_event(struct snd_soc_dapm_widget *w,
			      struct snd_kcontrol *kcontrol, int event)
{
	pr_debug("%s: event = %d\n", __func__, event);
	switch (event) {
	case SND_SOC_DAPM_POST_PMD:
		return msm8x16_enable_codec_ext_clk(w->codec, 0, true);
	default:
		pr_err("%s: invalid DAPM event %d\n", __func__, event);
		return -EINVAL;
	}

	return 0;
}