aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/omap
diff options
context:
space:
mode:
authorAxel Castaneda Gonzalez <x0055901@ti.com>2012-01-06 01:06:44 -0600
committerDan Murphy <dmurphy@ti.com>2012-01-06 13:34:06 -0600
commitd5fdade4ea25e2167564ee55b942b5bde607faed (patch)
tree46ae3e24e7b89c960713279ed7db4bab44e30c75 /sound/soc/omap
parent278ed75737ec6e72d83070fa6ee33314ecafa863 (diff)
downloadkernel_samsung_espresso10-d5fdade4ea25e2167564ee55b942b5bde607faed.zip
kernel_samsung_espresso10-d5fdade4ea25e2167564ee55b942b5bde607faed.tar.gz
kernel_samsung_espresso10-d5fdade4ea25e2167564ee55b942b5bde607faed.tar.bz2
HACK: ASoC: OMAP ABE: Save DL1 BE related gains
MM_EXT_DL gains were being lost when ABE was hitting OFF, because they were not properly saved when DL1 last active BE was muted. Save DL1 BE gains along with ABE context in order to avoid losing their values when OFF is hit. Gain values are saved when gains are muted. These gains were not properly muted if BT_VX_DL or MM_EXT_DL port was enabled and DL2 path was active, since PDM_DL1 port gets enabled(for DL1 or DL2) when ABE McPDM is started. Change-Id: Ib0d658c65c134f7ee4baeb13f7e09f6299b1923a Signed-off-by: Axel Castaneda Gonzalez <x0055901@ti.com>
Diffstat (limited to 'sound/soc/omap')
-rw-r--r--sound/soc/omap/omap-abe-dsp.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/sound/soc/omap/omap-abe-dsp.c b/sound/soc/omap/omap-abe-dsp.c
index 7a659bd..23003dd 100644
--- a/sound/soc/omap/omap-abe-dsp.c
+++ b/sound/soc/omap/omap-abe-dsp.c
@@ -2125,6 +2125,19 @@ static int aess_save_context(struct abe_data *abe)
abe_mute_gain(MIXECHO, MIX_ECHO_DL1);
abe_mute_gain(MIXECHO, MIX_ECHO_DL2);
+ /* mute gains associated with DL1 BE
+ * ideally, these gains should be muted/saved when BE is muted, but
+ * when ABE McPDM is started for DL1 or DL2, PDM_DL1 port gets enabled
+ * which prevents to mute these gains since two ports on DL1 path are
+ * active when mute is called for BT_VX_DL or MM_EXT_DL.
+ *
+ * These gains are not restored along with the context because they
+ * are properly unmuted/restored when any of the DL1 BEs is unmuted
+ */
+ abe_mute_gain(GAINS_DL1, GAIN_LEFT_OFFSET);
+ abe_mute_gain(GAINS_DL1, GAIN_RIGHT_OFFSET);
+ abe_mute_gain(MIXSDT, MIX_SDT_INPUT_DL1_MIXER);
+
return 0;
}