Commit 44a85386 authored by Mika Laitio's avatar Mika Laitio Committed by Tony Lindgren

[PATCH] Change all omap15xx devices to use similar DMA handling than h6300 uses

Change all omap15xx devices to use similar DMA handling than h6300 uses.
Thanks for the James Selvam for verifying this with omap 1510 innovator.
http://linux.omap.com/pipermail/linux-omap-open-source/2006-May/007256.htmlSigned-off-by: default avatarMika Laitio <lamikr@cc.jyu.fi>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 0d79ef71
...@@ -190,9 +190,7 @@ static void audio_process_dma(struct audio_stream *s) ...@@ -190,9 +190,7 @@ static void audio_process_dma(struct audio_stream *s)
unsigned int dma_size; unsigned int dma_size;
unsigned int offset; unsigned int offset;
int ret; int ret;
#ifdef CONFIG_MACH_OMAP_H6300
unsigned long flags; unsigned long flags;
#endif
ADEBUG(); ADEBUG();
runtime = substream->runtime; runtime = substream->runtime;
...@@ -200,14 +198,20 @@ static void audio_process_dma(struct audio_stream *s) ...@@ -200,14 +198,20 @@ static void audio_process_dma(struct audio_stream *s)
dma_size = frames_to_bytes(runtime, runtime->period_size); dma_size = frames_to_bytes(runtime, runtime->period_size);
offset = dma_size * s->period; offset = dma_size * s->period;
snd_assert(dma_size <= DMA_BUF_SIZE,); snd_assert(dma_size <= DMA_BUF_SIZE,);
#ifdef CONFIG_MACH_OMAP_H6300 /*
spin_lock_irqsave(&s->dma_lock, flags); * On omap1510 based devices, we need to call the stop_dma
omap_stop_alsa_sound_dma(s); * before calling the start_dma or we will not receive the
spin_unlock_irqrestore(&s->dma_lock, flags); * irq from DMA after the first transfered/played buffer.
#endif * (invocation of callback_omap_alsa_sound_dma() method).
*/
if (cpu_is_omap15xx()) {
spin_lock_irqsave(&s->dma_lock, flags);
omap_stop_alsa_sound_dma(s);
spin_unlock_irqrestore(&s->dma_lock, flags);
}
ret = omap_start_alsa_sound_dma(s, ret = omap_start_alsa_sound_dma(s,
(dma_addr_t) runtime->dma_area + (dma_addr_t)runtime->dma_area + offset,
offset, dma_size); dma_size);
if (ret) { if (ret) {
printk(KERN_ERR printk(KERN_ERR
"audio_process_dma: cannot queue DMA buffer (%i)\n", "audio_process_dma: cannot queue DMA buffer (%i)\n",
......
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