All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Valentin <eduardo.valentin@nokia.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Linux-OMAP <linux-omap@vger.kernel.org>,
	ALSA-Devel <alsa-devel@vger.kernel.org>,
	Jarkko Nikula <jhnikula@gmail.com>,
	"Nurkkala Eero.An (EXT-Offcode/Oulu)"
	<ext-Eero.Nurkkala@nokia.com>,
	"Ujfalusi Peter (Nokia-D/Tampere)" <peter.ujfalusi@nokia.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Eero Nurkkala <ext-eero.nurkkala@nokia.com>
Subject: [PATCHv5 18/20] ASoC: Always syncronize audio transfers on frames
Date: Thu, 20 Aug 2009 16:18:24 +0300	[thread overview]
Message-ID: <1250774306-7581-18-git-send-email-eduardo.valentin@nokia.com> (raw)
In-Reply-To: <1250774306-7581-1-git-send-email-eduardo.valentin@nokia.com>

From: Eero Nurkkala <ext-eero.nurkkala@nokia.com>

All these steps are required for ASoC to behave correctly.
rccr and xccr are format dependent, for example TDM audio
has different values than I2S or DSP_A. Also the
omap_mcbsp_xmit_enable and/or omap_mcbsp_recv_enable must
be called right after the DMA has started.
This provides no longer L and R channels switching at random.

Signed-off-by: Eero Nurkkala <ext-eero.nurkkala@nokia.com>
---
 sound/soc/omap/omap-mcbsp.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
index a7b0961..6e85508 100644
--- a/sound/soc/omap/omap-mcbsp.c
+++ b/sound/soc/omap/omap-mcbsp.c
@@ -191,6 +191,11 @@ static int omap_mcbsp_dai_trigger(struct snd_pcm_substream *substream, int cmd,
 	case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
 		mcbsp_data->active++;
 		omap_mcbsp_start(mcbsp_data->bus_id, play, !play);
+		/* Make sure data transfer is frame synchronized */
+		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+			omap_mcbsp_xmit_enable(mcbsp_data->bus_id, 1);
+		else
+			omap_mcbsp_recv_enable(mcbsp_data->bus_id, 1);
 		break;
 
 	case SNDRV_PCM_TRIGGER_STOP:
@@ -336,11 +341,15 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
 		/* 1-bit data delay */
 		regs->rcr2	|= RDATDLY(1);
 		regs->xcr2	|= XDATDLY(1);
+		regs->rccr	|= RFULL_CYCLE | RDMAEN | RDISABLE;
+		regs->xccr	|= (DXENDLY(1) | XDMAEN | XDISABLE);
 		break;
 	case SND_SOC_DAIFMT_DSP_A:
 		/* 1-bit data delay */
 		regs->rcr2      |= RDATDLY(1);
 		regs->xcr2      |= XDATDLY(1);
+		regs->rccr	|= RFULL_CYCLE | RDMAEN | RDISABLE;
+		regs->xccr	|= (DXENDLY(1) | XDMAEN | XDISABLE);
 		/* Invert FS polarity configuration */
 		temp_fmt ^= SND_SOC_DAIFMT_NB_IF;
 		break;
-- 
1.6.2.GIT


  parent reply	other threads:[~2009-08-20 13:33 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-20 13:18 [PATCHv5 01/20] OMAP: McBSP: Provide functions for ASoC frame syncronization Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 02/20] OMAP: McBSP: Add IRQEN, IRQSTATUS, THRESHOLD2 and THRESHOLD1 registers Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 03/20] OMAP: McBSP: Use appropriate value for startup delay Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 04/20] OMAP: McBSP: Add transmit/receive threshold handler Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 05/20] OMAP: McBSP: Create and export max_(r|t)x_thres property Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 06/20] OMAP3: McBSP: Lower the maximum buffersize for McBSP1,3,4,5 Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 06/20] OMAP3: McBSP: Lower the maximum buffersize for McBSP1, 3, 4, 5 Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 07/20] OMAP: McBSP: Rename thres sysfs symbols Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 08/20] OMAP: McBSP: Add link DMA mode selection Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 09/20] OMAP: McBSP: Wakeups utilized Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 10/20] OMAP: McBSP: Change wakeup signals Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 11/20] OMAP: McBSP: Retain McBSP FCLK clockactivity Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 12/20] OMAP: McBSP: Configure NO IDLE mode for DMA mode different of threshold Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 13/20] OMAP: McBSP: Do not enable wakeups for no-idle mode Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 14/20] OMAP: McBSP: Let element DMA mode hit retention also Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 15/20] ASoC: OMAP: Enable DMA burst mode Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 16/20] ASoC: OMAP: Make DMA 64 aligned Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 17/20] ASoC: Add runtime check for RFIG and XFIG Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 18/20] ASoC: Always syncronize audio transfers on frames Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin [this message]
2009-08-20 13:18 ` [PATCHv5 19/20] ASoC: OMAP: Use McBSP threshold to playback and capture Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin
2009-08-20 13:18 ` [PATCHv5 20/20] ASoC: OMAP: Use DMA operating mode of McBSP Eduardo Valentin
2009-08-20 13:18 ` Eduardo Valentin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1250774306-7581-18-git-send-email-eduardo.valentin@nokia.com \
    --to=eduardo.valentin@nokia.com \
    --cc=alsa-devel@vger.kernel.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=ext-Eero.Nurkkala@nokia.com \
    --cc=jhnikula@gmail.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=peter.ujfalusi@nokia.com \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.