[alsa-devel] [PATCH 1/3] ALSA/NUC900: Fix some codes according to Liam for nuc900 alsa driver.

Liam Girdwood lrg at slimlogic.co.uk
Tue Jun 1 11:04:57 CEST 2010


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 at 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);




More information about the Alsa-devel mailing list