diff options
Diffstat (limited to 'sound/soc/s3c24xx/s3c24xx-pcm.c')
-rw-r--r-- | sound/soc/s3c24xx/s3c24xx-pcm.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.c b/sound/soc/s3c24xx/s3c24xx-pcm.c index 49580fb481d..7806ae61461 100644 --- a/sound/soc/s3c24xx/s3c24xx-pcm.c +++ b/sound/soc/s3c24xx/s3c24xx-pcm.c @@ -20,6 +20,7 @@ #include <linux/module.h> #include <linux/init.h> +#include <linux/io.h> #include <linux/platform_device.h> #include <linux/slab.h> #include <linux/dma-mapping.h> @@ -30,7 +31,6 @@ #include <sound/soc.h> #include <asm/dma.h> -#include <asm/io.h> #include <asm/hardware.h> #include <asm/arch/dma.h> #include <asm/arch/audio.h> @@ -93,7 +93,7 @@ static void s3c24xx_pcm_enqueue(struct snd_pcm_substream *substream) while (prtd->dma_loaded < prtd->dma_limit) { unsigned long len = prtd->dma_period; - DBG("dma_loaded: %d\n",prtd->dma_loaded); + DBG("dma_loaded: %d\n", prtd->dma_loaded); if ((pos + len) > prtd->dma_end) { len = prtd->dma_end - pos; @@ -101,7 +101,7 @@ static void s3c24xx_pcm_enqueue(struct snd_pcm_substream *substream) __func__, len); } - ret = s3c2410_dma_enqueue(prtd->params->channel, + ret = s3c2410_dma_enqueue(prtd->params->channel, substream, pos, len); if (ret == 0) { @@ -129,7 +129,7 @@ static void s3c24xx_audio_buffdone(struct s3c2410_dma_chan *channel, return; prtd = substream->runtime->private_data; - + if (substream) snd_pcm_period_elapsed(substream); @@ -150,7 +150,7 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream, struct snd_soc_pcm_runtime *rtd = substream->private_data; struct s3c24xx_pcm_dma_params *dma = rtd->dai->cpu_dai->dma_data; unsigned long totbytes = params_buffer_bytes(params); - int ret=0; + int ret = 0; DBG("Entered %s\n", __func__); @@ -171,7 +171,7 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream, ret = s3c2410_dma_request(prtd->params->channel, prtd->params->client, NULL); - if (ret) { + if (ret < 0) { DBG(KERN_ERR "failed to get dma channel\n"); return ret; } @@ -223,7 +223,7 @@ static int s3c24xx_pcm_prepare(struct snd_pcm_substream *substream) /* return if this is a bufferless transfer e.g. * codec <--> BT codec or GSM modem -- lg FIXME */ if (!prtd->params) - return 0; + return 0; /* channel needs configuring for mem=>device, increment memory addr, * sync to pclk, half-word transfers to the IIS-FIFO. */ @@ -293,8 +293,8 @@ static int s3c24xx_pcm_trigger(struct snd_pcm_substream *substream, int cmd) return ret; } -static snd_pcm_uframes_t - s3c24xx_pcm_pointer(struct snd_pcm_substream *substream) +static snd_pcm_uframes_t +s3c24xx_pcm_pointer(struct snd_pcm_substream *substream) { struct snd_pcm_runtime *runtime = substream->runtime; struct s3c24xx_runtime_data *prtd = runtime->private_data; @@ -313,7 +313,7 @@ static snd_pcm_uframes_t spin_unlock(&prtd->lock); - DBG("Pointer %x %x\n",src,dst); + DBG("Pointer %x %x\n", src, dst); /* we seem to be getting the odd error from the pcm library due * to out-of-bounds pointers. this is maybe due to the dma engine @@ -355,11 +355,11 @@ static int s3c24xx_pcm_close(struct snd_pcm_substream *substream) DBG("Entered %s\n", __func__); - if (prtd) - kfree(prtd); - else + if (!prtd) DBG("s3c24xx_pcm_close called with prtd == NULL\n"); + kfree(prtd); + return 0; } @@ -371,9 +371,9 @@ static int s3c24xx_pcm_mmap(struct snd_pcm_substream *substream, DBG("Entered %s\n", __func__); return dma_mmap_writecombine(substream->pcm->card->dev, vma, - runtime->dma_area, - runtime->dma_addr, - runtime->dma_bytes); + runtime->dma_area, + runtime->dma_addr, + runtime->dma_bytes); } static struct snd_pcm_ops s3c24xx_pcm_ops = { @@ -432,7 +432,7 @@ static void s3c24xx_pcm_free_dma_buffers(struct snd_pcm *pcm) static u64 s3c24xx_pcm_dmamask = DMA_32BIT_MASK; -static int s3c24xx_pcm_new(struct snd_card *card, +static int s3c24xx_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai, struct snd_pcm *pcm) { int ret = 0; @@ -467,7 +467,6 @@ struct snd_soc_platform s3c24xx_soc_platform = { .pcm_new = s3c24xx_pcm_new, .pcm_free = s3c24xx_pcm_free_dma_buffers, }; - EXPORT_SYMBOL_GPL(s3c24xx_soc_platform); MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>"); |