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

Commit 4b91c1a0 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ASoC: wcd9335: reduce speaker teardown latency"

parents 383cee12 e99fdc13
Loading
Loading
Loading
Loading
+27 −7
Original line number Diff line number Diff line
@@ -3134,8 +3134,13 @@ static int tasha_codec_enable_slimrx(struct snd_soc_dapm_widget *w,
					      dai->rate, dai->bit_width,
					      &dai->grph);
		break;
	case SND_SOC_DAPM_POST_PMD:
	case SND_SOC_DAPM_PRE_PMD:
		if (!test_bit(SB_CLK_GEAR, &tasha_p->status_mask)) {
			tasha_codec_vote_max_bw(codec, true);
			set_bit(SB_CLK_GEAR, &tasha_p->status_mask);
		}
		break;
	case SND_SOC_DAPM_POST_PMD:
		ret = wcd9xxx_disconnect_port(core, &dai->wcd9xxx_ch_list,
					      dai->grph);
		dev_dbg(codec->dev, "%s: Disconnect RX port, ret = %d\n",
@@ -3149,7 +3154,6 @@ static int tasha_codec_enable_slimrx(struct snd_soc_dapm_widget *w,
				__func__);
		ret = wcd9xxx_close_slim_sch_rx(core, &dai->wcd9xxx_ch_list,
						dai->grph);
		tasha_codec_vote_max_bw(codec, false);
		break;
	}
	return ret;
@@ -10189,20 +10193,25 @@ static const struct snd_soc_dapm_widget tasha_dapm_widgets[] = {
	SND_SOC_DAPM_OUTPUT("ANC EAR"),
	SND_SOC_DAPM_AIF_IN_E("AIF1 PB", "AIF1 Playback", 0, SND_SOC_NOPM,
				AIF1_PB, 0, tasha_codec_enable_slimrx,
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD |
				SND_SOC_DAPM_POST_PMD),
	SND_SOC_DAPM_AIF_IN_E("AIF2 PB", "AIF2 Playback", 0, SND_SOC_NOPM,
				AIF2_PB, 0, tasha_codec_enable_slimrx,
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD |
				SND_SOC_DAPM_POST_PMD),
	SND_SOC_DAPM_AIF_IN_E("AIF3 PB", "AIF3 Playback", 0, SND_SOC_NOPM,
				AIF3_PB, 0, tasha_codec_enable_slimrx,
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD |
				SND_SOC_DAPM_POST_PMD),
	SND_SOC_DAPM_AIF_IN_E("AIF4 PB", "AIF4 Playback", 0, SND_SOC_NOPM,
				AIF4_PB, 0, tasha_codec_enable_slimrx,
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD |
				SND_SOC_DAPM_POST_PMD),
	SND_SOC_DAPM_AIF_IN_E("AIF MIX1 PB", "AIF Mix Playback", 0,
			       SND_SOC_NOPM, AIF_MIX1_PB, 0,
			       tasha_codec_enable_slimrx,
			       SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
			       SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD |
			       SND_SOC_DAPM_POST_PMD),

	SND_SOC_DAPM_MUX("SLIM RX0 MUX", SND_SOC_NOPM, TASHA_RX0, 0,
				&slim_rx_mux[TASHA_RX0]),
@@ -11069,8 +11078,19 @@ static int tasha_startup(struct snd_pcm_substream *substream,
static void tasha_shutdown(struct snd_pcm_substream *substream,
		struct snd_soc_dai *dai)
{
	struct tasha_priv *tasha = snd_soc_codec_get_drvdata(dai->codec);

	pr_debug("%s(): substream = %s  stream = %d\n" , __func__,
		 substream->name, substream->stream);

	if (tasha->intf_type == WCD9XXX_INTERFACE_TYPE_I2C)
		return;

	if ((substream->stream == SNDRV_PCM_STREAM_PLAYBACK) &&
	    test_bit(SB_CLK_GEAR, &tasha->status_mask)) {
		tasha_codec_vote_max_bw(dai->codec, false);
		clear_bit(SB_CLK_GEAR, &tasha->status_mask);
	}
}

static int tasha_set_decimator_rate(struct snd_soc_dai *dai,