[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