aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>2014-11-18 11:25:27 -0500
committerMark Brown <broonie@kernel.org>2014-11-18 12:27:02 -0500
commit00e4c3b6e285da90e736fbefff3d9e74a200ee54 (patch)
tree18a17d5b24e8e455b42b61ace2edadc6818a8fe6
parent9da7a5a9fdeeb76b2243f6b473363a7e6147ab6f (diff)
ASoC: wm_adsp: Move core_ena to be co-located with start bit
Many firmwares do not wait for the start bit before they begin processing audio, whilst this is a bug on the firmware side there are too many such firmwares in the wild to ignore the situation. This patch moves the core enable to happen at same time as the start, the firmware looses the ability to overlap its own startup with the audio path bring up but we ensure that all firmwares behave. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/codecs/wm_adsp.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
index 67124783558a..cce9020933c6 100644
--- a/sound/soc/codecs/wm_adsp.c
+++ b/sound/soc/codecs/wm_adsp.c
@@ -1595,13 +1595,6 @@ static void wm_adsp2_boot_work(struct work_struct *work)
1595 if (ret != 0) 1595 if (ret != 0)
1596 goto err; 1596 goto err;
1597 1597
1598 ret = regmap_update_bits_async(dsp->regmap,
1599 dsp->base + ADSP2_CONTROL,
1600 ADSP2_CORE_ENA,
1601 ADSP2_CORE_ENA);
1602 if (ret != 0)
1603 goto err;
1604
1605 dsp->running = true; 1598 dsp->running = true;
1606 1599
1607 return; 1600 return;
@@ -1651,8 +1644,8 @@ int wm_adsp2_event(struct snd_soc_dapm_widget *w,
1651 1644
1652 ret = regmap_update_bits(dsp->regmap, 1645 ret = regmap_update_bits(dsp->regmap,
1653 dsp->base + ADSP2_CONTROL, 1646 dsp->base + ADSP2_CONTROL,
1654 ADSP2_START, 1647 ADSP2_CORE_ENA | ADSP2_START,
1655 ADSP2_START); 1648 ADSP2_CORE_ENA | ADSP2_START);
1656 if (ret != 0) 1649 if (ret != 0)
1657 goto err; 1650 goto err;
1658 break; 1651 break;