ASoC: wm_adsp: Disable DMAs before clearing the transfer length
authorSimon Trimmer <simont@opensource.wolfsonmicro.com>
Wed, 22 Jun 2016 14:31:03 +0000 (15:31 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 22 Jun 2016 14:45:06 +0000 (15:45 +0100)
This patch reorders the clearing of the DMA masks to avoid potential
artefacts being introduced.

Signed-off-by: Simon Trimmer <simont@opensource.wolfsonmicro.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wm_adsp.c

index 7e42474d7ae491508dbc58b7d71702f37c332664..f6eb2e5b2c077df2c7e754389fe5bcae3308b7d3 100644 (file)
@@ -2366,13 +2366,15 @@ int wm_adsp2_event(struct snd_soc_dapm_widget *w,
                dsp->running = false;
 
                regmap_update_bits(dsp->regmap, dsp->base + ADSP2_CONTROL,
-                                  ADSP2_SYS_ENA | ADSP2_CORE_ENA |
-                                  ADSP2_START, 0);
+                                  ADSP2_CORE_ENA | ADSP2_START, 0);
 
                /* Make sure DMAs are quiesced */
+               regmap_write(dsp->regmap, dsp->base + ADSP2_RDMA_CONFIG_1, 0);
                regmap_write(dsp->regmap, dsp->base + ADSP2_WDMA_CONFIG_1, 0);
                regmap_write(dsp->regmap, dsp->base + ADSP2_WDMA_CONFIG_2, 0);
-               regmap_write(dsp->regmap, dsp->base + ADSP2_RDMA_CONFIG_1, 0);
+
+               regmap_update_bits(dsp->regmap, dsp->base + ADSP2_CONTROL,
+                                  ADSP2_SYS_ENA, 0);
 
                list_for_each_entry(ctl, &dsp->ctl_list, list)
                        ctl->enabled = 0;