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

Commit dac17fb6 authored by Sudheer Papothi's avatar Sudheer Papothi
Browse files

ASoC: wcd9335: Increase slimbus clock gear to reduce cold start latency



Increase slimbus clock gear during device path bringup to
reduce the latency of codec register writes. Change increases
slimbus clock gear before device path bringup and restore
back to default after device path bringup.

Change-Id: I6aae7fffb001c4b0dbf6947bb41200682965a38f
Signed-off-by: default avatarSudheer Papothi <spapothi@codeaurora.org>
parent 0dc787c3
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
@@ -708,6 +708,9 @@ struct tasha_priv {
	int spkr_mode;
};

static int tasha_codec_vote_max_bw(struct snd_soc_codec *codec,
				   bool vote);

static const struct tasha_reg_mask_val tasha_spkr_default[] = {
	{WCD9335_CDC_COMPANDER7_CTL3, 0x80, 0x80},
	{WCD9335_CDC_COMPANDER8_CTL3, 0x80, 0x80},
@@ -7259,6 +7262,40 @@ static int tasha_codec_aif4_mixer_switch_put(struct snd_kcontrol *kcontrol,
	return 1;
}

static int tasha_dapm_pre_powerup(struct snd_soc_dapm_widget *w,
				  struct snd_kcontrol *kcontrol, int event)
{
	struct snd_soc_codec *codec = w->codec;

	dev_dbg(codec->dev, "%s: w->name %s event %d\n",
		 __func__, w->name, event);

	switch (event) {
	case SND_SOC_DAPM_PRE_PMU:
		tasha_codec_vote_max_bw(codec, true);
		break;
	}

	return 0;
}

static int tasha_dapm_post_powerup(struct snd_soc_dapm_widget *w,
				   struct snd_kcontrol *kcontrol, int event)
{
	struct snd_soc_codec *codec = w->codec;

	dev_dbg(codec->dev, "%s: w->name %s event %d\n",
		 __func__, w->name, event);

	switch (event) {
	case SND_SOC_DAPM_POST_PMU:
		tasha_codec_vote_max_bw(codec, false);
		break;
	}

	return 0;
}

static const char * const tasha_ear_pa_gain_text[] = {
	"G_6_DB", "G_4P5_DB", "G_3_DB", "G_1P5_DB",
	"G_0_DB", "G_M2P5_DB", "UNDEFINED", "G_M12_DB"
@@ -9161,6 +9198,8 @@ static const struct snd_soc_dapm_widget tasha_dapm_widgets[] = {
			&anc_lineout1_switch),
	SND_SOC_DAPM_SWITCH("ANC LINEOUT2 Enable", SND_SOC_NOPM, 0, 0,
			&anc_lineout2_switch),
	SND_SOC_DAPM_PRE("Pre powerup", tasha_dapm_pre_powerup),
	SND_SOC_DAPM_POST("Post powerup", tasha_dapm_post_powerup),
};

static int tasha_get_channel_map(struct snd_soc_dai *dai,