All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@opensource.wolfsonmicro.com>
To: Chaithrika U S <chaithrika@ti.com>
Cc: khilman@deeprootsystems.com, alsa-devel@alsa-project.org,
	davinci-linux-open-source@linux.davincidsp.com,
	Troy Kisky <troy.kisky@boundarydevices.com>
Subject: Re: [PATCH] ASoC: DaVinci: Fixes to McASP configuration
Date: Wed, 16 Sep 2009 21:18:19 +0100	[thread overview]
Message-ID: <20090916201819.GB20675@rakim.wolfsonmicro.main> (raw)
In-Reply-To: <1253052809-24547-1-git-send-email-chaithrika@ti.com>

On Tue, Sep 15, 2009 at 06:13:29PM -0400, Chaithrika U S wrote:
> McASP register settings are not correct for DSP mode of operation.
> There is a channel swap initally. This patch provides fixes to
> the register values for proper working.

Adding Troy since he's been looking at some L/R swap issues.  Does this
only apply in DSP mode or does it affect all modes (your commit message
isn't terribly clear on that one)?

> Tested on DA830/OMAP-L137 EVM, DM6467 EVM.

> Signed-off-by: Chaithrika U S <chaithrika@ti.com>

> Applies to ALSA GIT tree on branch topic/asoc at
> http://git.kernel.org/?p=linux/kernel/git/tiwai/sound-2.6.git;a=shortlog;
> h=topic/asoc
> 
>  sound/soc/davinci/davinci-mcasp.c |   24 ++++++++++++++++++++++--
>  1 files changed, 22 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
> index eca22d7..7a06c0a 100644
> --- a/sound/soc/davinci/davinci-mcasp.c
> +++ b/sound/soc/davinci/davinci-mcasp.c
> @@ -512,34 +512,49 @@ static int davinci_config_channel_size(struct davinci_audio_dev *dev,
>  				       int channel_size)
>  {
>  	u32 fmt = 0;
> +	u32 mask, rotate;
>  
>  	switch (channel_size) {
>  	case DAVINCI_AUDIO_WORD_8:
>  		fmt = 0x03;
> +		rotate = 6;
> +		mask = 0x000000ff;
>  		break;
>  
>  	case DAVINCI_AUDIO_WORD_12:
>  		fmt = 0x05;
> +		rotate = 5;
> +		mask = 0x00000fff;
>  		break;
>  
>  	case DAVINCI_AUDIO_WORD_16:
>  		fmt = 0x07;
> +		rotate = 4;
> +		mask = 0x0000ffff;
>  		break;
>  
>  	case DAVINCI_AUDIO_WORD_20:
>  		fmt = 0x09;
> +		rotate = 3;
> +		mask = 0x000fffff;
>  		break;
>  
>  	case DAVINCI_AUDIO_WORD_24:
>  		fmt = 0x0B;
> +		rotate = 2;
> +		mask = 0x00ffffff;
>  		break;
>  
>  	case DAVINCI_AUDIO_WORD_28:
>  		fmt = 0x0D;
> +		rotate = 1;
> +		mask = 0x0fffffff;
>  		break;
>  
>  	case DAVINCI_AUDIO_WORD_32:
>  		fmt = 0x0F;
> +		rotate = 0;
> +		mask = 0xffffffff;
>  		break;
>  
>  	default:
> @@ -550,6 +565,13 @@ static int davinci_config_channel_size(struct davinci_audio_dev *dev,
>  					RXSSZ(fmt), RXSSZ(0x0F));
>  	mcasp_mod_bits(dev->base + DAVINCI_MCASP_TXFMT_REG,
>  					TXSSZ(fmt), TXSSZ(0x0F));
> +	mcasp_mod_bits(dev->base + DAVINCI_MCASP_TXFMT_REG, TXROT(rotate),
> +							TXROT(7));
> +	mcasp_mod_bits(dev->base + DAVINCI_MCASP_RXFMT_REG, RXROT(rotate),
> +							RXROT(7));
> +	mcasp_set_reg(dev->base + DAVINCI_MCASP_TXMASK_REG, mask);
> +	mcasp_set_reg(dev->base + DAVINCI_MCASP_RXMASK_REG, mask);
> +
>  	return 0;
>  }
>  
> @@ -638,7 +660,6 @@ static void davinci_hw_param(struct davinci_audio_dev *dev, int stream)
>  			printk(KERN_ERR "playback tdm slot %d not supported\n",
>  				dev->tdm_slots);
>  
> -		mcasp_set_reg(dev->base + DAVINCI_MCASP_TXMASK_REG, 0xFFFFFFFF);
>  		mcasp_clr_bits(dev->base + DAVINCI_MCASP_TXFMCTL_REG, FSXDUR);
>  	} else {
>  		/* bit stream is MSB first with no delay */
> @@ -655,7 +676,6 @@ static void davinci_hw_param(struct davinci_audio_dev *dev, int stream)
>  			printk(KERN_ERR "capture tdm slot %d not supported\n",
>  				dev->tdm_slots);
>  
> -		mcasp_set_reg(dev->base + DAVINCI_MCASP_RXMASK_REG, 0xFFFFFFFF);
>  		mcasp_clr_bits(dev->base + DAVINCI_MCASP_RXFMCTL_REG, FSRDUR);
>  	}
>  }
> -- 
> 1.5.6
> 

  reply	other threads:[~2009-09-16 20:18 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-15 22:13 [PATCH] ASoC: DaVinci: Fixes to McASP configuration Chaithrika U S
2009-09-16 20:18 ` Mark Brown [this message]
2009-09-17 12:00   ` Chaithrika U S
2009-09-17 12:09     ` Mark Brown
2009-09-18 14:08 ` Mark Brown

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=20090916201819.GB20675@rakim.wolfsonmicro.main \
    --to=broonie@opensource.wolfsonmicro.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=chaithrika@ti.com \
    --cc=davinci-linux-open-source@linux.davincidsp.com \
    --cc=khilman@deeprootsystems.com \
    --cc=troy.kisky@boundarydevices.com \
    /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.