aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorLiam Girdwood <lrg@ti.com>2011-12-12 23:46:18 +0000
committerSimon Wilson <simonwilson@google.com>2012-01-17 13:44:30 -0800
commit9eac901ff48b70e54c7c437c1376ed06f2bef918 (patch)
tree30af69969b08ba6771d85e592b87a5c5e3919724 /sound/soc
parentd6ce9ced7fc1e92d332f2faa0862d68d4844a516 (diff)
downloadkernel_samsung_tuna-9eac901ff48b70e54c7c437c1376ed06f2bef918.zip
kernel_samsung_tuna-9eac901ff48b70e54c7c437c1376ed06f2bef918.tar.gz
kernel_samsung_tuna-9eac901ff48b70e54c7c437c1376ed06f2bef918.tar.bz2
ASoC: dsp - BE disconnection after pending flag is clear
Currently we can disconnect a BE and have its update flag incorrectly set after reparenting. Fix this so we always clear the update flag before any disconnections and reparenting. dsp_run_update_startup() also called disconnect but this was always called anyway by its caller soc_dsp_runtime_update() before the update flag was cleared. Change-Id: If0cde4c9df845a7189188bb49e6fb4fd496a925d Signed-off-by: Liam Girdwood <lrg@ti.com>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/soc-dsp.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sound/soc/soc-dsp.c b/sound/soc/soc-dsp.c
index 40e459a..ab36c55 100644
--- a/sound/soc/soc-dsp.c
+++ b/sound/soc/soc-dsp.c
@@ -1103,7 +1103,7 @@ disconnect:
if (be->dsp[stream].state != SND_SOC_DSP_STATE_START)
dsp_params->state = SND_SOC_DSP_LINK_STATE_FREE;
}
- be_disconnect(fe, stream);
+
return ret;
}
@@ -1181,8 +1181,8 @@ int soc_dsp_runtime_update(struct snd_soc_dapm_widget *widget)
}
/* free old playback links */
- be_disconnect(fe, SNDRV_PCM_STREAM_PLAYBACK);
fe_clear_pending(fe, SNDRV_PCM_STREAM_PLAYBACK);
+ be_disconnect(fe, SNDRV_PCM_STREAM_PLAYBACK);
capture:
/* skip if FE doesn't have capture capability */
@@ -1203,8 +1203,8 @@ capture:
}
/* free old capture links */
- be_disconnect(fe, SNDRV_PCM_STREAM_CAPTURE);
fe_clear_pending(fe, SNDRV_PCM_STREAM_CAPTURE);
+ be_disconnect(fe, SNDRV_PCM_STREAM_CAPTURE);
}
mutex_unlock(&widget->dapm->card->dsp_mutex);