[PATCH v2] omap: dma: Clear status registers on enable/disable irq.
Matcovschi, Oleg
oleg.matcovschi at ti.com
Tue Jun 5 14:28:24 EDT 2012
>>* Oleg Matcovschi <oleg.matcovschi at ti.com> [120515 14:40]:
>> Use omap_disable_channel_irq() function instead of directly accessing CICR.
>> The omap_disable_chanel_irq() function clears pending interrupts and
>> disables interrupt on channel.
>> Functions omap2_enable_irq_lch()/omap2_disable_irq_lch() clear
>> interrupt status register.
>Looking at this again, I'll apply this into cleanup-dma instead of fixes.
>If it fixes something that I can't see, please reply with a description what it fixes and I'll move it into fixes.
>Regards,
>Tony
Sure, cleanup-dma sounds ok.
Code covers:
- my test case for 4460:
I could reproduce 2 interrupts @ omap-pcm driver after omap_stop_dma function call.
1st irq CSR: 0x42 (half & drop)
2nd irq CSR: 0x02 (drop)
Only 1 interrupt occurs after applying this patch(overnight test results)
Test case was created to reproduce problem reported by customer(without clear description):
contiguous playback of 0.5 wav file (frequent start/stop audio transitions)
contiguous data transfers on 15 self-linked dma channels.
- omap_request_dma could cause spurious interrupt
(enable irq, clear irq status instead of clear irq status, enable irq)
thanks,
Oleg
More information about the linux-arm-kernel
mailing list