From: Liam Girdwood <lrg@slimlogic.co.uk>
To: Wan ZongShun <mcuos.com@gmail.com>
Cc: alsa-devel <alsa-devel@alsa-project.org>,
Mark Brown <broonie@opensource.wolfsonmicro.com>
Subject: Re: [PATCH 1/3] ALSA/NUC900: Fix some codes according to Liam for nuc900 alsa driver.
Date: Tue, 01 Jun 2010 10:04:57 +0100 [thread overview]
Message-ID: <1275383097.3060.7.camel@odin> (raw)
In-Reply-To: <4C0474F3.3050503@gmail.com>
On Tue, 2010-06-01 at 10:48 +0800, Wan ZongShun wrote:
> Dear Liam & Mark,
>
> This patch is to fix some codes according to
> Liam for nuc900 alsa driver.
>
> Signed-off-by: Wan ZongShun<mcuos.com@gmail.com>
The changes here looks fine. Can you resend and add a summary of the
changes to the commit message. It's also good practice to split into a
new patch for every issue you are fixing, i.e. in this case I would have
one patch for the AC97 delays and another patch for the PCM_TX removal.
Thanks
Liam
>
> ---
> sound/soc/nuc900/nuc900-ac97.c | 20 +++++---------------
> sound/soc/nuc900/nuc900-auido.h | 4 ----
> sound/soc/nuc900/nuc900-pcm.c | 18 ++++++++++--------
> 3 files changed, 15 insertions(+), 27 deletions(-)
>
> diff --git a/sound/soc/nuc900/nuc900-ac97.c b/sound/soc/nuc900/nuc900-ac97.c
> index f7b44e0..5b864f9 100644
> --- a/sound/soc/nuc900/nuc900-ac97.c
> +++ b/sound/soc/nuc900/nuc900-ac97.c
> @@ -149,7 +149,7 @@ static void nuc900_ac97_warm_reset(struct snd_ac97 *ac97)
> val |= AC_W_RES;
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACCON, val);
>
> - udelay(1000);
> + udelay(100);
>
> val = nuc900_checkready();
> if (!!val)
> @@ -170,40 +170,30 @@ static void nuc900_ac97_cold_reset(struct snd_ac97 *ac97)
> val |= ACTL_RESET_BIT;
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);
>
> - udelay(1000);
> -
> val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
> val &= (~ACTL_RESET_BIT);
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);
>
> - udelay(1000);
> -
> /* reset AC-link interface */
>
> val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
> val |= AC_RESET;
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);
>
> - udelay(1000);
> -
> val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
> val &= ~AC_RESET;
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);
>
> - udelay(1000);
> -
> /* cold reset AC 97 */
> val = AUDIO_READ(nuc900_audio->mmio + ACTL_ACCON);
> val |= AC_C_RES;
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACCON, val);
>
> - udelay(1000);
> -
> val = AUDIO_READ(nuc900_audio->mmio + ACTL_ACCON);
> val &= (~AC_C_RES);
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACCON, val);
>
> - udelay(1000);
> + udelay(100);
>
> mutex_unlock(&ac97_mutex);
>
> @@ -222,7 +212,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream
> *substream,
> int cmd, struct snd_soc_dai *dai)
> {
> struct nuc900_audio *nuc900_audio = nuc900_ac97_data;
> - int ret, stype = SUBSTREAM_TYPE(substream);
> + int ret;
> unsigned long val, tmp;
>
> ret = 0;
> @@ -231,7 +221,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream
> *substream,
> case SNDRV_PCM_TRIGGER_START:
> case SNDRV_PCM_TRIGGER_RESUME:
> val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
> - if (PCM_TX == stype) {
> + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
> tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0);
> tmp |= (SLOT3_VALID | SLOT4_VALID | VALID_FRAME);
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp);
> @@ -254,7 +244,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream
> *substream,
> case SNDRV_PCM_TRIGGER_STOP:
> case SNDRV_PCM_TRIGGER_SUSPEND:
> val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
> - if (PCM_TX == stype) {
> + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
> tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0);
> tmp &= ~(SLOT3_VALID | SLOT4_VALID);
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp);
> diff --git a/sound/soc/nuc900/nuc900-auido.h b/sound/soc/nuc900/nuc900-auido.h
> index 95ac4ef..3038f51 100644
> --- a/sound/soc/nuc900/nuc900-auido.h
> +++ b/sound/soc/nuc900/nuc900-auido.h
> @@ -96,10 +96,6 @@
> #define RESET_PRSR 0x00
> #define AUDIO_WRITE(addr, val) __raw_writel(val, addr)
> #define AUDIO_READ(addr) __raw_readl(addr)
> -#define PCM_TX 0
> -#define PCM_RX 1
> -#define SUBSTREAM_TYPE(substream) \
> - ((substream)->stream == SNDRV_PCM_STREAM_PLAYBACK ? PCM_TX : PCM_RX)
>
> struct nuc900_audio {
> void __iomem *mmio;
> diff --git a/sound/soc/nuc900/nuc900-pcm.c b/sound/soc/nuc900/nuc900-pcm.c
> index 32a503c..445a180 100644
> --- a/sound/soc/nuc900/nuc900-pcm.c
> +++ b/sound/soc/nuc900/nuc900-pcm.c
> @@ -47,7 +47,7 @@ static int nuc900_dma_hw_params(struct snd_pcm_substream
> *substream,
> {
> struct snd_pcm_runtime *runtime = substream->runtime;
> struct nuc900_audio *nuc900_audio = runtime->private_data;
> - unsigned long flags, stype = SUBSTREAM_TYPE(substream);
> + unsigned long flags;
> int ret = 0;
>
> spin_lock_irqsave(&nuc900_audio->lock, flags);
> @@ -57,8 +57,9 @@ static int nuc900_dma_hw_params(struct snd_pcm_substream
> *substream,
> return ret;
>
> nuc900_audio->substream = substream;
> - nuc900_audio->dma_addr[stype] = runtime->dma_addr;
> - nuc900_audio->buffersize[stype] = params_buffer_bytes(params);
> + nuc900_audio->dma_addr[substream->stream] = runtime->dma_addr;
> + nuc900_audio->buffersize[substream->stream] =
> + params_buffer_bytes(params);
>
> spin_unlock_irqrestore(&nuc900_audio->lock, flags);
>
> @@ -72,7 +73,7 @@ static void nuc900_update_dma_register(struct
> snd_pcm_substream *substream,
> struct nuc900_audio *nuc900_audio = runtime->private_data;
> void __iomem *mmio_addr, *mmio_len;
>
> - if (SUBSTREAM_TYPE(substream) == PCM_TX) {
> + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
> mmio_addr = nuc900_audio->mmio + ACTL_PDSTB;
> mmio_len = nuc900_audio->mmio + ACTL_PDST_LENGTH;
> } else {
> @@ -167,18 +168,19 @@ static int nuc900_dma_prepare(struct snd_pcm_substream
> *substream)
> {
> struct snd_pcm_runtime *runtime = substream->runtime;
> struct nuc900_audio *nuc900_audio = runtime->private_data;
> - unsigned long flags, val, stype = SUBSTREAM_TYPE(substream);;
> + unsigned long flags, val;
>
> spin_lock_irqsave(&nuc900_audio->lock, flags);
>
> nuc900_update_dma_register(substream,
> - nuc900_audio->dma_addr[stype], nuc900_audio->buffersize[stype]);
> + nuc900_audio->dma_addr[substream->stream],
> + nuc900_audio->buffersize[substream->stream]);
>
> val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
>
> switch (runtime->channels) {
> case 1:
> - if (PCM_TX == stype) {
> + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
> val &= ~(PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL);
> val |= PLAY_RIGHT_CHNNEL;
> } else {
> @@ -188,7 +190,7 @@ static int nuc900_dma_prepare(struct snd_pcm_substream
> *substream)
> AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);
> break;
> case 2:
> - if (PCM_TX == stype)
> + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> val |= (PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL);
> else
> val |= (RECORD_LEFT_CHNNEL | RECORD_RIGHT_CHNNEL);
next parent reply other threads:[~2010-06-01 9:05 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4C0474F3.3050503@gmail.com>
2010-06-01 9:04 ` Liam Girdwood [this message]
2010-06-01 10:20 ` [PATCH 1/3] ALSA/NUC900: Fix some codes according to Liam for nuc900 alsa driver 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=1275383097.3060.7.camel@odin \
--to=lrg@slimlogic.co.uk \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=mcuos.com@gmail.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.