Commit fa41181f authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown

ASoC: nuc900: No need to track the dma buffer in the driver state struct

The DMA buffer and address can be accessed through the snd_pcm_runtime.
There is no need to manually track them in the driver's state struct.
Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent c517d838
...@@ -100,10 +100,7 @@ ...@@ -100,10 +100,7 @@
struct nuc900_audio { struct nuc900_audio {
void __iomem *mmio; void __iomem *mmio;
spinlock_t lock; spinlock_t lock;
dma_addr_t dma_addr[2];
unsigned long buffersize[2];
unsigned long irq_num; unsigned long irq_num;
struct snd_pcm_substream *substream;
struct resource *res; struct resource *res;
struct clk *clk; struct clk *clk;
struct device *dev; struct device *dev;
......
...@@ -42,29 +42,10 @@ static const struct snd_pcm_hardware nuc900_pcm_hardware = { ...@@ -42,29 +42,10 @@ static const struct snd_pcm_hardware nuc900_pcm_hardware = {
static int nuc900_dma_hw_params(struct snd_pcm_substream *substream, static int nuc900_dma_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params) struct snd_pcm_hw_params *params)
{ {
struct snd_pcm_runtime *runtime = substream->runtime; return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params));
struct nuc900_audio *nuc900_audio = runtime->private_data;
unsigned long flags;
int ret = 0;
ret = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params));
if (ret < 0)
return ret;
spin_lock_irqsave(&nuc900_audio->lock, flags);
nuc900_audio->substream = substream;
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);
return ret;
} }
static void nuc900_update_dma_register(struct snd_pcm_substream *substream, static void nuc900_update_dma_register(struct snd_pcm_substream *substream)
dma_addr_t dma_addr, size_t count)
{ {
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
struct nuc900_audio *nuc900_audio = runtime->private_data; struct nuc900_audio *nuc900_audio = runtime->private_data;
...@@ -78,8 +59,8 @@ static void nuc900_update_dma_register(struct snd_pcm_substream *substream, ...@@ -78,8 +59,8 @@ static void nuc900_update_dma_register(struct snd_pcm_substream *substream,
mmio_len = nuc900_audio->mmio + ACTL_RDST_LENGTH; mmio_len = nuc900_audio->mmio + ACTL_RDST_LENGTH;
} }
AUDIO_WRITE(mmio_addr, dma_addr); AUDIO_WRITE(mmio_addr, runtime->dma_addr);
AUDIO_WRITE(mmio_len, count); AUDIO_WRITE(mmio_len, runtime->dma_bytes);
} }
static void nuc900_dma_start(struct snd_pcm_substream *substream) static void nuc900_dma_start(struct snd_pcm_substream *substream)
...@@ -170,9 +151,7 @@ static int nuc900_dma_prepare(struct snd_pcm_substream *substream) ...@@ -170,9 +151,7 @@ static int nuc900_dma_prepare(struct snd_pcm_substream *substream)
spin_lock_irqsave(&nuc900_audio->lock, flags); spin_lock_irqsave(&nuc900_audio->lock, flags);
nuc900_update_dma_register(substream, nuc900_update_dma_register(substream);
nuc900_audio->dma_addr[substream->stream],
nuc900_audio->buffersize[substream->stream]);
val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET); val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment