diff mbox

ASoC: wm_adsp: Move core_ena to be co-located with start bit

Message ID 1416327927-8559-1-git-send-email-ckeepax@opensource.wolfsonmicro.com (mailing list archive)
State Accepted
Commit 00e4c3b6e285da90e736fbefff3d9e74a200ee54
Headers show

Commit Message

Charles Keepax Nov. 18, 2014, 4:25 p.m. UTC
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>
---
 sound/soc/codecs/wm_adsp.c |   11 ++---------
 1 files changed, 2 insertions(+), 9 deletions(-)

Comments

Mark Brown Nov. 18, 2014, 5:27 p.m. UTC | #1
On Tue, Nov 18, 2014 at 04:25:27PM +0000, Charles Keepax wrote:
> 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

Applied, thanks.
diff mbox

Patch

diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
index e54d7b5..720d6e8 100644
--- a/sound/soc/codecs/wm_adsp.c
+++ b/sound/soc/codecs/wm_adsp.c
@@ -1593,13 +1593,6 @@  static void wm_adsp2_boot_work(struct work_struct *work)
 	if (ret != 0)
 		goto err;
 
-	ret = regmap_update_bits_async(dsp->regmap,
-				       dsp->base + ADSP2_CONTROL,
-				       ADSP2_CORE_ENA,
-				       ADSP2_CORE_ENA);
-	if (ret != 0)
-		goto err;
-
 	dsp->running = true;
 
 	return;
@@ -1649,8 +1642,8 @@  int wm_adsp2_event(struct snd_soc_dapm_widget *w,
 
 		ret = regmap_update_bits(dsp->regmap,
 					 dsp->base + ADSP2_CONTROL,
-					 ADSP2_START,
-					 ADSP2_START);
+					 ADSP2_CORE_ENA | ADSP2_START,
+					 ADSP2_CORE_ENA | ADSP2_START);
 		if (ret != 0)
 			goto err;
 		break;